我是否实施 Android
与 BLE
之间的关联?喜欢 Anti-lost
或 finder
,Android手机连接到BLE设备后,手机每秒都会读取BLE设备的RSSI。
如果 RSSI of BLE device
低于 RSSI threshold
,则认为 Out of Range
。例如:阈值为-70 ,设备的当前RSSI为-80 。
当应用认为 Out of Range
时。它每隔5秒将消息发送到BLE。但几次后它总是断开连接。我使用以下代码将消息发送到BLE设备。
BluetoothGattService HelloService = Gatt.getService(HELLO_SERVICE_UUID);
if(HelloService == null) {
Log.d(TAG, "HelloService not found!");
return;
}
//If the Service is not null , try to get the characteristic.
BluetoothGattCharacteristic Characteristic = HelloService.getCharacteristic(UUID_HELLO_CHARACTERISTIC);
if(Characteristic == null) {
Log.d(TAG, "Characteristic not found!");
return;
}
Gatt.setCharacteristicNotification(Characteristic, true);
Characteristic.setValue(text, BluetoothGattCharacteristic.FORMAT_UINT8, 0);
Gatt.writeCharacteristic(Characteristic);
Log.d(TAG, "StepCount Characteristic End!");
以上代码是正确的,BLE可以接收消息。但是BLE设备会在几秒钟后断开连接。似乎在短时间内不止一件事是BLE设备的负担。
问题是:如何在Android和BLE之间建立更稳定的连接?
答案 0 :(得分:3)
一些建议:
BluetoothGattCallback.onCharacteristicWrite()
或BluetoothGattCallback.onCharacteristicRead()
的回叫后才能进行读取或写入。