gpt4 book ai didi

Android蓝牙低功耗(ble)writeCharacteristic延迟回调

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:53:29 27 4
gpt4 key购买 nike

我正在使用 BLE Api (SDK 18) 在 Android 上实现一个应用程序,我遇到一个问题,即传输数据过程延迟非常慢。这是我的日志。

03-12 16:20:05.121: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:06.272: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

03-12 16:20:06.972: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:08.254: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

03-12 16:20:10.055: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:11.257: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

03-12 16:20:12.478: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:14.250: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

03-12 16:20:14.960: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:16.242: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

03-12 16:20:16.402: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:20.225: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

03-12 16:20:20.526: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:24.219: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

03-12 16:20:25.360: D/BluetoothGatt(13578): writeCharacteristic() - uuid: ...

03-12 16:20:27.222: D/BluetoothGatt(13578): onCharacteristicWrite() - Device=... UUID=... Status=0

更多信息,我发现每个Transfer Progress只有在它有onCharacteristicWrite回调时才会完成,这意味着所有在收到onCharacteristicWrite回调之前的发送命令将被忽略。

这是我们必须遵循的 Android 流程,还是有任何方法可以设置它跳过回调步骤以加快进度。

我的代码是:

private final BluetoothGattCallback mGattCallback = new BluetoothGattCallback() {
......
@Override
public void onCharacteristicWrite(BluetoothGatt gatt, BluetoothGattCharacteristic characteristic, int status) {
mSending = false;
}
};

private void writeCharacteristic() {
.....

mGattCharacSetIntensity.setValue(data);
mGattCharacSetIntensity.setWriteType(BluetoothGattCharacteristic.WRITE_TYPE_DEFAULT);
mBluetoothGatt.writeCharacteristic(mGattCharacSetIntensity);
return;
}

编辑:我与 iPhone(来自 AppStore 的 BLE 传输数据应用程序)进行了比较,BLE 传输数据非常快(不到 0.5 秒),令人印象深刻。我们如何解决才能加快 Android BLE 传输进度?

编辑:如果我将 BluetoothGattCharacteristic 的 WriteType 设置为 WRITE_TYPE_NO_RESPONSE,并且当我按顺序发送许多命令时,Android 将它们存储在队列中并在收到 writeCharacteristic CallBack 后一个一个地发送到远程设备,这会导致一个问题,当你停止发送,Android 发送进度仍然继续延迟(有时超过 3 秒)。

最佳答案

BLE 链路的性能高度依赖于使用的连接间隔,如果您的连接间隔很高,您看到的性能可能并没有那么不合理。根据核心规范,连接间隔可以在 7.5 毫秒到 4 秒之间,因此具有相当大的灵 active 。

如果可能的话,我建议您尝试更改正在通话的外设以使用更短的连接间隔,这应该会提高性能。您可能需要看一下 this page ,解释 BLE 吞吐量,和 this page , 解释连接参数。

关于Android蓝牙低功耗(ble)writeCharacteristic延迟回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22348470/

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