首页 > 解决方案 > altBeacon: didEnterRegion

问题描述

我正在编写一个利用 AltBeacon 的 Android-Beacon-Library 的 Android App 自定义类。但是当第一次启动时,如果我在信标区域,didEnterRegion() 将不起作用。我想立即创建一个活动。我找不到任何其他解决方案。请,任何帮助表示赞赏!这是我的代码▼</p>

beaconManager.addMonitorNotifier(new MonitorNotifier() {
            @Override
            public void didEnterRegion(Region region) {
                //Log.i(TAG, "I just saw an beacon for the first time!");
                sendData(dataStart);
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        tv_beacon_.setText("work");
                    }
                });
            }

            @Override
            public void didExitRegion(Region region) {
                //Log.i(TAG, "I no longer see an beacon");
                sendData(dataEnd);
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        tv_beacon_.setText("not work");
                    }
                });
            }

            @Override
            public void didDetermineStateForRegion(int state, Region region) {
                Log.i(TAG, "I have just switched from seeing/not seeing beacons: "+state);

            }

标签: androidbeacon

解决方案


这种行为是意料之中的,因为didEnterRegion回调仅在您不在该区域时才会触发。你可以在这里了解更多信息:https ://altbeacon.github.io/android-beacon-library/detection-trouble.html

你可以做的就是打电话

beaconManager.setRegionStatePeristenceEnabled(false)

这将didEnterRegion在应用程序重新启动后触发回调,即使手机已经在信标区域。

如果您这样做,请记住,当后台应用程序被 Android 操作系统暂时终止时,回调可能会触发多次。


推荐阅读