Как я могу контролировать состояние адаптера GPS с помощью Android SDK? - PullRequest
3 голосов
/ 17 февраля 2011

Мне нужно, чтобы монитор моего приложения был включен или отключен. Меня не волнует фактическая функциональность GPS на монете или нет - мне нужен статус адаптера GPS.

Я могу сделать это вручную, позвонив по номеру:

String providers = Settings.Secure.getString(getContentResolver(),
        Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

Если указан «gps», значит, он активен, в противном случае - нет. Но я не могу найти никакой документации о получении уведомлений, когда GPS включен или отключен пользователем. Я пытался использовать addGpsStatusListener в LocationManager, но он уведомляет только о получении фактического GPS-исправления (например, если используется приложение «Карты»).

Есть идеи?

1 Ответ

6 голосов
/ 17 февраля 2011

LocationContentObserver Неважно, я нашел ответ;

getContentResolver().registerContentObserver(
    Settings.Secure.getUriFor(Settings.System.LOCATION_PROVIDERS_ALLOWED), 
            false, 
            new LocationContentObserver ( new Handler())
    );

class LocationContentObserver extends ContentObserver {
  public LocationContentObserver( Handler h ) {
    super( h );
  }

  public void onChange(boolean selfChange) {
      SendNotification(false);
  }
}
...