개인 정보 정책
최종 수정 : 2020 년 5 월 1 일
이 개인 정보 보호 정책은 Google Play 스토어 및 기타 타사 앱 스토어에서 다운로드 한 애플리케이션을 사용할 때 정보를 수집하는 방법을 설명합니다. 정책은 또한 당사가 귀하로부터 수집 한 정보를 사용하고 공개하는 방법을 설명합니다.
앱을 설치하고 사용함으로써 귀하는이 개인 정보 보호 정책에 동의하고 처리에 명시적이고 사전에 동의합니다. 동의하지 않으면 앱을 설치하고 사용하지 마십시오.
1. 비 개인 데이터
비 개인 데이터는 귀하를 개인적으로 식별하지 않는 정보입니다. 당사는 귀하의 장치 모델, 운영 체제 버전, 국가 코드 및 기타 속성과 같은 개인 정보가 아닌 데이터를 수집하여 앱을 관리하고 귀하와 통신 할 수 있습니다.
2. 광고 게재 기술
당사는 비 개인 데이터를 제 3 자에게 공개하거나 제 3자가 자체 내장 기술을 통해 비 개인 데이터를 수집하도록 허용 할 수 있습니다. 귀하에게 광고를 제공하기 위해 제 3 자 광고 회사는 개인 식별 정보가 아닌 고유 한 쿠키, 익명 식별자 또는 유사한 기술을 게시하거나 식별 할 수 있습니다. 자세한 정보를 원하시면 다음 링크를 클릭하십시오.
AdMob-https://www.google.com/policies/privacy/
3. 위치 데이터
당사 날씨 앱은 기능적인 목적으로 위치 데이터를 요청할 수 있습니다. GPS, Wi-Fi 또는 IP 주소와 같은 기타 네트워크 기반 데이터와 같은 위치를 결정하기 위해 다양한 기술을 사용할 수 있습니다. 귀하의 동의없이 GPS 지리적 위치에 액세스 할 수 없습니다. 우리는 광고 네트워크 및 타사에 대한 귀하의 위치 데이터를 제공하지 않습니다.
4. 개인 정보
우리는 귀하에 대한 개인 정보를 수집하지 않습니다.
5. 타사 이용 약관
앱에 대한 액세스 및 사용에는 특정 타사 이용 약관 및 개인 정보 취급 방침이 적용될 수 있습니다. 귀하는 당사가 그러한 제 3 자 이용 약관 및 제 3자가 귀하의 개인 데이터를 사용하는 것에 대해 책임을지지 않음을 인정하고 동의합니다. 다음은 우리가 사용하는 일부 배포자의 개인 정보 보호 정책에 대한 링크입니다.
Google-http://www.google.com/intl/ko/policies/privacy/
6. 귀하의 권리와 옵션
Android 또는 iOS 기기의 개인 정보 보호 설정을 확인하고 "광고 추적 제한"(Apple iOS) 또는 "관심 기반 광고 거부"(Android)를 선택하여 모바일 애플리케이션에서 관심 기반 광고를 거부 할 수 있습니다. 또는 기기 설정을 변경하여 기기의 광고 식별자를 재설정 할 수 있습니다. 설정은 기기마다 다르지만 일반적으로 기기 설정의 "프라이버시"또는 "광고"아래에 광고 식별자 설정이 있습니다.
장치의 "설정"을 변경하여 장치에서 관련 정보를 수집하도록 제한 할 수 있습니다.
귀하는 또한 데이터를 수정하고, 데이터를 삭제하고, 당사의 데이터 사용 또는 공유 방법에 반대 할 권리가 있습니다. 예를 들어 모바일 장치 설정에서 GPS 위치 공유를 끄면 언제든지 동의를 철회 할 수 있습니다.
합리적인 기간 내에 모든 요청에 응답합니다.
7. 정보 보안
우리는 귀하의 정보의 기밀성을 보호하는 데 매우 우려하고 있습니다. 당사는 귀하의 개인 정보 및 비 개인 정보를 무단 액세스 및 사용으로부터 보호하기 위해 설계된 행정적, 물리적 및 전자적 조치를 사용합니다.
8. 어린이
우리는 어린이의 개인 정보 및 안전을 보호하기 위해 제품 및 서비스를 사용할 때 추가 예방 조치를 취하는 것이 중요하다는 것을 이해합니다. 우리는 어린이에 대한 개인 정보를 수집, 사용 또는 공개하지 않습니다. 18 세 미만인 경우 부모 또는 보호자와 함께 당사 웹 사이트를 사용할 수 있습니다.
9. 문의하는 방법
이 개인 정보 보호 정책에 대해 궁금한 점이 있으면 언제든지 문의하십시오. 메일 함은 개발자 페이지에서 찾을 수 있습니다.
=================================================================
Privacy Policy
Last modified: May 1, 2020
This Privacy Policy describes how we collect the information when you use our applications downloaded from Google Play Store and other third party app store. The Policy also explains how we use and disclose the information collected from you.
By installing and using the apps, you agree to this privacy policy and give an explicit and informed consent to the processing. If you do not agree, please do not install and use the apps.
1. Non-personal Data
Non-personal data is information that does not identify you personally. We may collect non-personal data such as your device model, operating system version, country code, and other attributes to manage your app and communicate with you.
2. Ad serving Technology
We may disclose non-personal data to third parties and/or allow third parties to collect non-personal data through their own embedded technology. In order to serve ads to you, third-party advertising companies may post or identify unique cookies, anonymous identifiers or similar technologies for non-personally identifiable information. If you would like more information, please click on the following link:
AdMob - https://www.google.com/policies/privacy/
3. Location Data
Our Weather app may request your Location data for a functional purpose. We may use various technologies to determine location, such as GPS, Wi-Fi or other network-based data such as IP address. Your GPS geo-location is not accessed without your consent. We do NOT provide your Location data for advertising networks and third parties.
4. Personal Data
We do not collect any personal information about you.
5. Third party terms and conditions
Please note that your access to and use of the apps may be subject to certain third-party terms and conditions and privacy policies. You recognize and agree that we is not liable for any such third-party terms and conditions and any third party’s use of your Personal data. Here are links to the privacy policies of a few of the distributors we use:
Google - http://www.google.com/intl/en/policies/privacy/
6.Your rights and options
You can opt-out of interest-based advertising on mobile applications by checking the privacy settings of your Android or iOS device and selecting "limit ad tracking" (Apple iOS) or "opt-out of interest based ads" (Android). or you can reset your device's ad identifier, by changing the settings of your device. Settings vary from device to device but you will usually find the ad identifier settings under "privacy" or "ads" in your device's settings.
You can restrict us to collect related information from your devices by changing the "Settings" in the devices.
You also have the right to correct your data, have your data deleted, object how we use or share your data. You can always withdraw your consent, for example by turning off GPS location sharing in your mobile device settings.
We will respond to all requests within a reasonable timeframe.
7.Information security
We are very concerned about protecting the confidentiality of your information. We use administrative, physical and electronic measures designed to protect your personal and non-personal information from unauthorized access and use.
8.Children
We understand the importance of taking extra precautions when using our products and services to protect children's privacy and safety. We do not collect, use or disclose personal information about children. If you are under the age of 18, you can use our website with your parent or guardian.
9.How to Contact Us
If you have any questions about this Privacy Policy, please feel free to contact us. The mailbox can be found on the developer page.
Friday, May 1, 2020
Saturday, April 25, 2020
android problem solve
Volley Apache Error
<applicationandroid:usesCleartextTraffic="true"
>
<uses-library
android:name="org.apache.http.legacy"
android:required="false" />
DexArchiveMergerException
android {
compileSdkVersion 26
defaultConfig {
applicationId "com.example.equal07.firebasetest"
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
Saturday, April 11, 2020
MariaDB(MySQL)
Install MariaDB
$ sudo apt-get update$ sudo apt-get upgrade
$ sudo apt-get install mysql-server mysql-client
Connection to DB(initial)
$ sudo mysql -u root #initially connection availablemysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------------------+
| User | plugin |
+------------------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+
The plugin for root should be changed to mysql_native_password for logging in.
mysql> update user set plugin='mysql_native_password' where user='root';
mysql> flush privileges;
mysql> select user, host, plugin from user;
ChangePassword
mysql> update user set password=password('1234') where user='root';
mysql> flush privileges;Connection to DB with Password
$ sudo mysql -u root -p
External connection
$ cd /etc/mysql/mariadb.conf.d
$ sudo nano 50-server.cnf
change bind-address = 127.0.0.1 to #bind-address = 127.0.0.1
$ sudo service mysql restart
Permission external connection
mysql> grant all privileges on *.* to 'root'@'%' identified by ' PASSWORD'
Etc. command
$ sudo service mysql start
$ sudo service mysql stop$ sudo service mysql restart
MySQL Command
mysql> show databases;mysql> create database DBNAME;
mysql> drop database DBNAME;
mysql> use DBNAME;
mysql> show tables;
mysql> create table TABLENAME(COL1 TYPE1, COL2 TYPE2, .... );
mysql> desc TABLENAME;
mysql> alter table TABLENAME add COL1 type1;
mysql> alter table TABLENAME drop COL1;
mysql> alter table TABLENAME change column OLDCOL NEWCOL TYPE;
mysql> alter table TABLENAME modify column COL NEWTYPE;
mysql> alter table TABLENAME rename NEWTABLENAME;
mysql> drop table TABLENAME;
mysql> insert into TABLENAME values('VALUE', 'VALUE',...);
mysql> insert into TABLENAME (COL1, COL2) values ('VALUE1','VALUE2');
mysql> select * from TABLENAME;
mysql> select * from TABLENAME where COND1 and/or COND2...;
mysql> select attr1, attr2,... from TABLENAME (where COND);
mysql> update TABLENAME set COL1='VALUE1',COL2='VALUE2',... where COND;
mysql> delete from TABLENAME where COL1='VALUE1' and/or COL2='VALUE2'....;
mysql> truncate TABLENAME;
mysql> insert into mysql.user(host,user,password,ssl_cipher,x509_issuer,x509_subject,authentication_string)
values ('localhost','ID',password('PASSWORD'),"","","","");
PERMISSION
mysql> insert into mysql.db values('HOSTNAME','DBNAME','ID','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y','y');
mysql> grant all privileges on DBNAME.TABLENAME(or *) to 'ID'@'HOSTNAME' identified by 'PASSWORD';
mysql> grant all privileges on *.* to 'ID'@'HOSTNAME' identified by 'PASSWORD';
mysql> flush privileges;
mysql> update user set password=password('NEWPASSWORD') where user='ID';
Sunday, March 22, 2020
utilities(copy and rename a project, delete a project, extract resources, add Android support libraries, create images in Asset Studio, compare custom objects, save the state of custom objects)
https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/appendix/appendix-utilities/appendix-utilities.html
Appendix: Utilities
Contents:
- How to copy and rename a project
- How to delete a project
- How to extract resources
- How to add Android support libraries
- How to create images in Asset Studio
- How to compare custom objects
- How to save the state of custom objects
This appendix is a collection of tasks you might need to do as you develop the apps in the Android Developer Fundamentals practical codelabs. The tasks are not specific to one practical.
How to copy and rename a project
For some of the practical codelabs, you need to make a copy of a project before you make new changes to the project. You might also want to copy a project to use some of its code in a new project. In either case, you can copy the existing project, then rename and refactor the new project's components to use the new project's name.
In the instructions below, substitute your actual project names for ExistingProject and NewProject.
1. Copy the project
- On your computer's file system (not in Android Studio), make a copy of the ExistingProject directory.
- Rename the copied directory to NewProject.
2. Rename and refactor the project components
The old name of the project, ExistingProject, still appears throughout the packages and files in the NewProject project.
Here's how to change the file and the package references in your app to the new name:
- Start Android Studio.
- Select Open an existing Android Studio project. If you already have a project open in Android Studio, select File > Open.
- Navigate to the NewProject directory, select it, and click OK.
- Select Build > Clean Project to remove the auto-generated files.
- Click the 1:Project side-tab and choose Android from the drop-down menu to see your files in the Project: Android view.
- Expand the app > java folder.
- Right-click com.example.android.existingproject and select Refactor > Rename. A Warning dialog is displayed. Select Rename package.
- The Rename dialog is displayed. Give a new name to your project.
- Select Search in comments and strings and Search for text occurrences. Click Refactor.
- The Find: Refactoring Preview pane appears, showing the code to be refactored. Click Do Refactor.
- Expand the res > values folder and double-click the strings.xml file.
- Change the
app_name
string value to"
New Project
"
.
3. Update the build.gradle and AndroidManifest.xml files
Each app you create must have a unique application ID, as defined in the app's
build.gradle
file. The steps above should have changed the build.gradle
file.
To make sure, check the file and sync the project with the Gradle file by following these steps:
- In Android Studio Project pane, expand Gradle Scripts and open build.gradle (Module: app).
- Under
defaultConfig
, check to make sure that the value of theapplicationID
key is "com.example.android.newproject". If the value isn't correct, change it manually. - Click Sync Now in the top-right corner of the Android Studio window.Tip: Another way to sync your Gradle files is to select Tools > Android > Sync Project with Gradle Files.
To make sure that the app name and package name are correct in the
AndroidManifest.xml
file, follow these steps:- Expand the app > manifests folder and double-click AndroidManifest.xml.
- Check that the
package
name is correct. It should be"com.example.android.newproject"
. If not, change it manually. - Find the statement below. If necessary, change the label to the string resource for the new app name:
android:label="@string/app_name"
How to delete a project
All the files for an Android project are contained in the project's directory on the computer's file system. To delete a project, delete its directory from your computer's file system.
Android Studio also keeps a list of recent projects that you've opened. You can remove a project from the list of recent projects, but doing so doesn't affect the actual project files. Doing this step is optional.
To remove a project from the list of recent projects in Android Studio, do one of the following:
- In the Android Studio welcome screen, place the cursor on the deleted project. Click the X that's displayed on it, or press the delete key.
- In the Android Studio welcome screen, click on the project name and select Remove From List.
- Select File > Open Recent > Manage Projects, select the project, and press the delete key or click the X that's displayed on it.
How to extract resources
Strings
For your app to be translatable into multiple languages, you must keep all your string resources in the
res/values/strings.xml
file.Creating string resources
You can manually add string resources to the
strings.xml
file using the following syntax:<string name="
string_name
">
String Value
</string>
To extract a string that you've hardcoded:
- Select the existing, hardcoded string in either XML or Java.
- Press
Alt+Enter
(Option+Enter
on a Mac), or click the orange light bulb to the right of the string. - Select Extract string resource.
- The Extract Resource window is displayed. Supply a name for Resource name: and click OK.
Accessing string resources
To reference a string resource:
- In XML, use the following syntax:
@string/
string_name
- In Java, use the following syntax:
getString(R.string.
string_name
)
Extracting dimensions
In general, keep dimensions in the
dimens.xml
file instead of hardcoding them. Keeping dimensions in dimens.xml
allows you to specify different dimensions using resource qualifiers.
You extract dimensions the same way you extract strings: press
Alt+Enter
(Option+Enter
on a Mac), or click the orange light bulb to the right of the dimension.Extracting styles
If you have several elements in your app that share the same attributes, you can create a style in the
style.xml
file for those attributes.
To extract existing attributes into a style, do the following:
- In the layout editor Design tab, right-click on the view in the Component Tree and select Refactor > Extract Style....
- The Extract Android Style window is displayed. Name the style and select attributes. If you want Android Studio to search the rest of the file for the selected attributes and apply the style to views where the attributes match, select Launch 'Use Style Where Possible' refactoring after the style is extracted.
- Click OK.
How to add Android support libraries
The Android Support Library provides backward-compatible versions of Android framework APIs, additional UI components, and a set of useful utilities.
For example, the
RecyclerView
class is located in the Android Support package. To use RecyclerView
, you must include the RecyclerView
support library dependency in your project's build.gradle
file. The process is the same for other Android Support Library components.
To add support libraries for 
RecyclerView
to your Gradle file, follow these steps and refer to the screenshot below:
- In Android Studio, in your project, make sure that you are in the Project pane (1 in the screenshot) and in the Android view (2).
- In the hierarchy of files, find the Gradle Scripts folder (3).
- Expand Gradle Scripts, if necessary, and open the build.gradle (Module: app) file (4).
- Toward the end of the build.gradle (Module: app) file, find the dependencies section. There is probably a line similar to the following one:
implementation 'com.android.support:appcompat-v7:27.1.1'
- Below that line, add the following code:
implementation 'com.android.support:recyclerview-v7:27.1.1'
- Change the version number of the new line to match the latest version or version number of the existing library.
- Make sure the version numbers of all the libraries are the same and match up with the
compileSdkVersion
number. If they don't, you will get an error. - Sync your Gradle files.
- Build and run your app.
The following example shows the dependencies section of the
build.gradle
file with support libraries added for RecyclerView
, if the version number were 27.1.1
.dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support:recyclerview-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
}
How to create images in Asset Studio
Use Image Asset Studio to create image assets for a launcher icon, a notification icon, or action bar icons:
- Open your app in Android Studio.
- Right-click the res folder of your project and select New > Image Asset from menu.The Asset Studio window opens. You can create a text icon, choose from available clip art, or add your own custom image.
Custom text icons
Default launcher icons called
ic_launcher
and ic_launcher_round
come with your project template. To add a custom text icon:- Open the Asset Studio, as described above.
- So that you won't overwrite the
ic_launcher
icon, change the Name of the icon toic_launcher_text
. - In the Asset Type row, select Text.
- Enter "Hello World!" into the Text field. Experiment with changing the font and the font color.
- Experiment with changing the background color in the Background Layer tab.
- Click Next. The Confirm Icon Path window shows how an icon with your specified text will be created for each resolution.
- Click Finish. The res/mipmap folder now contains the new icons.
To use the new icon:
- Open the
AndroidManifest.xml
file. Change theandroid:icon
line so that instead of referencingic_launcher_round
, it referencesic_launcher_text_round
:android:icon="@mipmap/ic_launcher_text_round"
- Run your app.
- After the app has launched, go to the home screen and open the list of apps.
- Scroll to find the new app icon listed along with the other installed apps.
Clip art icons
To add a clip art icon, follow the steps to add a custom text icon, with the following changes:
- Set the Name of the icon to
ic_launcher_clipart
. - Choose Clip Art as the Asset Type.
- In the Clip Art row, click the button that shows the current icon, the default Android.
- Select an icon from the Select Icon dialog.
Custom icons
To add a custom icon, follow the steps to add a custom text icon, with the following changes:
- Set the Name of the icon to
ic_launcher_image
. - Choose Image as the Asset Type.
- In the Path field, choose an image. The image can be one that you've added to your project, or an image on your computer.
How to compare custom objects
If your data model calls for objects to be sorted, you need to define how the objects can be compared to each other. To specify how to compare two objects and determine whether one object is bigger, smaller, or the same as the other object, use the
Comparable
interface.
The is the parameterized type you implemented
Comparable
interface requires you to implement a single method: compareTo(<T> another)
, where Comparable
with, and the type of object you are comparing to.
For example, to compare your
Foobar
instance to other Foobar
instances, you implement Comparable<Foobar>
. Your compareTo()
method takes Foobar
as a parameter.
The
compareTo()
method should do the following:- Return a negative integer if the object is less than the parameter.
- Return a positive integer if the object is greater than the parameter.
- Return zero if the objects are equal.
For example, to compare a list of books by publication date, you could use the following code:
@Override
public int compareTo(Book book) {
if (this.publication == book.publication) { return 0; }
else { return this.publication > book.publication ? 1 : -1;}
}
How to save the state of custom objects
In Android, you often create custom objects to represent your data model. To preserve the state of custom objects, you must be able to pass them into the
savedInstanceState
bundle, and therefore your custom class must implement the Parcelable
interface. The Parcelable
implementation allows for primitive types (int
, string
, byte
, etc.) to be saved in the savedInstanceState
callback.
To save the state of custom objects, follow these steps:
- Set up the data in your custom class.
- Add the
Parcelable
implementation to your class declaration. Remember that only the primitive data types will be saved. - In Android Studio, the class declaration is underlined in red, because you need to implement the interface methods. With your cursor on the underlined text, press
Alt+Enter
(Option+Enter
on a Mac) and select Implement methods. - Select
describeContents()
andwriteToParcel(Parcel dest, int flags)
. - Click OK. The class name is still underlined, indicating that the interface is not fully implemented yet.
- Select the class name and press
Alt+Enter
(Option+Enter
on a Mac) and select Add Parcelable implementation. Android Studio adds the required code. The variables for which you want to preserve the state (primitive types) are written to theParcel
in thewriteToParcel
method.
You can now save the state of these objects using the
savedInstanceState
bundles methods: putParcelable()
, putParcelableArray()
, putParcelableArrayList()
, and the respective "getter" methods.
Subscribe to:
Posts (Atom)