通常在建立连接后,会进入onServicesDiscovered方法,这个时候可已根据需要去发起一些通道的订阅(可遍历所有通道信息,根据通道的可读、通知属性来订阅)。我这里,手机需要向设备发起认证信息(这个需要固件配合,认证后,其他手机就扫描不到该设备了),认证的指令自定义约定,此处略。从最后附录的全部代码可以看到认证指令发送失败是立即通知程序页面认证失败的,但是成功发送认证指令,并没有立即通知,这里要注意,真正的指令是否成功写入设备,是要通过onCharacteristicWrite来判断的:
onCharacteristicChanged:接收到通道指令(前提是已经订阅),如设备的点击、双击、长按事件;onCharacteristicRead:手机主动发起的read后,设备回传过来的数据,如读取设备电量、固件版本等;onConnectionStateChange:设备与手机的连接状态变化:连接成功、断开连接;onCharacteristicWrite:手机向设备写入指令的结果,该方法中可获取被写入通道的ID,内容,状态;onServicesDiscovered:刚建立连接时,设备拥有的服务被发现;onReadRemoteRssi:设备信号强度变化。