2013-05-31 4 views
24

Вы можете определить, доступны ли какие-либо поставщики с помощью LocationManager, но можно ли это сделать с помощью сервиса google play services api?службы определения местоположения Android включены с поддержкой игровых сервисов api

Когда ничего не включено, на самом деле «доступ к моему местоположению» отключен, все вызовы API (connect(), requestLocationUpdates()) преуспевают, но вы никогда не получите onLocationChanged().

Кажется глупым, чтобы использовать как LocationManager, так и LocationClient.

Я думаю, что мне нужно каким-то образом, чтобы знать, что onLocationChanged (0 будет никогда дозвонился.

ответ

26

Я прочесывал документы, а также не нашел способ использовать LocationClient, чтобы обнаружить, если место сервисы включены. onConnected, onDisconnected и onConnectionFailed, похоже, не связаны с включенными службами местоположения.

В настоящее время я выполняю запросы местоположения с использованием LocationClient, но используя старый метод locationManager.isProviderEnabled(String provider), чтобы определить, Службы включены. Это оптимально для меня, так как, даже если LocationClient действительно предоставил способ, он не делает d между GPS и сетью, и я действительно хотел бы иметь возможность запросить, чтобы пользователь включил GPS.

if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
    //GPS Provider disabled 
    return false; 
} 
+2

спасибо - может быть, кто-то из Google увидит это и исправит его – user1248322

+0

Я нахожу это очень странным! – Bear

+5

'if (lm.isProviderEnabled (LocationManager.GPS_PROVIDER) || lm.isProviderEnabled (LocationManager.NETWORK_PROVIDER)) {}' Я думаю, что это самый полный подход. – Diolor

12

Существует в настоящее время надежный способ обнаружения, если обновления местоположения доступны, начиная с Google Play Services 7.3.0:

Осуществить и зарегистрировать LocationCallback и переопределить onLocationAvailability() или позвоните LocationServices.FusedLocationApi.getLocationAvailability(), чтобы получить статус доступности. Если это неверно, то вы знаете, что обновления местоположения не будут доставлены, если что-то не изменится в конфигурации устройства.

Этот метод на самом деле довольно умен: например, он может определить, что обновления местоположения не будут доставлены на устройстве WiFi, если WiFi отключен или устройство находится в режиме самолёта, даже если поставщик сетевого определения местоположения всегда включен.

+0

Doc говорит: возвращает данные о местоположении. Когда isLocationAvailable() возвращает true, то местоположение, возвращаемое getLastLocation (GoogleApiClient), будет достаточно актуальным в пределах подсказок, заданных активными LocationRequests. Понимаю, что показывается, есть ли какие-то данные о местоположении, а не если службы определения местоположения включены или нет. – lujop

4

Google Play Services 7.0 introduced a Settins Api где вы можете запросить настройки местоположения, в которых вы нуждаетесь, а затем запросить, если они включены, или попросить пользователя включить их.

Смежные вопросы