我无法理解 Android 的地理围栏。
实际问题:我使用了来自 googles geofence-api 的 Enter
+Exit
事件,但在许多设备上信号非常不准确,以至于它跳进跳出栅栏(跳跃半径通常大于 400 米)。
计划的解决方案:所以我想使用Dwell
来“平滑”它。如果该位置在栅栏内停留一分钟,则会发生停留。到目前为止,一切都很好。但是我如何检测栅栏的离开呢?当我使用 Exit
时,由于这些信号跳跃,可能会发生多个 Exit
。当我离开地理围栏超过一分钟时,我需要的是一种“不适”。
我想避免使用在快速重复的地理位置上注册并过滤掉小的异常值的自定义逻辑来重新实现整个地理围栏。
问题:geofence-api 中有什么东西可以实现“undwell”吗?或者是否有最佳实践如何检查 Exit
是否是真正的导出?
最佳答案
public long lastEnterTime = 0;
public void initTimer(){
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
if(lastEnterTime!=0 && System.currentTimeMillis() > lastEnterTime + 1000*60){
lastEnterTime = System.currentTimeMillis();
onRealEnter();
}
}
},0,1000);
}
public void onRealEnter(){
}
public void onEnter(){
lastEnterTime = System.currentTimeMillis();
}
public void onExit(){
lastEnterTime = 0;
}
关于java - 如何在android地理围栏中实现 "un-dwell"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35014702/