設定された近さ内で起動すると、Android GPSの近接警告

ガレージドアアプリにAndroidのプロキシミティアラートを使用したいと考えています。ボタンを押すと、近接警告が追加され、位置の追跡が開始されます。私はそれが近接に出入りするまで無限に追跡したい。それを入力するとガレージドアが開きます。ガレージドアを閉じるとガレージドアが閉じ、その後、近接警報が解除され、GPSがオフになります。私は完璧に近いところで働いています。

問題は、私が私の車道にいる間にボタンを押すと、近接しているので、インテントは常に「入力中」に設定された余分なKEY_PROXIMITY_ENTERINGで即座に発生します。私が近接の外で追跡を開始すると、それは予想どおりに動作します。どのように私は同じ方法で働いてそれの内部を開始するときに近接を終了することができますか?事前に感謝、ここに私のコードです。

私の活動では:

float radius = 100f;
double lat = 37.422;
double lon = -122.084;

// Expiration is 10 Minutes
long expiration = 600000;

LocationManager locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

Intent intent = new Intent(proximityIntentAction);

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
locManager.addProximityAlert(lat, lon, radius, expiration, pendingIntent);

そしてここに私のBroadcastReceiverがある:

public void onReceive(Context context, Intent intent)
{
    Log.v("SomeTag","Proximity Alert Intent Received");
    String direction = LocationManager.KEY_PROXIMITY_ENTERING;
    CharSequence text = direction;
    int duration = Toast.LENGTH_SHORT;

    Toast toast = Toast.makeText(context, "going: "+text, duration);
    toast.show();
    LocationManager locManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 1, intent, PendingIntent.FLAG_NO_CREATE);
    locManager.removeProximityAlert(pendingIntent);
}
0
私は同じ問題を経験しています。過去には、あなたが期待していたように、近くに登録していて、近接から外れている間に即座にisEntering = falseになったときに、それはまったく発射されませんでした。 ----私はちょうどそのデバイスが特定のまたは特定のアンドロイドバージョンから知る必要があります。
追加された 著者 Yaadm,

1 答え

なぜボタンの発射にタイマー/遅延を入れないのですか?たとえば、アプリが検出を開始する前に近接から外れるのに一定の時間を費やさないようにしましょう。私は多くの家庭用警報が同じように機能すると思います。または、近接性への最初の入力を検出して無視し、その近接性(つまりガレージ)へのその後の再入力を検証することもできます。どう思いますか?

2
追加された
それはすばらしい提案です。私はまた、私が近接アラートを開始するときに遅れを拾いました...
追加された 著者 Ndupza,