java - 如何在android地理围栏中实现 "un-dwell"?

标签 java android android-geofence

我无法理解 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/

相关文章:

java - EasyMock 如何捕获被测试方法调用的 void 方法的参数?

java - 除了 Guice-no-aop,是什么让 Guice 无法在 Android 上运行?

maven-2 - 指定 JDK 供 Maven 使用

java - 为什么在切换 fragment 时,recyclerview 丢失了?

java - 内部应用程序选择器

android - LocationClient 连接和地理围栏

java - 通过新实例访问类

Android NDK - 找不到库 CANNOT LINK EXECUTABLE - 如何设置 LD_LIBRARY_PATH?

android - Geofences 不触发(pendingintents 和 broadcastreceiver)

android - 如何在 Oreo 后台监控地理围栏?