我正在开发一款应用程序,可以扫描某些智能蓝牙LE标签,以检查标签何时超出范围。
当我在前台运行代码时,我每秒从每个标签获取一个信号。但在后台(如在服务中扫描),这个速率每10秒减少到1个信号!
我几乎可以肯定智能标签的频率在两种情况下都是相同的,但是当扫描发生在后台时,由于电池问题,Android操作系统可能会减慢发现蓝牙设备的速度。
我担心这会让人不满意,特别是当你需要检测到一个行李被盗或者是一些关键的东西时,会迫使我每3秒左右保持1个信号的速度。
更新
对于我使用的代码,首先:
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());
}
};
答案 0 :(得分:0)
Android 4.3和4.4不会在后台减慢发现速度。在Android Beacon Library中,当应用程序处于后台时,我不得不加入额外的代码来减慢扫描速度以节省电量。
我无法解释你所说的你所看到的。也许你应该尝试上面提到的库,看看你是否看到了相同的行为。它是开源的,所以你也可以查看代码。它的扫描方式与您问题中的摘录中的扫描方式相同。