마지막으로 알려진 위치 가져오기

2021. 5. 4. 18:02Android/Location

Step 1.

 

gradle에 구글 위치 서비스 추가

    implementation 'com.google.android.gms:play-services-location:18.0.0'

 

Step 2.

 

위치 서비스 클라이언트 인스턴스 생성 후 마지막으로 알려진 위치 가져오기

 

getLastLocation() 메서드는 지리적 위치의 위도 및 경도 좌표가 있는 Location 객체를 가져오는 데 사용할 수 있는 Task를 반환합니다. 

private lateinit var fusedLocationClient: FusedLocationProviderClient

override fun onCreate(savedInstanceState: Bundle?) {
    
    fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
    
    fusedLocationClient.lastLocation
            .addOnCompleteListener { taskLocation ->
                if (taskLocation.isSuccessful && taskLocation.result != null) {
                    location = taskLocation.result
                    
                    Dlog.i("location?.latitude!! = ${location?.latitude!!}")
                    Dlog.i("location?.longitude!! = ${location?.longitude!!}")                    
                } else {

                }
            }.addOnSuccessListener { location : Location? ->
            	// Got last known location. In some rare situations this can be null.
        	}
}

 

다음 상황에서는 위치 객체가 null일 수 있습니다.

  • 기기 설정에서 위치가 사용 중지되어 있습니다. 위치를 사용 중지하면 캐시도 지워지므로 이전에 마지막 위치를 가져온 경우에도 결과는 null일 수 있습니다.
  • 기기에서 위치를 기록한 적이 없습니다. 예를 들면 새 기기이거나 기본 설정으로 복원된 기기일 수 있습니다.
  • 기기의 Google Play 서비스가 다시 시작되었으며 서비스가 다시 시작된 후 위치를 요청한 활성 통합 위치 정보 제공자 클라이언트가 없습니다. 

(일부 디바이스에서 위치 기능을 off 후 on 하니 null를 가져 왔다.)

 

* 참고 : 

Null이 발생하지 않도록 새 클라이언트를 만들고 직접 위치 업데이트를 요청할 수 있습니다.

자세한 내용은 위치 업데이트 받기를 참조하세요.

 

developer.android.com/training/location/retrieve-current?hl=ko

 

마지막으로 알려진 위치 가져오기  |  Android 개발자  |  Android Developers

Google Play 서비스 Location API를 사용하여 앱에서 마지막으로 알려진 사용자 기기의 위치를 요청할 수 있습니다. 대부분의 경우 사용자의 현재 위치에 관심이 있으며 사용자의 현재 위치는 일반적

developer.android.com