在Android 7.0上清除蓝牙缓存

时间:2016-10-20 11:40:57

标签: android caching bluetooth-lowenergy

我使用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中的蓝牙缓存?

0 个答案:

没有答案