728x90
반응형
// 위치 정보를 받아옴
var currentLocation: String = "현재 위치"
var mGeocoder: Geocoder = Geocoder(applicationContext, Locale.KOREAN)
var mResultList: List<Address>? = null
val locationProviderClient: FusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(this)
try {
locationProviderClient.lastLocation.addOnSuccessListener {
latitude = it.latitude
longitude = it.longitude
println("1위도: $latitude, 경도: $longitude")
try {
mResultList = mGeocoder.getFromLocation(
latitude!!, longitude!!, 1
)
println("위치 정보 받아오기 성공")
} catch (e: Exception) {
e.printStackTrace()
Toast.makeText(applicationContext, "좌표를 변환하지 못했습니다.", Toast.LENGTH_LONG).show()
}
if (mResultList != null) {
Log.d("CheckCurrentLocation", mResultList!![0].getAddressLine(0))
currentLocation = mResultList!![0].getAddressLine(0)
currentLocation = currentLocation.substring(9)
activity_main_toolbar_title.text = currentLocation
}
}
} catch (e: Exception) {
Toast.makeText(applicationContext, "위치 정보를 받아오지 못했습니다.", Toast.LENGTH_LONG).show()
}
위 코드를 실행하기 전에 매니패스트에 ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION
권한을 추가해줘야 된다. 앱 시작 시 권한을 받는 로직도 넣는게 좋다
위 함수는 위도, 경도 값을 받은 후 현재 주소로 변환해준다.
1. Geocoder에서 변환 해주는 역할을 한다.
2. locationProviderClient.lastLocation에서 위도, 경도를 받아온다.
3. 콜백 형식으로 받아온 후 성공하면 mResultList<Address>에 위도, 경도값을 저장한다.(Address는 location에 사전 정의 된 타입이다.)
4. 성공하면 currentLocation에 위치 정보를 저장하고 실패하면 실패 메세지를 띄운다.
728x90
반응형
'App > 개발' 카테고리의 다른 글
안드로이드 AlertDialog 띄우기 (0) | 2020.08.24 |
---|---|
코틀린 팝업메뉴 코드 저장 (0) | 2020.08.24 |
안드로이드 공유링크 만들기 (0) | 2020.08.14 |
안드로이드 bottomnavigationView 가운데 파인 커스텀 뷰 소스 (0) | 2020.08.08 |
코틀린 커스텀 뷰 캘린더 레이아웃, 클래스 코드 (0) | 2020.07.16 |