gpt4 book ai didi

android - BluetoothGattServerCallback : onCharacteristicReadRequest() called multiple times

转载 作者:行者123 更新时间:2023-11-29 02:37:19 28 4
gpt4 key购买 nike

我有一部 Android 手机充当中央设备,另一部 Android 手机充当外围设备。

我正在从 Central 请求读取外围设备的特性,使用 mBluetoothGatt.readCharacteristic ( characteristic )

上外设,方法

void onCharacteristicReadRequest ( // Bluetooth GATT Server Callback Method
BluetoothDevice device,
int requestId,
int offset,
BluetoothGattCharacteristic characteristic
)

调用,我正在做两件事: 1. 初始化一个byte[]值,以byte形式存储String。 2. 使用方法 mGattServer.sendResponse() 向客户端发送响应。

@Override public void onCharacteristicReadRequest (
BluetoothDevice device, int requestId, int offset,
BluetoothGattCharacteristic characteristic ) {
super.onCharacteristicReadRequest ( device, requestId, offset, characteristic );
String string = "This is a data to be transferred";
byte[] value = string.getBytes ( Charset.forName ( "UTF-8" ) );
mGattServer.sendResponse ( device, requestId, BluetoothGatt.GATT_SUCCESS, 0, value );
}

我的问题是,当我从中央设备发出一次读取请求时,上述方法被多次调用。

因此,我在中央设备上获取的数据类似于

这是要传输的数据这是要传输的数据这是...

我也尝试过其他特性。但是对于那些,回调方法被调用一次。

你能指出我哪里做错了吗?

编辑:从外围设备,我调试过我正在发送 32 字节的数据。当我将 string 值从 This is a data to be transferred 更改为 DATA 时,方法 onCharacteristicReadRequest() 调用仅一次。

对字段 string 的进一步实验使我得出结论,即响应中要发送的最大字节数是 21 字节。如果是这样,那我应该如何从GATT Server发送response,让Central Device才能得到准确的数据呢?

最佳答案

在android中如何处理大文本

    private String data = "123456789123456789123xx";

让上面是你的文字

接下来就是onCharacteristicReadRequest()的实现

@Override
public void onCharacteristicReadRequest(BluetoothDevice device,
int requestId, int offset,
BluetoothGattCharacteristic characteristic) {

super.onCharacteristicReadRequest(device, requestId, offset, characteristic);

byte value[] = data.getBytes();
value = Arrays.copyOfRange(value,offset,value.length);
gattServer.sendResponse ( device, requestId,
BluetoothGatt.GATT_SUCCESS, offset, value );
}

所以基本上在每次调用偏移量时都会传输数据量,因此在下次调用此方法时,您应该只发送偏移量到数据长度

这与@Вадзім Жукоўскі 所说的相同,但对于 C#

感谢@Вадзім Жукоўскі 指出这一点

关于android - BluetoothGattServerCallback : onCharacteristicReadRequest() called multiple times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46317971/

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