0

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

@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());
            }
}
4

1 回答 1

0

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

  1. 信标的信号可能太弱,因为它的发射器功率设置得太低。
  2. 信标可能信号太弱,因为它离检测电话太远。
  3. 信标可能不会经常做广告,如果它每 5 秒左右只做一次广告,这可能是个问题。尝试将其广告速率提高到 10Hz 或更高,以查看问题是否消失。
  4. Android 提供不同的扫描模式,其中一些会提供更频繁的更新。尝试更改ScanMode.BALANCEDScanMode.LOW_LATENCY
于 2016-12-14T18:05:53.393 回答