如何知道BLE beacon超出了Android BLE api 21的范围

时间:2015-03-23 10:13:08

标签: android bluetooth-lowenergy android-5.0-lollipop android-bluetooth ibeacon-android

新的Android BLE api(从api 21开始)允许使用onBatchScanResults轻松找到信标上的回调,但是当信标超出范围时是否可以获得某种信息?

我想我可以手动操作 - 记住上次看到的信标列表

public void onBatchScanResults (List<ScanResult> results)

并与下一批比较它与最后看到的 - 但在这种情况下我需要唤醒设备 - 让我们说 - 每分钟检查是否已经改变。

免责声明:我不使用ibeacon而是使用其他一些BLE信标,但没有像beacon

这样的标签

1 个答案:

答案 0 :(得分:0)

您需要使用计时器并按照您的描述维护列表,因为API不会保留消失设备的有状态知识。


一些提示:

  1. 使您的列表基于多个onBatchScanResults回调中看到的设备,因为单个回调可能没有完整列表。
  2. 使用AlarmManager作为您的计时器,因为即使CPU在应用程序处于后台时进入睡眠状态,它也会唤醒您的应用程序。
  3. 使用Mac地址键入的Map作为设备列表,并存储一个复合对象,其中包含BluetoothDevice和上次检测到时间的时间戳。