Услуги по проверке местоположения Android доступны с поддержкой игровых сервисов api
Вы можете определить, доступны ли какие-либо поставщики в LocationManager, но можно ли это сделать с помощью службы google play services api?
Когда ничего не включено, на самом деле "доступ к моему местоположению" отключен, все вызовы API (connect(), requestLocationUpdates()) преуспевают, но вы никогда не получите onLocationChanged().
Кажется глупым, чтобы использовать как LocationManager, так и LocationClient.
Я предполагаю, что мне нужен способ узнать, что onLocationChanged (0 никогда не будет вызван.
Ответы
Ответ 1
Я расчесывал документы, а также не нашел способ использовать LocationClient, чтобы определить, включены ли службы определения местоположения. onConnected, onDisconnected и onConnectionFailed, похоже, не связаны с включенными службами определения местоположения.
В настоящее время я выполняю запросы местоположения, используя LocationClient, но используя старый метод locationManager.isProviderEnabled(String provider)
, чтобы определить, включены ли службы определения местоположения. Это оптимально для меня, так как даже если LocationClient действительно предоставил способ, он не делает различий между GPS и сетью, и мне бы очень хотелось, чтобы я мог попросить пользователя включить GPS.
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//GPS Provider disabled
return false;
}
Ответ 2
Теперь существует надежный способ определить, доступны ли обновления местоположения, поскольку Google Play Services 7.3.0:
Внесите и зарегистрируйте LocationCallback
и переопределите onLocationAvailability()
или вызовите LocationServices.FusedLocationApi.getLocationAvailability()
, чтобы получить статус доступности. Если он ошибочен, то вы знаете, что обновления местоположения не будут доставлены, если что-то не изменится в конфигурации устройства.
Этот метод на самом деле довольно умный: например, он может определить, что обновления местоположения не будут доставлены на устройстве WiFi, если WiFi отключен или устройство находится в режиме самолёта, даже если поставщик сетевого местоположения всегда включен.
Ответ 3
Google Play Services 7.0 представил Settins Api, где вы можете запросить настройки местоположения, которые вам нужны, а затем запросить, если они включены, или попросить пользователя включить их.