如何使用Android SDK监控GPS适配器的状态?

时间:2011-02-17 08:23:38

标签: android gps location

我需要让我的应用程序监控GPS适配器是否已启用或已禁用。我不关心在monemt上运行的实际GPS功能 - 我需要GPS适配器的状态。

我可以通过调用:

手动完成
String providers = Settings.Secure.getString(getContentResolver(),
        Settings.Secure.LOCATION_PROVIDERS_ALLOWED);

如果列出了“gps”,那么它是活动的,否则它不是。但是,当用户启用或禁用GPS时,我找不到任何有关获得通知的文档。我确实尝试在LocationManager中使用addGpsStatusListener,但这只会在获取实际GPS修复时通知(例如,如果正在使用地图应用程序)。

有什么想法吗?

1 个答案:

答案 0 :(得分:6)

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);
  }
}