gpt4 book ai didi

Android BluetoothGatt 未收到特征通知 BluetoothGatt#writeDescriptor(desc) 返回 false

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:14 26 4
gpt4 key购买 nike

我正在开发一个需要与蓝牙 LE 设备通信的应用程序。

这是我用来设置 CharacteristicNotification 的代码

public boolean setCharacteristicNotification(
BluetoothGattCharacteristic characteristic, boolean enable) {

if(mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return false;
}

Log.v(TAG, "setCharacteristicNotification(): uuid=" + characteristic.getUuid() + " enabled=" + enable);

boolean notifications = mBluetoothGatt.setCharacteristicNotification(characteristic, enable);

if(notifications) {
Log.v(TAG, "setCharacteristicNotification(): Notifications are enabled");
}
else {
Log.w(TAG, "setCharacteristicNotification(): Notifications are not enabled for characteristic " + characteristic);
}

BluetoothGattDescriptor desc = characteristic.getDescriptor(
UUID.fromString(FBGattAttributes.CHARACTERISTIC_CLIENT_CONFIG));

desc.setValue(enable ?
BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE :
new byte[]{0x00, 0x00}
);

boolean ok = mBluetoothGatt.writeDescriptor(desc);

if(ok){
Log.v(TAG, "wrote descriptor value for notification: ok=" + ok);
}else{
Log.w(TAG, "writeDescriptor failed: we will not get notifications=" + ok);
}


return ok;
}

在此代码中“mBluetoothGatt.writeDescriptor(desc);”有时返回 false 这就是我无法从 BluetoothGatt 获得任何通知的原因。我不确定如何解决这个问题。

这个问题只发生在 LG G2 操作系统 5.02 之前它有 4.4 问题不是那么频繁但是在更新之后我每次都得到“错误”除了第一次。如果我们在连接后第一次尝试设置通知,它会起作用,一旦我断开连接并尝试连接,那么它将始终返回 False。我需要终止并重新启动该应用程序才能使其再次运行。有谁知道为什么这不起作用?提前致谢

最佳答案

在 Lollypop 中,BluetoothGatt.java 已更新为包含“设备忙” block ,以防止应用程序一次请求多个异步操作。参见 BluetoothGatt.java:1029对于从 writeDescriptor 返回的那个。

我不得不设置一个命令队列来解决这个问题。基本上,我的逻辑所做的是将所有失败的异步调用排入队列并在我的 BluetoothGattCallback 中执行重试。

关于Android BluetoothGatt 未收到特征通知 BluetoothGatt#writeDescriptor(desc) 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31033125/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com