后台的Android蓝牙LE扫描具有不同的行为
我正在开发一个应用程序,不断扫描某些智能蓝牙标签,以检查标签是否超出范围 当我在前台运行代码时,每秒从每个标记中得到一个信号。但在后台(如服务中的扫描),该速率持续降低至每10秒1个信号 我几乎可以肯定,在这两种情况下,智能标签的频率是相同的,但当扫描发生在后台时,可能由于电池问题,Android操作系统发现蓝牙设备的速度会减慢 我担心这不会令人满意,尤其是当你需要检测到一个包被偷了或是一些迫使我将速率保持在每3秒1个信号左右的关键事件时 更新: 对于我使用的代码,首先:后台的Android蓝牙LE扫描具有不同的行为,android,android-service,bluetooth-lowenergy,ibeacon,Android,Android Service,Bluetooth Lowenergy,Ibeacon,我正在开发一个应用程序,不断扫描某些智能蓝牙标签,以检查标签是否超出范围 当我在前台运行代码时,每秒从每个标记中得到一个信号。但在后台(如服务中的扫描),该速率持续降低至每10秒1个信号 我几乎可以肯定,在这两种情况下,智能标签的频率是相同的,但当扫描发生在后台时,可能由于电池问题,Android操作系统发现蓝牙设备的速度会减慢 我担心这不会令人满意,尤其是当你需要检测到一个包被偷了或是一些迫使我将速率保持在每3秒1个信号左右的关键事件时 更新: 对于我使用的代码,首先: private Blu
private BluetoothAdapter bluetoothLeAdapter;
此选项用于启动扫描:
bluetoothLeAdapter.startLeScan(LeScanCallback);
这是回调:
private BluetoothAdapter.LeScanCallback LeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi,
byte[] scanRecord) {
Log.i("Found: ", device.getName() + " - " + device.getAddress());
}
};
Android 4.3和4.4不会降低后台发现的速度。最后,当应用程序在后台时,我不得不添加额外的代码来降低扫描速度以节省电池
我无法解释你说你看到了什么。也许您应该尝试上面提到的库,看看是否看到相同的行为。它是开源的,因此您也可以查看代码。它的扫描方式与您问题中的代码片段相同。您能分享您的扫描代码吗?如果编码正确,我认为这在后台不会有什么不同。@davidgyoung请查看更新。@HamzehSoboh那么您最终发现了什么?你也能更新你的最终分享吗?@PallavBakshi很多年前:)但我清楚地记得,我最终使用了
IntentService
,但使用了一个技巧,让它像正常服务一样一直运行。这是一种折衷,电池与准确性之间的折衷。无论如何,我会去图书馆看看,告诉你我得到了什么。谢谢