我正在使用Android的Android应用程序中使用BLE。我想写一个我所连接的设备服务的特性。
我的功能是:
public void writeCharacteristic(BluetoothGattCharacteristic characteristic,
boolean enabled, String text) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
characteristic.setValue("7");
boolean status = mBluetoothGatt.writeCharacteristic(characteristic);
}
我不知道为什么价值不是写在特征内。 我按照此链接中的步骤操作: write with BLE
有谁知道为什么我的代码不起作用?
非常感谢你。 此致
Pd积。为我的英语道歉。
答案 0 :(得分:2)
也许您的characteristic
接受byte[]
值。尝试将characteristic
参数转换为String
,将byte[]
值设置为字节数组。你的方法应该是这样的:
public void writeCharacteristic(BluetoothGattCharacteristic characteristic,
String text) {
if (mBluetoothAdapter == null || mBluetoothGatt == null) {
Log.w(TAG, "BluetoothAdapter not initialized");
return;
}
byte[] data = hexStringToByteArray(text);
characteristic.setValue(data);
boolean status = mBluetoothGatt.writeCharacteristic(characteristic);
}
private byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character
.digit(s.charAt(i + 1), 16));
}
return data;
}
另请注意,如果写入操作已启动,status
变量将返回true
。因此,为了获得写操作结果状态,请使用onCharacteristicWrite
的{{1}} callback并检查其中的状态。
答案 1 :(得分:1)
在尝试不同功能和表格的计算机上度过了整个上午后,我找到了解决方案,感谢工作中的朋友。 我们必须将文本转换为byte,然后将该字节放入字节数组并发送。固定的。
byte pepe = (byte) Integer.parseInt(text);
byte[] charLetra = new byte[1];
charLetra[0] = pepe;
LumChar.setValue(charLetra);
boolean status = mBluetoothGatt.writeCharacteristic(LumChar);
无论如何,非常感谢你的帮助。
问候。