使用 Android Beacon 库进行基于意图的扫描

问题描述 投票:0回答:1

我正在尝试使用 Android Beacon Library 检测 iBeacons,而我的 Android 应用程序处于终止状态(未出现在任务管理器中)。

我已经成功地通过前台服务监控和范围化 iBeacon 区域,并且一切正常。现在,我想尝试“基于意图的扫描”来检测信标,但显然我缺少一些东西来实现这一点。我尝试使用可用的参考 Kotlin 应用程序配置基于意图的扫描,但我相信我没有完全理解基于意图的扫描是如何工作的。 我在下面报告了我的代码的有用部分:

override fun onCreate() { super.onCreate() val beaconManager = BeaconManager.getInstanceForApplication(this) BeaconManager.setDebug(true) val parser = BeaconParser(). setBeaconLayout("m:2-3=0215,i:4-19,i:20-21,i:22-23,p:24-24") parser.setHardwareAssistManufacturerCodes(arrayOf(0x004c).toIntArray()) beaconManager.getBeaconParsers().add( parser) setupBeaconScanning() } fun setupBeaconScanning() { val beaconManager = BeaconManager.getInstanceForApplication(this) // Enable intent-based scans beaconManager.setIntentScanningStrategyEnabled(true) beaconManager.startMonitoring(region) val regionViewModel = BeaconManager.getInstanceForApplication(this).getRegionViewModel(region) regionViewModel.regionState.observeForever(centralMonitoringObserver) } val centralMonitoringObserver = Observer<Int> { state -> if (state == MonitorNotifier.OUTSIDE) { Log.d(TAG, "outside beacon region: " + region) } else { Log.d(TAG, "inside beacon region: " + region) sendNotification() } }

使用此配置,监控不起作用(当应用程序位于前台时,当应用程序位于后台时)。

android android-intent background bluetooth-lowenergy beacon
1个回答
0
投票
监控 API 不能很好地与意图扫描策略配合使用。

您可能会收到一个进入事件,然后永远不会收到退出事件(预期)。 根据有关意图扫描策略的文档:

当信标消失时,它不会通知您 – 当所有信标消失时,您的应用程序永远不会收到退出区域事件,并且当使用测距 API(推荐与意图扫描策略一起使用)时,您将在最后一个信标消失后立即停止获取测距更新消失了。

https://altbeacon.github.io/android-beacon-library/detection_times.html

© www.soinside.com 2019 - 2024. All rights reserved.