我正在开发一个应用程序,以保持扫描某些智能蓝牙LE标签来检查标签超出范围。Android的蓝牙LE扫描在背景中有不同的行为
当我在前台运行我的代码时,每秒收到一个信号。但是在后台(比如在服务中扫描),这个速率每10秒就会下降到1个信号!
我几乎可以肯定在这两种情况下智能标签的频率都是相同的,但是当扫描发生在后台时,Android操作系统可能会由于电池问题而降低发现蓝牙设备的速度。
恐怕这并不令人满意,特别是当你需要检测一个包被偷走或者某些关键因素迫使我保持每3秒左右1个信号的速率。
UPDATE:
对于我使用的代码,第一:
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());
}
};
你能分享你的扫描码吗?如果编码正确,我认为这不应该在后台工作。 – davidgyoung 2014-09-22 08:52:58
@davidgyoung请参阅更新。 – 2014-09-22 09:07:44