私は最近、近接アラートアプリに取り組み始めました。これは基本的に、ユーザーの GPS 位置に基づいて着信音プロファイルを変更します (最初はバイブレーションまたは着信音のみ)。コーディング部分を完成させました。"enter" と "exit" で近接アラートが発生し、登録された BroadcastReceiver のコードが実行されています。この時点までは問題ありません。実際の問題は次のとおりです(私のサンプルコード行を使用)
2 つの Intent アクションに対して 1 つの BroadcastReceiver を登録しました。これらのインテント アクションは、次のように宣言されます。public static final String INTENT_ACTION2 = "org.droidmania.action.PROXIMITYALERT2 " ;
PendingIntent の部分は、
プライベートボイドsetProximityAlerts(文字列intentAction){インテントインテント=新しいインテント(); インテント.setAction(インテントアクション); // 呼び出しが HomeActivity からの場合、intentAction は INTENT_ACTION1 になり、それ以外の場合は INTENT_ACTION2 になります。
PendingIntent pIntent = PendingIntent.getBroascast(コンテキスト、0、インテント、PendingIntent.FLAG_CANCEL_CURRENT);
locationManager.addProximityAlert(緯度、経度、vRadius、-1、pIntent); }
次に、BroadcastReceiver コード、
クラス ProxyReceiver は BroadcastReceiver を拡張
します。
if(isEnter){
**//if user is in Home location**
if(intent.getAction().equals(INTENT_ACTION1)){
give the notification that user is in home area
}
**//if user is in Office location**
if(intent.getAction().equals(INTENT_ACTION2)){
give the notification that user is in office area
}
} else{
//ユーザーが自宅の外にいる
場合 if(intent.getAction().equals(INTENT_ACTION1)){
ユーザーが自宅の外にいることを通知する }
//ユーザーがオフィスの外にいる
場合 if(intent. getAction().equals(INTENT_ACTION2)){ ユーザーが不在であることを通知します } } }
これは、モバイルデバイスでテストした方法です。
自宅で、半径 10m の GPS 位置を設定しました。「ユーザーがホームエリアにいます」と通知されました
その半径の外にいると、「ユーザーがホームエリアを出ました」というメッセージが表示されました。
オフィスにいるときは、GPS の位置を半径 5m に設定しています。そのため、「ユーザーがオフィスエリアにいます」と通知されました。しかし、ここでは実際の問題に直面しています.2分または1分のギャップごとに「ホームエリアに入りました」と「オフィスエリアに入りました」と「ホームエリアから出ました」と「オフィスエリアから出ました」の両方のメッセージが表示されます. なぜそれが起こっているのかわかりません。 (オフィスの場所のGPSを設定した後も、動き回っていません..同じ場所にとどまっているだけです...オフィスのデスクの座席に座っています...)
ここで何かを見逃しているか、余分なものを与えていますか? ホーム エリアを離れてから長い時間が経過しているのに、なぜ自宅付近でアラートが発生するのですか?
みんな私を助けてください(私が費やした時間はすでに2週間です:-( )。あなたの助けに感謝します。
ありがとう。