마지막으로 알려진 위치 가져오기
2021. 5. 4. 18:02ㆍAndroid/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