Gps не всегда возвращает местоположение, даже если оно доступно через FusedLocationProvider api или LocationManager LocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
. Особенно, если вы находитесь в помещении, у него меньше шансов получить местоположение от Gps в зависимости от вашего устройства. Gps необходимо зафиксировать, чтобы вернуть местоположение.
Вы можете написать тестовое приложение, в котором есть LocationManager с Gps, Wifi и GpsStatusListener, чтобы проверить подсчет спутников, спутников в исправить и уровень сигнала спутникового сигнала и сравнить их с FusedLocationProvider в одно и то же время и добавить местоположения, предоставленные для отображения в качестве маркеры. Вы также можете найти Location.getExtras() для FLP, который может содержать информацию о спутниках. Даже если LocationManager Gps доступен, а количество спутников - 2, я не могу получить местоположение из Gps.
Hello World в изображении должно быть местоположением Gps, но оно не возвращается, так как оно еще не исправлено. Тестирование может не решить вашу проблему, но вы можете сравнить ситуации, в которых вы попадаете, или вы не можете, например, может потребоваться использовать 3 спутника для получения местоположения от Gps или минимального уровня сигнала. Также может потребоваться слишком много времени для блокировки Gps, а статус на GpsStatusListener
установлен на GpsStatus.GPS_EVENT_FIRST_FIX
, когда он заблокирован. Потребовалось около 5 минут, чтобы у меня Gps зафиксировался и вернул место. Я также написал еще один тест с картами, и у меня была такая же проблема, пока Gps не зафиксирован как в LocationManager, так и в FLP.
У вас есть прекрасное разрешение на размещение? –
Да, как мелкие, так и грубые. – Zishan
Вы запрашивали обновления местоположения или периодически проводили опрос метода getLastLocation()? –