|
@@ -1,91 +0,0 @@
|
|
|
-import android.Manifest
|
|
|
|
|
-import android.annotation.SuppressLint
|
|
|
|
|
-import android.content.pm.PackageManager
|
|
|
|
|
-import android.os.Bundle
|
|
|
|
|
-import android.os.Looper
|
|
|
|
|
-import android.view.View
|
|
|
|
|
-import android.widget.Toast
|
|
|
|
|
-import androidx.appcompat.app.AppCompatActivity
|
|
|
|
|
-import androidx.core.app.ActivityCompat
|
|
|
|
|
-import androidx.core.content.ContextCompat
|
|
|
|
|
-import com.google.android.gms.location.*
|
|
|
|
|
-
|
|
|
|
|
-/*
|
|
|
|
|
-
|
|
|
|
|
-В манифест добавить разрешеня на геолокацию
|
|
|
|
|
-
|
|
|
|
|
-<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
|
|
|
|
-<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
|
|
|
-*/
|
|
|
|
|
-class MainActivity : AppCompatActivity() {
|
|
|
|
|
- private lateinit var fusedLocationClient: FusedLocationProviderClient
|
|
|
|
|
- private lateinit var mLocationRequest: LocationRequest
|
|
|
|
|
-
|
|
|
|
|
- override fun onCreate(savedInstanceState: Bundle?) {
|
|
|
|
|
- super.onCreate(savedInstanceState)
|
|
|
|
|
- setContentView(R.layout.activity_main)
|
|
|
|
|
-
|
|
|
|
|
- fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
|
|
|
|
|
- checkPermission()
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private fun checkPermission(){
|
|
|
|
|
- if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
|
|
|
|
|
- ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
|
|
|
|
|
- {
|
|
|
|
|
- // нет разрешений
|
|
|
|
|
- val permissions = arrayOf(
|
|
|
|
|
- Manifest.permission.ACCESS_FINE_LOCATION,
|
|
|
|
|
- Manifest.permission.ACCESS_COARSE_LOCATION
|
|
|
|
|
- )
|
|
|
|
|
- ActivityCompat.requestPermissions(this, permissions, 0)
|
|
|
|
|
- } else {
|
|
|
|
|
- mLocationRequest = LocationRequest()
|
|
|
|
|
- mLocationRequest.interval = 10000
|
|
|
|
|
- mLocationRequest.fastestInterval = 1000
|
|
|
|
|
- mLocationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
|
|
|
|
|
-
|
|
|
|
|
- fusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.myLooper())
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<String>,
|
|
|
|
|
- grantResults: IntArray) {
|
|
|
|
|
- when (requestCode) {
|
|
|
|
|
- 1 -> {
|
|
|
|
|
- if (!grantResults.isEmpty() && grantResults[0] ==
|
|
|
|
|
- PackageManager.PERMISSION_GRANTED)
|
|
|
|
|
- {
|
|
|
|
|
- if ((ContextCompat.checkSelfPermission(this@MainActivity, Manifest.permission.ACCESS_FINE_LOCATION) === PackageManager.PERMISSION_GRANTED))
|
|
|
|
|
- {
|
|
|
|
|
- // получили разрешение - снова запускаем запрос разрешений, чтобы попасть в цикл опроса геолокации
|
|
|
|
|
- checkPermission()
|
|
|
|
|
- }
|
|
|
|
|
- } else {
|
|
|
|
|
- Toast.makeText(this, "Permission Denied", Toast.LENGTH_SHORT).show()
|
|
|
|
|
- }
|
|
|
|
|
- return
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- private var mLocationCallback: LocationCallback = object : LocationCallback() {
|
|
|
|
|
- override fun onLocationResult(locationResult: LocationResult) {
|
|
|
|
|
- if (!locationResult.locations.isEmpty()) {
|
|
|
|
|
- val locIndex = locationResult.locations.size - 1
|
|
|
|
|
- val lon = locationResult.locations[locIndex].longitude
|
|
|
|
|
- val lat = locationResult.locations[locIndex].latitude
|
|
|
|
|
-
|
|
|
|
|
- onGetCoordinates(lat, lon)
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- fun onGetCoordinates(lat: Double, lon: Double){
|
|
|
|
|
- // завершаем цикл опроса
|
|
|
|
|
- fusedLocationClient.removeLocationUpdates(mLocationCallback)
|
|
|
|
|
-
|
|
|
|
|
- // тут делаем что хотели с координатами
|
|
|
|
|
- Toast.makeText(this, "${lat}, ${lon}", Toast.LENGTH_LONG).show()
|
|
|
|
|
- }
|
|
|
|
|
-}
|
|
|