Android Get Current Location - Kotlin
// location library
implementation 'com.google.android.gms:play-services-location:18.0.0'
class Activity : NavigationActivity<ActivityPdwBinding>(R.layout.activity){
private lateinit var fusedLocationClient: FusedLocationProviderClient
lateinit var addresses: List<Address>
lateinit var currentCity : String
lateinit var currentCap : String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// location
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
getCurrentLocation()
}
override fun onRequestPermissionsResult(requestCode: Int,
permissions: Array<String>,
grantResults: IntArray) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == PdwConstants.PERMISSION_LOCATION) {
// obtain the current location
getCurrentLocation()
}
}
@SuppressLint("MissingPermission")
private fun getCurrentLocation() {
val locationRequest = LocationRequest.create()
val geocoder = Geocoder(this)
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
locationRequest.setInterval(20*1000)
val locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult) {
if (locationResult == null) {
return
}
for (location in locationResult.locations) {
if (location != null) {
addresses = geocoder.getFromLocation(location.latitude, location.longitude, 1)
currentCity = addresses.get(0).locality
currentCap = addresses.get(0).postalCode
Log.d("Last Known Location", "${currentCity} - ${currentCap}" )
}
}
}
}
fusedLocationClient.requestLocationUpdates(locationRequest, locationCallback, mainLooper)
}
}
Comments
Post a Comment