我使用BLE 112作为外设,Android和iphone手机作为中心,因为中央几乎从未连接到相同的外围设备,我希望在每次连接时重置蓝牙缓存。我在外设中添加了服务改变特性(服务:1801,特性:2A05),当设置指示时,表示删除缓存。在iPhone上它工作正常,核心蓝牙完成所有工作。在Android sdk 19 - 23中,我发现它的特征和设置指示并且它有效:
public static UUID GENERIC_ATTRIBUTE_SERVICE_UUID = UUID.fromString("00001801-0000-1000-8000-00805F9B34FB");
public static UUID SERVICE_CHANGED_UUID = UUID.fromString("00002A05-0000-1000-8000-00805F9B34FB");
public static UUID STATE_DESCRIPTOR_UUID = UUID.fromString("00002902-0000-1000-8000-00805F9B34FB");
final BluetoothGattCharacteristic stateCharacteristic = mGatt
.getService(GENERIC_ATTRIBUTE_SERVICE_UUID)
.getCharacteristic(SERVICE_CHANGED_UUID);
if (!mGatt.setCharacteristicNotification(stateCharacteristic, true)) {
gatt.discoverServices();
return;
}
BluetoothGattDescriptor descriptor = stateCharacteristic.getDescriptor(Constants.STATE_DESCRIPTOR_UUID);
descriptor.setValue(BluetoothGattDescriptor.ENABLE_INDICATION_VALUE);
mGatt.writeDescriptor(descriptor);
在Android sdk 24中,指示会自动启用,但是当我从外围设备发送指示时,通信会停止。我试图延迟发送指示,但通信仍然停止。
发生了什么变化,如何使用服务更改特性清除android sdk 24中的蓝牙缓存?