권한 기능을 통해 권한을 얻었는데, 위치까지 가져와야 기능을 완료 할 수 있어서, 위치 문서에 대한 정리 및 구현을 해보려고 한다.

 

위치 인식 앱 구현하기

모바일에서 유니크한 기능 중 하나가 위치 기능. 기기들 어디서나 들고 다니기에 위치를 앱에 제공해 다른 경험을 얻을 수 있음.
구글 플레이에서 제공하는 위치 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

+ Recent posts