在设定的接近范围内启动时,Android GPS接近警报

在设定的接近范围内启动时,Android GPS接近警报,android,gps,locationmanager,proximity,Android,Gps,Locationmanager,Proximity,我想在我的车库门应用程序中使用Android的接近警报。我有一个按钮设置,当按下“添加”按钮时,会发出接近警报并开始跟踪位置。我希望它无限期地跟踪,直到我进入或退出邻近区域。如果进入它将打开车库门,如果退出它将关闭车库门,然后我移除接近警报并关闭GPS。我让它工作得近乎完美 问题是,当我在我的车道上按下按钮时,因此在接近中,当额外的按键设置为“进入”时,意图总是立即触发。如果我在接近范围外开始跟踪,它将按预期运行,仅在我进入接近范围后才会触发。当我以同样的方式在其内部工作时,我如何才能退出接近?

我想在我的车库门应用程序中使用Android的接近警报。我有一个按钮设置,当按下“添加”按钮时,会发出接近警报并开始跟踪位置。我希望它无限期地跟踪,直到我进入或退出邻近区域。如果进入它将打开车库门,如果退出它将关闭车库门,然后我移除接近警报并关闭GPS。我让它工作得近乎完美

问题是,当我在我的车道上按下按钮时,因此在接近中,当额外的按键设置为“进入”时,意图总是立即触发。如果我在接近范围外开始跟踪,它将按预期运行,仅在我进入接近范围后才会触发。当我以同样的方式在其内部工作时,我如何才能退出接近?提前谢谢,这是我的密码

在我的活动中:

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);
这是我的收音机:

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);
}

为什么不在按钮的触发上设置计时器/延迟?例如,为什么不在你的应用程序开始检测之前,给自己一段固定的时间来离开附近呢?我认为很多家庭报警器的工作原理是一样的。或者,另一种选择可能是检测并忽略您第一次进入该邻近区域,并验证随后再次进入该邻近区域(即您的车库)的情况。你觉得怎么样?

这是个很好的建议。当我启动接近警报时,我也遇到了延迟…我遇到了同样的问题。在过去,它对我起作用,正如你所预料的那样,如果在我不在附近的时候注册接近,立即被isEntering=false解雇,那么它根本就不会被解雇。---我只需要知道它是特定于设备还是来自某个安卓版本。