私はAndroid2.3.7を使用しており、ユーザーがGPSのオン/オフを切り替えたときに呼び出されるBroadcastReceiverを作成しようとしています(つまり、オプションの[GPS衛星を使用]をタップします)。
私がこれまでに行ったことはこれです:
1)次のbroadcastReceiverを作成しました。
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をサブスクライブしたくありません...