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")
            };
        }

Ответы (0 шт):