我正在尝试从健康档案中读取温度值。健康体温计服务。根据Google官方BLE开发页面,当我尝试通知一个健康体温计特征以读取温度时,我尝试使用writeDescriptor写入描述符值(客户端特征配置)。writeDescriptor的回调方法返回状态5,根据Google,这是GATT_INSUFFICIENT_AUTHENTICATION。
所以我注释了writedescriptor的代码,并尝试调用mBluetoothGatt.setCharacteristicNotification(characteristic, enabled)方法,但onCharacteristicChanged方法从未被调用。当我与我的iOS开发团队交谈时,他们说他们从未写过描述符值,他们只是将通知设置为true,并从同一芯片获取温度值。
对于Android开发人员来说,编写描述符值是否有必要才能获得通知?最后,我尝试运行来自bluetooth.com网站的官方蓝牙应用进行测试目的,他们只禁用了所有三个按钮的通知读取和写入吗?
感谢您,对我的英语表示抱歉。 [更新]
找到一些日志可能会导致一些绑定问题,请帮助我解决。
找到一些日志可能会导致一些绑定问题,请帮助我解决。
短期密钥生成仍然记录为错误
11-08 11:26:44.392: E/bt-smp(1014): STK Generated之后,绑定状态发生了巨大变化,可能导致不足的身份验证
11-08 11:26:49.437: I/BluetoothBondStateMachine(1014): bondStateChangeCallback: Status: 0 Address: 00:16:A4:C0:FF:EE newState: 2
11-08 11:26:49.437: D/BtGatt.btif(1014): btif_gattc_upstreams_evt: Event 9
11-08 11:26:49.437: E/BluetoothBondStateMachine(1014): In stable state, received invalid newState: 12
[更新]
在Nexus 7上升级为KitKat 4.4后,添加了两个方法
device.createBond();
device.setPairingConfirmation(true);
现在可以读取加密特征,但仍不稳定。但我有一些成功。