Плавленое местоположение GPS не обновляется до открытия Google Maps

Я использую fused location provider в моем приложении, которое установлено в PRIORITY_HIGH_ACCURACY с интервалом в 60 секунд. Обычно это работает, но иногда местоположение не обновляется в течение 5 до 10 минут само по себе, и когда я открываю Google Maps, кажется, что он запускает обновление местоположения.

кто-нибудь еще здесь, кто мог столкнуться с этой проблемой или знает о возможных причинах такого поведения? Есть ли способ это исправить?

2 ответов


Gps не всегда возвращает местоположение, даже если оно доступно через api fusedlocationprovider или LocationManager LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER). Особенно, если вы находитесь в помещении, это менее вероятно, чтобы получить местоположение от Gps в зависимости от GPS чипа вашего устройства. Gps должен быть исправлен, чтобы вернуть местоположение.

вы можете написать тестовое приложение, которое имеет LocationManager с Gps, Wifi и GpsStatusListener для проверки количества спутников, спутников в исправлении и силы спутникового сигнала и сравнить его с FusedLocationProvider в то же время и добавить локации на карте в виде маркеров. Вы также можете искать расположение.getExtras() для FLP, который может содержать информацию о спутниках. Даже если LocationManager Gps доступен и количество спутников 2, я не могу получить местоположение от Gps.

Hello World в изображении должно быть местоположение Gps, но оно не возвращается, так как оно еще не исправлено. LocationManager Gps Status test Тестирование может не решить вашу проблему, но вы можете сравнить ситуации вы получаете местоположение или вы не можете, например, это может потребоваться использовать 3 спутника, чтобы получить местоположение от Gps или минимальной силы сигнала. Он также может занять слишком много времени для GPS, и Положения о GpsStatusListener установлено значение GpsStatus.GPS_EVENT_FIRST_FIX, когда она закрыта. Мне потребовалось около 5 минут для Gps, чтобы исправить и вернуть местоположение. Я также написал еще один тест с картами, и у меня была та же проблема, пока Gps не будет исправлен на LocationManager и FLP.


мои выводы из следующего ссылке поставщик слитого местоположения будет поддерживать фоновое местоположение, только если к нему подключен хотя бы один клиент. Как только первый клиент подключится, он сразу же попытается получить местоположение. Если ваша активность является первым клиентом для подключения, и вы вызываете getLastLocation() сразу onConnected(), этого может быть недостаточно для первого местоположения. Это приведет в расположение null.

чтобы решить эту проблему, вы нужно подождать (неопределенно), пока поставщик не получит местоположение, а затем позвонить getLastLocation(), что невозможно знать.

другой (лучший) вариант-реализовать com.google.android.gms.location.LocationListener интерфейс для получения периодических обновлений местоположения (и выключите его после получения первого обновления).