如何解决为什么 Android BLE gatt 回调方法 onCharacteristicChanged 回调在 Wear OS 设备中的调用率低于智能手机?
我开发了一款专为 Wear OS 设备设计的应用,该应用使用 BLE 作为 Gatt 客户端接收数据。我将 mtu 大小设置为可能的最大值(517 字节),并且需要传输大量数据 - 因此我将连接优先级设置为 BluetoothGatt.CONNECTION_PRIORITY_HIGH
,并且从日志中我看到间隔设置为 5ms。
我在 Suunto 7 和 galaxy S9+ 上测试了我的应用程序,以查看手表和智能手机上的 BLE 速度,并发现当我从 Gatt 服务器设备收到通知时,我看到在 Suunto 7 上大约每 50 毫秒调用一次 onCharacteristicChanged 回调,而在 galaxy S9+ 上,onCharacteristicChanged 回调大约每 5 毫秒调用一次。
可能导致这种差异的原因是什么,我如何才能在 Wear OS 设备上更频繁地调用 onCharacteristicChanged 回调?
如果重要的话 - Gatt 服务器设备也是我使用 BluetoothGattServer
类开发的 Android 应用程序,我使用通知而不是指示发送数据。
解决方法
我认为您在不同的设备上看到不同的延迟是很自然的,因为 Galaxy S9+ 具有 5.0,A2DP,LE
连接功能,但 Suunto 7 是一款小型设备,具有硬件限制。
但是如果您想解决这个问题并在相同的延迟中获取数据,您可以在 Galaxy S9+ 连接时添加 45 毫秒的延迟。
首先,您应该在 onCharacteristicChanged callback
:
if(gatt.getDevice().getName().equals("Galaxy S9+")){
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//run function
}
},45);
}
else
//run function
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。