본문 바로가기

Android

LocationManager와 FusedLocationProvider의 차이점

스마트폰에는 여러가지 센서들이 내장되어 있고, 그 중 GPS를 활용한 위치정보는 광범위하게 사용되는 정보이다.

안드로이드 디바이스에서 위치정보를 가져오기 위해서는 LocationManager나 FusedLocationProvider를 사용한다.

LocationManager

Android - 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

Fused Location Provider API

가장 먼저 강조된 제목으로 표현한 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 - Location#battery

  • Android Framewokr에 내장된 LocationManager보다 FusedLocation를 사용하는 것을 권장한다.
  • FusedLocation은 GPS, NETWORK 등 복합적인 소스를 사용해서 위치정보를 계산한다.
  • 구글에서 최적화된 계산을 지원하므로, 더 높은 정확도더 낮은 배터리 사용률 등 다양한 설정을 지원한다.
  • 또 다른 play-services인 GeoFencing, GoogleMap 등 다른 Location 관련 API와 연계사용이 편리하다.

안드로이드에서 Location 정보를 핸들링하기 위해서는 LocationManager보다 FusedLocationProvider를 사용하도록하자.

 

추가

FusedLocation을 사용해야 되는 이유를 깔끔하게 정리해놓은 페이지를 찾았다.