Я пишу сейчас простую программу погоды.Я использую Api Weather и должен отправить местоположение телефона, чтобы получить данные о погоде.Как вы понимаете, мне не нужно точное местоположение, поэтому нет необходимости в GPS, нет необходимости в ACCESS_FINE_LOCATION.Что мне нужно - это получить мое местоположение от NETWORK_PROVIDER .Но тут начинается проблема.
Сначала я попытался использовать LocationManager и LocationListener .Я включил свой WiFi и местоположение в настройках телефона.Важно то, что я хочу, чтобы мое приложение работало в помещении, чтобы не нужно было ходить, чтобы изменить координаты, и LocationManager ответит.Сначала я проверяю последнее известное местоположение.
Location location = mLocationManager.getLastKnownLocation(LOCATION_PROVIDER);
На самом деле, часто это не работает.Так что я получаю нулевое значение в качестве местоположения.Особенно, когда вы отключаете местоположение в настройках смартфона и через несколько минут включаете его.
ОК, у вас нет lastKnownLocation, тогда давайте его нам.Я использую requestLocationUpdates () , чтобы получить текущее местоположение:
mLocationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, mLocationListener);
Теперь магия начинается ... Иногда (один раз в несколько часов ИЛИ несколько раз в минуту) requestLocationUpdates () работает.Но большую часть времени это не реагирует.После многих поисков в интернете я нашел Google Api, в частности класс FusedLocationProviderClient .Но опять та же история случается.Но теперь я мог понять, что requestLocationUpdates () не вызывается.
mFusedLocationClient.requestLocationUpdates(mLocationRequest, mLocationCallback, null);
Я решил поставить кнопку, чтобы посмотреть, отправляет ли она какие-либо requestLocationUpdates , но когда я нажимаю кнопку, у меня появляется ошибка.
587-673/? E/ANDR-PERF-MPCTL: Invalid profile no. 0, total profiles 0 only
Подводя итог, мое приложение просто не отправляет requestLocationUpdates .И мне нужно только приблизительное местоположение моего устройства, чтобы получить название города, поэтому нет необходимости в GPS.Пожалуйста, помогите мне решить эту проблему.Спасибо.