Kontakt地区不断进入和放弃

时间:2016-12-14 17:23:39

标签: android ibeacon-android kontakt.io

我在我的应用程序中监视Kontakt信标,并且我正在使用SpaceListener来了解用户何时进入某个区域以及何时用户放弃了该区域。问题是我不断收到进入区域和放弃区域。 我正在使用该库的3.2.0版本。信标距离我只有1米,信标也都不在我身边。这是正常行为吗?

@Override
public void onCreate() {
        super.onCreate();
        proximityManager = new ProximityManager(this);
        proximityManager.setIBeaconListener(createIBeaconListener());
        proximityManager.setSpaceListener(new SpaceListener() {
            @Override
            public void onRegionEntered(IBeaconRegion region) {
                Log.d(TAG,"onRegionEntered");
            }

            @Override
            public void onRegionAbandoned(IBeaconRegion region) {
                Log.d(TAG,"onRegionAbandoned");
            }

            @Override
            public void onNamespaceEntered(IEddystoneNamespace namespace) {

            }

            @Override
            public void onNamespaceAbandoned(IEddystoneNamespace namespace) {

            }
        });
        proximityManager.configuration()
                .scanMode(ScanMode.BALANCED)
                .activityCheckConfiguration(ActivityCheckConfiguration.MINIMAL)
                .forceScanConfiguration(ForceScanConfiguration.MINIMAL);
    }

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);
        proximityManager.connect(new OnServiceReadyListener() {
                    @Override
                    public void onServiceReady() {
                        proximityManager.startScanning();

                    }
                });
        return START_STICKY;
}

private IBeaconListener createIBeaconListener() {
        return new SimpleIBeaconListener() {
            private SFBeacon nearestBeacon;
            @Override
            public void onIBeaconDiscovered(IBeaconDevice iBeaconDevice, IBeaconRegion region) {
                Log.d(TAG,"----------------------------------------------");
                Log.d(TAG,"Detected: "+iBeaconDevice.getUniqueId()+" "+iBeaconDevice.getProximityUUID().toString()+" "+iBeaconDevice.getMajor()+" "+iBeaconDevice.getMinor());
            }
}

1 个答案:

答案 0 :(得分:0)

虽然我不是Kontakt Android SDK的专家,但是当移动设备间歇性地检测到信标时,通常会发生这种问题。这可能有很多原因:

  1. 信号可能信号太弱,因为它的发射功率设置得太低。
  2. 信标可能信号太弱,因为信号距离检测手机太远。
  3. 信标可能不经常播放,如果它只是每5秒左右播放一次就会出现问题。尝试将其广告费率提高到10Hz或更高,以确定问题是否消失。
  4. Android提供不同的扫描模式,其中一些提供更频繁的更新。尝试将ScanMode.BALANCED更改为ScanMode.LOW_LATENCY