Подробнее о местоположении пользователя можно узнать по здесь .Чтобы получить текущее местоположение, вы должны запросить разрешение пользователя и определить его в файле AndroidManifest.xml
:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
В вашем методе Activity's onCreate()
укажите следующее:
val permissionState = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
if (permissionState != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), REQUEST_PERMISSIONS_REQUEST_CODE)
}
и переопределитеФункция onRequestPermissionsResult
выглядит следующим образом:
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when (requestCode) {
REQUEST_PERMISSIONS_REQUEST_CODE -> {
if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
getLocation()
}
}
}
Итак, это была основная часть получения местоположения пользователя.Для простоты здесь приведен полный код:
class MainActivity : AppCompatActivity() {
companion object {
private const val REQUEST_PERMISSIONS_REQUEST_CODE = 1
}
private lateinit var txtView: TextView
private lateinit var fusedLocationClient: FusedLocationProviderClient
private var myLongitude: Double? = null
private var myLatitude: Double? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
txtView = findViewById(R.id.txtView)
txtView.setOnClickListener {
viewMap()
}
fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
val permissionState = ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
if (permissionState != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), REQUEST_PERMISSIONS_REQUEST_CODE)
}
if (myLatitude == null || myLatitude == null)
getLocation()
}
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when (requestCode) {
REQUEST_PERMISSIONS_REQUEST_CODE -> {
if (grantResults.size > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED)
getLocation()
}
}
}
private fun viewMap() {
Log.i("LOG", "$myLongitude, $myLatitude")
val gmmIntentUri = Uri.parse("google.streetview:cbll=$myLatitude,$myLongitude")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent)
}
@SuppressLint("MissingPermission")
private fun getLocation() {
fusedLocationClient.lastLocation.addOnSuccessListener { location : Location? ->
location?.let {
myLongitude = it.longitude
myLatitude = it.latitude
}
}
}
}
Для получения более подробной информации о местонахождении пользователя просто перейдите по ссылке выше, существует множество учебных материалов.