- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在开发一个需要与蓝牙 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/
我正在构建一个与 BLE 通信的应用程序。我需要向 BluetoothGattDescriptor 写入一个 int 值。如果我在一切正常时这样做,但如果我想为每个写入 BluetoothGattDe
我正在尝试编写 BLE Android 应用程序。我发现有时当我打电话 BluetoothGatt.writeDescriptor()它返回 false。 我没有在文档中找到任何对此功能的限制说明。但
我正在开发一个需要自动连接到蓝牙外设的应用。 我有一个执行以下操作的粘性服务: 在绑定(bind)设备中寻找所需的设备 如果设备(第一次)没有正常运行,则扫描它并使用 device.createBon
我有一个与蓝牙低功耗血糖仪通信的应用程序。 目前我的应用程序在 Android 4.4.4 上运行正常,但在 5.1.1 上运行失败 调试我发现 writeDescriptor() 方法在执行多次时失
我正在开发一个需要与蓝牙 LE 设备通信的应用程序。 这是我用来设置 CharacteristicNotification 的代码 public boolean setCharacteristicNo
我是一名优秀的程序员,十分优秀!