Я хочу подключиться к устройству Bluetooth и записать значение, чтобы характеристики были максимально быстрыми. На данный момент мой код приводит к плохим результатам:Время соединения/кэширование Bluetooth LE
1) Сканирование BLE - как вы можете видеть, у меня есть жесткий адрес MAC-адреса устройства, к которому я хочу подключиться. Я также получаю временную метку метода connectGatt invoke.
@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 секунды. Характеристика записи занимает меньше секунды в onServicesОткрытый прослушиватель, так что это не проблема.
Вопрос 1): Есть ли способ ускорить это время соединения?
Вопрос 2): Есть ли способ сохранить соединение Bluetooth с устройством в кеше, поэтому он будет длиться долго при первом подключении и в течение последующих вызовов будет быстрее?
Вопрос 3): Любые другие предложения, что могло бы заставить его работать быстрее? Может быть, мой подход плох.
Благодарим за отзыв. Я собираюсь попробовать что-то и сообщить, если помог :) – F1sher