我想連接到藍牙設備,並以最快的方式寫入特性值。現在我的代碼給出了不好的結果:藍牙LE連接時間/緩存
1)BLE掃描 - 正如你可以看到我有硬編碼MAC地址的設備,我想連接到。我也獲得connectGatt方法調用的時間戳。
@Override
public void onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord) {
if(device.getAddress().equals("F1:9F:EE:6B:AB:83")) {
mConnectedGatt = device.connectGatt(this, false, mGattCallback);
start = System.currentTimeMillis()/1000;
};
}
2)onConnectionChanged - 我得到enother時間戳和它們。減去結識很多連接操作如何持續
@Override
public void onConnectionStateChange(BluetoothGatt gatt, int status, int newState) {
super.onConnectionStateChange(gatt, status, newState);
end = System.currentTimeMillis()/1000;
Log.d("QWERTY", "TIME " + (end - start));
if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_CONNECTED) {
Log.d("QWERTY","Success");
gatt.discoverServices();
} else if (status == BluetoothGatt.GATT_SUCCESS && newState == BluetoothProfile.STATE_DISCONNECTED) {
Log.d("QWERTY","Disconnected");
} else if (status != BluetoothGatt.GATT_SUCCESS) {
Log.d("QWERTY","Connection error");
gatt.disconnect();
}
}
還有我的主要問題是。 device.connectGatt和onConnectionStateChange之間的時間需要3到8秒,這對我來說太長了。如果它在1秒左右,我會很高興。 寫入特徵在onServicesDiscovered偵聽器中佔用的時間少於秒,所以它不是問題。
問題1):有什麼辦法可以使連接時間更快?
問題2)有沒有辦法將藍牙連接與設備存儲在緩存中,所以它在第一次連接時會持續很長時間,在以後的調用中會更快?
問題3):有什麼可以使其工作更快的建議?也許我的做法很糟糕。
謝謝你的迴應。我會嘗試一些事情,讓你知道如果幫助:) – F1sher