Android, проблемы получение координат GPS
Я разрабатываю приложение для Android на языке Kotlin, которое получает прогноз погоды по GPS координатам. Получение разрешения использования GPS мне реализовать удалось, но дальше возникают проблемы. Когда я запускаю приложение в Android Studio все проходит более-менее гладео. Я получаю широту и долготу и делаю API запрос, который успешно возвращает мне необходимые данные. Однако, координаты которые я получаю соответствуют Mountain View US, основному штабу гугл. Если же я запускаю приложение на своем телефоне, то функция 'onLocationChanged' вообще не запускается и никакого запроса не происходит (я проверил запуск путем манипуляций с TextView, которые при запуске на телефоне не происходят). Скорее всего проблема либо в реализации 'onLocationChanged' либо в '.requestLocationUpdates'.Хотелось бы понять, что я делаю неправильно и исправить код.
class MainActivity : AppCompatActivity(), LocationListener {
private lateinit var locationManager: LocationManager
private lateinit var tvGpsLocation: TextView
private val locationPermissionCode = 2
private val client = OkHttpClient()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "WeatherCopy"
val button: Button = findViewById(R.id.getLocation)
button.setOnClickListener {
getLocation()
}
}
private fun getLocation() {
locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
if ((ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), locationPermissionCode)
}
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 5f, this)
}
override fun onLocationChanged(location: Location) {
// При запуске на эмуляторе эта функция получает координаты офиса гугл, при запуске на телефоне,
// она вообще не запускается
runOnUiThread {
run("https://api.openweathermap.org/data/2.5/weather?lat=" + location.latitude + "&lon=" + location.longitude + "&appid=bd7b33aa6c3a100771b2d734d56ad2aa")
};
}