스마트폰에는 여러가지 센서들이 내장되어 있고, 그 중 GPS를 활용한 위치정보는 광범위하게 사용되는 정보이다.
안드로이드 디바이스에서 위치정보를 가져오기 위해서는 LocationManager나 FusedLocationProvider를 사용한다.
LocationManager

- Periodic updates of the device's geographical location.
- or to be notified when the device enters the proximity of a given geographical location.
LocationManager는 Android Framework에서 디바이스의 위치정보를 획득하기 위해 지원하는 API 입니다.
일정한 간격으로 디바이스의 위치정보를 업데이트 받거나, 설정한 지역으로 디바이스가 진입했을 때 알림을 받을 수 있는 기능을 구현할 때 사용한다.
API 호출 전에 위치정보를 가져오는 소스로써
- GPS_PROVIDER
- NETWORK_PROVIDER
두 가지 중에서 선택할 수 있다.
FunsedLocationProvider

가장 먼저 강조된 제목으로 표현한 Batter-efficient location API가 눈에 들어온다.
그리고 intelligently combines different signals to provide the location information을 확인할 수 있다.
구글 Play-services-location
라이브러리
Android - Get the last know location

공식문서에서는 위치정보를 획득하기 위해서 FusedLocationProvider
를 사용할 것을 권장하고 있다. GPS를 계산하는 작업은 배터리 소모가 큰 작업인데, 이 API를 사용하면 위치정보 사용목적에 따라서 BatterEfficientMode
, HighAccuracyMode
등 다양한 옵션을 사용해서 GPS 계산을 명령할 수 있다. 추가로 GPS, Wi-Fi 등 여러가지 위치정보를 계산하는데 필요한 소스를 자세하게 설정할 수도 있다.
또, FusedLocationProvider
를 이용해서 콜백으로 받은 위치정보 값들을 순서대로 저장하고, 이 값을 계산하여 이동방향이나 속도 등을 계산하는데 이용할 수 있다.
그리고 Android OS 안에 포함된 LocationManager를 사용하는 것보다 구글에서 독립적으로 유지보수하여 관리하는 play-services-location
API를 사용하면 다양한 디바이스 그리고 OS 버전에 따라 더 최적화된 위치정보 계산을 지원한다. 그리고 GoogleMaps, Google+ 등 다양한 구글 서비스와의 연계 작업도 빠르게 업데이트 지원된다.
정리

- Android Framewokr에 내장된 LocationManager보다 FusedLocation를 사용하는 것을 권장한다.
- FusedLocation은 GPS, NETWORK 등 복합적인 소스를 사용해서 위치정보를 계산한다.
- 구글에서 최적화된 계산을 지원하므로, 더 높은 정확도와 더 낮은 배터리 사용률 등 다양한 설정을 지원한다.
- 또 다른 play-services인
GeoFencing
,GoogleMap
등 다른 Location 관련 API와 연계사용이 편리하다.
안드로이드에서 Location 정보를 핸들링하기 위해서는 LocationManager보다 FusedLocationProvider를 사용하도록하자.
추가
FusedLocation을 사용해야 되는 이유를 깔끔하게 정리해놓은 페이지를 찾았다.

'Android' 카테고리의 다른 글
DPI, DP, PX, SP 단위의 정확한 정의 (0) | 2021.12.24 |
---|---|
서버의 응답에서 원하는 부분만 필터링하기 (0) | 2021.12.13 |
클린 아키텍처와 데이터 모델들 (0) | 2021.12.11 |
SearchView에서 Soft Keyboard 보여주기 (0) | 2021.12.03 |
Android Permission 요청하기 (0) | 2021.12.02 |