新的Android BLE api(从api 21开始)允许使用onBatchScanResults轻松找到信标上的回调,但是当信标超出范围时是否可以获得某种信息?
我想我可以手动操作 - 记住上次看到的信标列表
public void onBatchScanResults (List<ScanResult> results)
并与下一批比较它与最后看到的 - 但在这种情况下我需要唤醒设备 - 让我们说 - 每分钟检查是否已经改变。
免责声明:我不使用ibeacon而是使用其他一些BLE信标,但没有像beacon
答案 0 :(得分:0)
您需要使用计时器并按照您的描述维护列表,因为API不会保留消失设备的有状态知识。
一些提示:
onBatchScanResults
回调中看到的设备,因为单个回调可能没有完整列表。AlarmManager
作为您的计时器,因为即使CPU在应用程序处于后台时进入睡眠状态,它也会唤醒您的应用程序。Map
作为设备列表,并存储一个复合对象,其中包含BluetoothDevice
和上次检测到时间的时间戳。