gpt4 book ai didi

android - 蓝牙低能量通知

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:49 24 4
gpt4 key购买 nike

我正在尝试从健康文件中读取温度值。 health thermometer service .根据 official google ble devlopment page当我尝试通知健康温度计特征读取温度时,我尝试使用 writeDescriptor 写入描述符值(客户端特征配置),根据谷歌,writeDescriptor 返回状态 5 的回调方法是 GATT_INSUFFICIENT_AUTHENTICATION。所以我评论了 writedescriptor 的代码并尝试调用方法 mBluetoothGatt.setCharacteristicNotification(characteristic, enabled);但从未调用过 onCharacteristicChanged 方法。当我与我的 ios 开发团队交谈时。他们说他们从不写描述符值,他们只是将通知设置为真,然后从同一个芯片获取温度值。Android 开发人员需要编写描述符值才能获得通知???所以最后我尝试从 bluetooth.com 网站运行官方蓝牙应用程序进行测试,他们只是禁用所有三个按钮通知读写???谢谢你,对不起我的英语

[更新]
找出一些可能导致一些绑定(bind)问题的日志,如果您有任何解决方案,请帮助我。

  • 生成的短期 key 仍记录为错误
    11-08 11:26:44.392: E/bt-smp(1014): STK 生成

  • 之后绑定(bind)状态发生显着变化,这可能会导致身份验证不足
    11-08 11:26:49.437: I/BluetoothBondStateMachine(1014): bondStateChangeCallback: Status: 0 地址: 00:16:A4:C0:FF:EE newState: 2
    11-08 11:26:49.437:D/BtGatt.btif(1014):btif_gattc_upstreams_evt:事件 9
    11-08 11:26:49.437:E/BluetoothBondStateMachine(1014):处于稳定状态,收到无效的 newState:12

[更新]
在 nexus 7 上升级 kitkat 4.4 后。添加两个方法
device.createBond();<br/>
device.setPairingConfirmation(true);

现在对我有用,我可以读取加密的特征。但仍然不稳定。但我取得了一些成功。

最佳答案

是的,在 Android 中启用 BLE 通知,您必须同时调用 mBluetoothGatt.setCharacteristicNotification(characteristic, enabled) 并将合适的值写入该特性的描述符 0x2902。

我不确定你为什么会得到 GATT_INSUFFICIENT_AUTHENTICATION,这可能是由温度计的实现引起的。

编辑:根据评论中的新信息以及提供的屏幕截图,您可能需要检查以下几点:

  1. 该特征是指示特征,不是通知特征。您写入描述符的值应该是 BluetoothGattDescriptor.ENABLE_INDICATION_VALUE,而不是 BluetoothGattDescriptor.ENABLE_NOTIFICATION_VALUE。请注意,您仍然需要通过 setCharacteristicNotification() 打开指示。 (这里的术语令人困惑,但根据文档这是必要的)

  2. 对于Android上不稳定的蓝牙堆栈,尝试重启蓝牙,关闭WiFi。这将增加稳定性。 (虽然不是100%解决问题)

关于android - 蓝牙低能量通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19614715/

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