android studio язык Котлин справка по LocationServices
kotlin
import android.Manifest
import android.content.pm.PackageManager
import android.location.Location
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import com.google.android.gms.location.*
class MainActivity : AppCompatActivity() {
private lateinit var fusedLocationClient: FusedLocationProviderClient
private lateinit var locationRequest: LocationRequest
private lateinit var locationCallback: LocationCallback
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
locationRequest = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setInterval(10000) // Интервал обновления местоположения в миллисекундах
.setFastestInterval(5000) // Минимальный интервал обновления местоположения
locationCallback = object : LocationCallback() {
override fun onLocationResult(locationResult: LocationResult?) {
locationResult?.lastLocation?.let { updateLocation(it) }
}
}
}
override fun onStart() {
super.onStart()
if (ActivityCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
REQUEST_LOCATION_PERMISSION
)
} else {
startLocationUpdates()
}
}
override fun onStop() {
super.onStop()
stopLocationUpdates()
}
private fun startLocationUpdates() {
fusedLocationClient.requestLocationUpdates(
locationRequest,
locationCallback,
null
)
}
private fun stopLocationUpdates() {
fusedLocationClient.removeLocationUpdates(locationCallback)
}
private fun updateLocation(location: Location) {
// Обновление UI с новыми данными о местоположении
Toast.makeText(
this,
"Широта: ${location.latitude}, Долгота: ${location.longitude}",
Toast.LENGTH_SHORT
).show()
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_LOCATION_PERMISSION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startLocationUpdates()
} else {
Toast.makeText(
this,
"Нет разрешения на доступ к местоположению",
Toast.LENGTH_SHORT
).show()
}
}
}
companion object {
private const val REQUEST_LOCATION_PERMISSION = 1
}
}
При запуске приложения будет запрошено разрешение на доступ к местоположению. Если разрешение будет предоставлено, то начнется запрос местоположения с указанными параметрами интервала обновления. Полученные данные о местоположении будут обрабатываться в методе `updateLocation`, где вы можете обновить пользовательский интерфейс согласно своим потребностям.
Как видно из приведенного примера, использование LocationServices в Android Studio с языком программирования Kotlin является относительно простым и позволяет получать актуальные данные о местоположении. Важно учитывать, что для корректной работы запроса местоположения необходимо иметь разрешение на доступ к местоположению от пользователя.Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет