我正在開發一個應用程序,以保持掃描某些智能藍牙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