アプリで近接アラートを使用したい。その方法はわかりました。アラートは期待どおりに機能しますが、問題があります。近接アラートを設定した直後に、GPS アイコンがステータス バーに表示され、デバイスを再起動するまでそこに留まります (または GPS をオフにすると、再び表示されます)。 GPSを再びオンにするとすぐに)。
アラートを削除してもアイコンはそこに残ります(アラートはもう発生しないため、削除は機能しているようです)。私の最初の考えは、場所が修正されたらすぐに削除されるだろうということでしたが、私は間違っていました.
これは、バニラ 4.1.2 Jelly Bean を実行している Nexus S (Google からフラッシュされたファクトリ イメージであり、ルート化されていない) と 4.1.2 エミュレーターで再現されます。
また、バッテリーには影響していないようで、デバイスは通常どおりスリープモードになります。
関連するコードは次のとおりです。
public void set(Context context) {
LocationManager locationManager=(LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
PendingIntent pendingIntent=PendingIntent.getBroadcast(context, 0, prepareIntent(context), PendingIntent.FLAG_CANCEL_CURRENT);
double lat=getLocation().getGeoPoint().getLatitudeE6()/1e6;
double lng=getLocation().getGeoPoint().getLongitudeE6()/1e6;
locationManager.addProximityAlert(lat, lng, radius, -1, pendingIntent);
}
public void unset(Context context) {
LocationManager locationManager=(LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
PendingIntent pendingIntent=PendingIntent.getBroadcast(context, 0, prepareIntent(context), PendingIntent.FLAG_CANCEL_CURRENT);
locationManager.removeProximityAlert(pendingIntent);
}
何が問題なのですか?これを修正するにはどうすればよいですか?
更新:ちょっとした実験 (近接アラームを設定して 50 分間のスリープ モード) を実行しましたが、結果はかなり混乱しています:
アイコンは表示されているようですが、GPS が常にオンになっているわけではありません。
誰かがこの状況を明確にすることができますか?