2011-12-19 12 views
0

ガレージドアアプリに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

答えて

2

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

+0

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