我在 Android 2.3.7 上,我正在尝试编写一个 BroadcastReceiver,当用户打开/关闭 GPS 时会调用它(即:通过点击选项中的“使用 GPS 卫星”。
到目前为止我所做的是:
1) 创建了以下广播接收器:
public class GPSStatusBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
Toast.makeText(arg0, "Broadcast received!", Toast.LENGTH_SHORT).show();
}
}
2)将此添加到标签内的android清单中:
<receiver android:name=".GPSStatusBroadcastReceiver">
<intent-filter>
<action android:name="android.location.PROVIDERS_CHANGED" />
</intent-filter>
</receiver>
现在的问题是它似乎不可靠。当我打开/关闭 GPS 时,onReceive() 方法有时只运行(我会说 1 次超时 3),其他时候它不会被调用。
我想知道是否有可靠的方法来检测 GPS 何时关闭/打开。
如果没有,至少在没有应用程序使用 GPS 时(即:当 gps 图标从状态栏中消失时,表明没有人在主动定位时)收到通知会很好。
编辑:澄清:我不想在我的应用程序运行时这样做。我只是在打开/关闭 gps 时启动我的应用程序,执行它的操作然后终止,我不想订阅 LocationsUpdates ...