권한 기능을 통해 권한을 얻었는데, 위치까지 가져와야 기능을 완료 할 수 있어서, 위치 문서에 대한 정리 및 구현을 해보려고 한다.
위치 인식 앱 구현하기
모바일에서 유니크한 기능 중 하나가 위치 기능. 기기들 어디서나 들고 다니기에 위치를 앱에 제공해 다른 경험을 얻을 수 있음.
구글 플레이에서 제공하는 위치 API를 사용하면 위치추적, 잘못된 길 감지, 지오펜스 등을 편리하게 구현 가능
위치요청
사용자의 프라이버시 보호를 위해, 위치 권한을 요청 해야함.
위치는 기능의 필요에 따라 여러 권한을 필요로 할 수 있음.
위치 접근의 종류
권한은 다음 특징들의 조합
카테고리 : 포그라운드 위치, 백그라운드 위치
정확도 : 높은 정확도, 대략 적인 정확도
포그라운드 위치
- 각 턴 방향을 제시해주는 내비게이션 앱
- 위치를 공유하는 매시징 앱
시스템은 다음 특징에 따라 포그라운드 위치 인지 판단
- 액티비티가 보일 때
- 홈버튼을 누르는 등으로 백그라운드로 진입 하더라도 서비스 유지를 원해,앱이 포그라운드 서비스 실행할 때.
안드로이드 10 (API level 29) 이상은 포그라운드 서비스를 명시해야 함.
<!-- Recommended for Android 9 (API level 28) and lower. -->
<!-- Required for Android 10 (API level 29) and higher. -->
<service
android:name="MyNavigationService"
android:foregroundServiceType="location" ... >
<!-- Any inner elements would go here. -->
</service>
다음 두 권한을 선택 할 수 있음.
<manifest ... >
<!-- 항상 필요 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 높은 정확도를 원한다면 선택 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
</manifest>
안드로이드 12부터는 getLocationPowerSaverMode()을 지원. 베터리 절약
백그라운드 위치
백그라운드에서 지속적으로 위치가 필요할 경우.
- 가족 위치 공유 앱
- 집에 오면 불이 켜지는 등, IOT 앱
안드로이드 10 이상부터
ACCESS_BACKGROUND_LOCATION 을 명시 해야 함.
<manifest ... >
<!-- Required only when requesting background location access on
Android 10 (API level 29) and higher. -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
구글 플레이에 앱을 올릴 때 규정에 맞아야 함 주의
정확성
대략적 위치
LocationManagerService or FusedLocationProvider 통해 3km 오차 범위 정확성 제공 ACCESS_COARSE_LOCATION 사용
(ACCESS_FINE_LOCATION 아님.)
정확한 위치
LocationManagerService or FusedLocationProvider 통해 주로 50미터에서 가능하다면 몇 미터에 해당한는 오차범위 제공
ACCESS_FINE_LOCATION을 필요로 한다.
백그라운드 위치요청 상기시키기(리마인드)
권한을 얻은 후, 최초 백그라운드 위치 요청을 할 경우 사용자에게 알림을 보냄.
앱에서 사용하는 SDK가 위치 권한을 필요로 하는지 확인하기
사용중인 sdk가 위치 권한을 사용하는지 확인해야 한다.
'Android > 위치' 카테고리의 다른 글
| 3. 백그라운드 위치 (0) | 2025.05.28 |
|---|---|
| 2. 런타임 권한 요청 (0) | 2025.05.27 |