안드로이드 학습(Kotlin)

FusedLocationProviderClient란?

리저브콜드브루 2025. 2. 6. 17:31
728x90
반응형

Google Play 서비스의 위치 API를 사용해 사용자의 현재 위치를 가져올 수 있도록 도와주는 위치 서비스 객체

GPS, Wi-Fi, 셀룰러 네트워크 등 다양한 수단을 조합해서 가장 효율적인 방식으로 사용자의 위치를 자동으로 결정

 

특징

  • 배터리 절약
    • 기존 방식인 LocationManger를 사용하는 방식보다 전력 소모가 적음
    • Google이 자동으로 최적의 위치 제공 방식을 선택해준다.
  • 정확한 위치 제공
    • GPS, Wi-Fi, 셀룰러 네트워크 등 여러 기술을 자동으로 조합하여 가장 정확한 위치 정보를 가져옴
  • 비동기 방식
    • 백그라운드에서도 위치 요청 가능
    • 콜백(LocationCallback)을 통해 위치 업데이트를 받는다
    • onLocationResult()에서 위치 데이터를 처리

 

사용 방법

객체 생성

private val fusedLocationClient = LocationServices.getFusedLocationProviderClient(activity)

 

 

최근 위치 가져오기 (getLastLocation())

fusedLocationClient.lastLocation
    .addOnSuccessListener { location ->
        if (location != null) {
            Log.d("Location", "위도: ${location.latitude}, 경도: ${location.longitude}")
        } else {
            Log.e("Location", "최근 위치 정보를 가져올 수 없음")
        }
    }

최근 위치 정보가 캐시되어 있으면 빠르게 반환

앱이 실행된 후 처음으로 위치를 요청한 경우 null이 반환될 가능성이 높음

 

실시간 위치 업데이트 (requestLocationUpdates())

val locationRequest = LocationRequest.Builder(0L) // 즉시 한 번만 업데이트
    .setMaxUpdates(1) // 위치를 한 번만 가져옴
    .build()

val locationCallback = object : LocationCallback() {
    override fun onLocationResult(locationResult: LocationResult) {
        locationResult.lastLocation?.let {
            Log.d("Location", "위도: ${it.latitude}, 경도: ${it.longitude}")
        }
    }
}

fusedLocationClient.requestLocationUpdates(
    locationRequest,
    locationCallback,
    Looper.getMainLooper()
)

 

  • LocationRequest.Builder(0L) → 즉시 한 번만 위치 요청
  • setMaxUpdates(1) → 한 번만 요청 후 자동 종료
  • requestLocationUpdates() → 위치 정보를 요청하고 콜백을 통해 받음

FusedLocationProviderClient와 LocationManager의 차이

  FusedLocationProviderClient LocationManager
출시 버전 Android 2.3 (API Level 9) Android 1.0 (API Level 1)
기반 Google Play 서비스 Android 시스템 API
정확도 자동 최적화 (GPS + 네트워크) 직접 GPS/네트워크 선택해야 함
배터리 효율 최적화됨 GPS 사용 시 배터리 소모 많음
비동기 지원 requestLocationUpdates() 사용 직접 쓰레드 관리 필요
백그라운드 지원 Google Play 서비스 활용 수동으로 서비스 관리 필요
권장 여부 Google 공식 권장 방식 권장되지 않음 (Legacy)

 

 

 

LocationManager를 사용할 경우

  • Google Play 서비스가 없는 기기에서 위치 정보를 가져와야 할 때
    • 중국 내 스마트폰 중 일부는 Google Play 서비스가 없음
  • Android 1.0 ~ 2.2 (API Level 1~8)를 지원하는 구형 앱을 개발할 때
    • 최신 Android 앱에서는 거의 사용되지 않음
  • 고급 GPS 기능이 필요한 경우
    • GPS의 원시 데이터(raw data)를 직접 다뤄야 할 때
728x90
반응형

'안드로이드 학습(Kotlin)' 카테고리의 다른 글

18. Android의 주요 데이터 저장소 방식  (2) 2025.02.07
Geocoder란?  (2) 2025.02.06
LocationRequest란?  (0) 2025.02.06
17. Android Animation (Property Animation)  (1) 2025.02.04
16. Glide로 이미지 처리하기  (1) 2025.02.04