9월, 2020의 게시물 표시

Android This IP, site or mobile application is not authorized to use this API key 오류

이미지
사용 버전: Android Studio 4.0.1 사용 언어: Kotlin 1.4.10 ​ 안드로이드 This IP, site or mobile application is not authorized to use this API key 오류를 알아봅시다. ​ 저 같은 경우는 Google Cloud Platform에서 사용자 인증 정보를 추가하면서 위와 같은 문제가 발생했습니다. 보안을 위해서 위와 같이 애플리케이션 제한사항을 걸자, GeoCoding 쪽이 거부를 당했습니다. This IP, site or mobile application is not authorized to use this API key. ​ 이유를 아래 사이트에서 찾을 수 있었습니다. https://developers.google.com/maps/faq 그 이유를 찾아보니 다음과 같았습니다. Geocoding API의 경우 IP address restriction의 영향을 받기 때문이었습니다. 그래서 아무리 요청을 해도 IP 설정이 안 되어 있기 때문에 거부된 것입니다. ​ ​ ​ ​ 추가적으로 유용한 정보는 1 초에 제한되는 횟수입니다. QPS는 초당 Query입니다. 50은 1 초에 50 번 Query를 날린다는 뜻입니다. 끝. 카테고리: Android

Android Google Maps my location

이미지
사용 버전: Android Studio 4.0.1 사용 언어: Kotlin 1.4.10 ​ 안드로이드 Google Maps my location을 나타내 보겠습니다. ​ ​ 내 위치를 나타내기 위해서는 사용자에게 위치 권한을 받아야 합니다. ​ Google Maps를 사용합니다. https://shwoghk14.blogspot.com/2020/09/android-google-maps.html Activity Result APIs를 사용해서 위치 권한을 받겠습니다. https://shwoghk14.blogspot.com/2020/09/android-activity-result-apis.html AndroidManifest.xml에 위치 권한을 넣습니다. 권한은 둘 중에 하나를 선택합니다. Map이 있는 Fragment로 와서 myMap을 정의합니다. locationPermission을 정의합니다. myMap에 googleMap을 대입합니다. callback에 Manifest.permission.ACCESS_FINE_LOCATION을 적습니다. 실행합니다. 거부 모습. 허용 모습. 파란 원이 현재 위치입니다. ​ ​ ​ 끝. 카

Android Activity Result APIs

이미지
사용 버전: Android Studio 4.0.1 사용 언어: Kotlin 1.4.10 ​ 안드로이드 Activity Result APIs를 알아보겠습니다. androidx의 fragment 라이브러리에서 1.3.0-alpha04부터 startActivityForResult()와 onActivityResult(), requestPermissions(), onRequestPermissionsResult()가 fragment에서 deprecated 되었습니다. 위의 함수들 대신에 사용할 수 있는 것이 Activity Result APIs입니다. 물론 지금은 Alpha 버전이라서 신경 쓸 필요는 없습니다. 일부러 Alpha 버전으로 업데이트를 하지 않는 이상 말이죠. 하지만, 언젠가는 정식 버전으로 Release 될 것이고 사용하게 될 것입니다. 우리는 미리 한 번 사용해보겠습니다. Permission 요청을 받는 걸로 해보겠습니다. ​ ​ 앱 용 build.gradle에 아래를 추가합니다. Sync Now를 누릅니다. ​ ​ ​ AndroidManifest.xml에 CAMERA 권한을 입력합니다. 이제 Fragment로 갑니다. onCreateView 위에 변수를 정의합니다. 지금은 ActivityResultContracts.RequestPermission을 사용했는데요. 다른 것들도 사용 가능합니다. https://developer.android.com/reference/androidx/activity/result

Android Google Maps 사용

이미지
 사용 버전: Android Studio 4.0.1 사용 언어: Kotlin 1.4.10 ​ 안드로이드 Google Maps 사용을 해보겠습니다. ​ Google Maps는 Google에서 제공하는 지도입니다. ​ https://cloud.google.com/maps-platform/ 가격은 무료와 유료가 있습니다. 무료의 경우에도 한 달에 200 달러를 지원해 주니 나름 잘 사용한다면 추가 요금이 발생하지 않을 수 있습니다. 그리고 모바일의 경우 무료로 주는 기능도 있으니 좋습니다. 로그인을 합니다. Maps SDK for Android를 찾아서 사용을 누릅니다. 사용자 인증 정보 만들기를 누릅니다. API Key를 누릅니다. AIza로 시작되는 키가 할당됩니다. 옆에 버튼을 눌러서 잘 복사해 둡니다. 지도를 Activity와 Fragment에 만드는 방법이 있는데, 이번에는 Fragment에 만드는 방법을 진행하겠습니다. Google Maps Fragment를 만들어줍니다. 우 클릭 - New - Fragment - Google Maps Fragment 만듭니다. 그러면 이렇게 새로운 파일이 생성됩니다.

Android NumberPicker 사용

이미지
사용 버전: Android Studio 4.0.1 사용 언어: Kotlin 1.4.10 ​ 안드로이드 NumberPicker 사용을 해봅시다. ​ NumberPicker는 사용자가 정해진 범위의 숫자를 선택할 때 제공되면 편리하게 선택할 수 있게 도와줍니다. binding을 사용합니다. https://shwoghk14.blogspot.com/2020/06/android-data-binding.html 자, 오늘은 Snooze Intervals를 누르면 NumberPicker가 나오게 만들어 봅시다. res - layout에 NumberPicker를 위한 layout을 추가합니다. 저는 interval_number_picker.xml로 만들었습니다. 아래처럼 NumberPicker를 추가합니다. 이제, fragment.kt 파일로 갑니다. Dialog를 부를 함수를 만듭니다. 저는 callNumberPickerDialog로 만들었습니다. 위의 함수에 NumberPicker 최솟값, 최댓값을 넣어줍니다. 그리고 Positive, Negetive 버튼을 추가합니다. onCreateView로 돌아와서 버튼에 함수를 추가합니다. 실행해봅시다. 짜잔. ​ ​ ​ 끝. 카테고리: Android [계수기] 앱 광고 외국: Hand Counter https://play.google.com/store/apps/details?id=starlight.jaehwa.handcounter 계수기 앱. 하나씩 개수를 셀 때 사용해보세요. 센

Android Plurals Strings 사용

이미지
 사용 버전: Android Studio 4.0.1 사용 언어: Kotlin 1.4.10 ​ 안드로이드 Plurals Strings 사용을 해보겠습니다. ​ Plurals Strings는 복수와 단수에 적합한 언어를 사용할 때 필요합니다. 예를 들면 읽지 않은 12 개 메시지들이 있습니다 와 읽지 않은 1 개 메시지가 있습니다. 사실 한글에서는 별로 사용이 필요한 경우가 많지 않지만(12 개의 메시지도 자연스럽기에), 영어에서는 is와 are 등 동사부터가 달라지니까 필요합니다. ​ 역시나 한글은 관련 없다고 하네요. res - values - strings로 갑니다. 오늘 사용할 문구입니다. 위의 string을 plurals로 변경해 줍니다. item에는 one, other을 사용합니다. 아래는 quantity에 들어갈 수 있는 값입니다. 그다음 해당 String을 사용하는 곳으로 갑니다. getString 대산에 getQuantityString을 사용합니다. 첫 번째에는 Plurals id를 넣고, 두 번째에는 plurals가 구분할 수 있는 숫자를, 세 번째에는 String의 %d에 들어갈 숫자를 넣습니다. 실행해 봅시다. ​ 1 개 일 때. 2 개 일 때. 끝. 카테고리: Android