Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何知道BLE信标超出Android BLE api 21的范围_Android_Bluetooth Lowenergy_Android 5.0 Lollipop_Android Bluetooth_Ibeacon Android - Fatal编程技术网

如何知道BLE信标超出Android BLE api 21的范围

如何知道BLE信标超出Android BLE api 21的范围,android,bluetooth-lowenergy,android-5.0-lollipop,android-bluetooth,ibeacon-android,Android,Bluetooth Lowenergy,Android 5.0 Lollipop,Android Bluetooth,Ibeacon Android,新的安卓BLE api(从API21开始)允许在信标上轻松获得回调,但当信标超出范围时,有可能获得某种信息吗 我想我可以手动记住最后看到的信标列表 public void onBatchScanResults (List<ScanResult> results) public void onBatchScanResults(列出结果) 和下一批相比,最后一次看到它-但在这种情况下,我需要唤醒设备-比方说-每分钟检查是否有什么改变 免责声明:我不使用ibeacon,但使用其他一些B

新的安卓BLE api(从API21开始)允许在信标上轻松获得回调,但当信标超出范围时,有可能获得某种信息吗

我想我可以手动记住最后看到的信标列表

public void onBatchScanResults (List<ScanResult> results)
public void onBatchScanResults(列出结果)
和下一批相比,最后一次看到它-但在这种情况下,我需要唤醒设备-比方说-每分钟检查是否有什么改变


免责声明:我不使用ibeacon,但使用其他一些BLE信标,但没有像
信标那样的标签

您需要使用计时器,并按照您的描述维护一个列表,因为API对正在消失的设备没有状态知识


以下是一些提示:

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

  • 是的,这似乎是现在唯一的方法…记住列表。。。否则,将需要包含一个带有来自信标的机制的服务器。否则,从根本上说,无法检测信标是否不在范围内:)或维护uuid特定信标的列表,并且无法从测试此方法功耗的sameDid中进行检查?请参阅此处:这些测试未使用AlarmManager,但是,仅使用低延迟安卓5.0扫描,并回调到
    onBatchScanResults
    是的,但它不包括在特定时刻唤醒设备以检查某项内容是否已更改的情况;无论如何,Android BLE api似乎不是用来检测超出范围的事件,只是检测范围内的事件;这就是他们想要思考灯塔的方式——你可以找到,但不是松散的:)很清楚,Android没有任何灯塔API。它只有较低级别的蓝牙API。这就是我编写Android Beacon库的全部原因。它添加了您描述的确切功能,并可用于各种可配置信标类型。