CH582 android BLE 特征通知和掉线问题

使用CH582开发的BLE Mesh在与自己写的APP进行LE连接后偶尔会断开连接,另外连接后已经启用了特征通知,经常会收不到特征改变通知,有时会反复连接并启用通知,看返回投诉通知启用成功了的,但是就是收不到特征变化的信息,有时又一直都没问题,都可以收到特征变化信息。感觉不稳定一样,希望提供一个解决方法,启用特征通知部分的代码完全和官方DEMO的方法一样

使用BLE调试助手连接试试看,如果连接没有问题定位问题在你的APP上;如果连接有问题,优先检查582代码情况。



连接都没问题,很顺畅,即使偶尔莫名其妙断开,然后就是连接上后很难收到特征改变的通知。

   (BluetoothGattCharacteristic characteristicenabled) {
      (== || == ) {
         Log.()}
      (Build.VERSION.>= Build.VERSION_CODES.) {
         properties = characteristic.getProperties()((properties & BluetoothGattCharacteristic.) == )
            Log.(+ characteristic.getUuid() + )(.setCharacteristicNotification(characteristicenabled)) { BluetoothGattDescriptor descriptor = characteristic.getDescriptor()(descriptor != ) {
               descriptor.setValue(enabled?BluetoothGattDescriptor.:BluetoothGattDescriptor.)Log.((enabled?:) + characteristic.getUuid())Log.(+ + ).writeDescriptor(descriptor)}

}
      }
      }
(UUID serviceUUIDUUID charaUUIDenabled){
   (== || == ) {
      Log.()}
   (Build.VERSION.>= Build.VERSION_CODES.) {
      BluetoothGattService bluetoothGattServices =.getService(serviceUUID)(bluetoothGattServices!=) {
         BluetoothGattCharacteristic mGattCharacteristic = bluetoothGattServices.getCharacteristic(charaUUID)(mGattCharacteristic != ) {
           setCharacteristicNotification(mGattCharacteristicenabled)}
      }
   }
   }
(enabled){
   (!=&& !=) {
      UUID notifyService=getUUID(Constants.)UUID notifyChara=getUUID(Constants.)Toast.(+ notifyService ++notifyCharaToast.).show()setCharacteristicNotification(notifyServicenotifyCharaenabled)}
   }

这是我启用特征通知的代码。UUID用的是


1.异常断开连接的问题,断开时有错误码status的,可以看下错误码

2.在参考demo的基础上注意下,连接上后使用discoverService发现目标服务,尽量不要使用UUID直接获取。开启通知需要在主线程操作,使用handler.post切换到主线程即可。

如有问题可以通过邮箱zhangpc@wch.cn直接联系我


我是将BLE封装在服务里面的,UUID是连接后调用discoverService,然后在回调中获取。通知的启用时通过Handler发送消息的发送在主线程中启用,这种方式应该时主线程,而且联机调试下启用该通知后基本都可以收到特征改变的数据。


如果使用我们的DEMO没有问题的话,应该是您软件这边处理有问题。上面贴出的代码太少,无法定位问题。可以联系zhangpc@wch.cn或者微信 张工 13851192763,和技术人员确认下软件代码。


只有登录才能回复,可以选择微信账号登录