java使用(BluetoothGattCharacteristic)特性中的数据创建、写入和保存csv文件。getValue()
我是Andriod dev的新手,我正在尝试构建一个应用程序,该应用程序可以连接到一个Ble设备,该设备可以用来创建CSV文件,并存储具有notify属性的任何特征的值。我已经实现了onCharacteristicChanged(…)一旦订阅了该特性,我就能够接收原始字节
然而,我不知道该如何创建一个CSV文件并写入这些原始字节,直到我取消订阅该特性或断开与设备的连接。请帮忙
编辑: 我正试图用CSVWriter编写它,每次收到onCharacteristicChanged回调时,我都会调用以下方法:
private void broadcastUpdate(final BluetoothGattCharacteristic characteristic, byte[] value){
if(isCharacteristicNotifiable(characteristic)){
String value_str = bytesToHex(value);
if(characteristic.getUuid().toString() == TX_CHARACTERISTIC){
value_str = bytestoformat(characteristic.getValue());
}
String[] line = value_str.split(" ");
Log.i("broadcastUpdate", value_str);
try {
CSVWriter writer = new CSVWriter(new FileWriter(csv, true));
writer.writeNext(line);
writer.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
每次特性更改得到的字节数为2字节或4字节。因此,CSV文件应该在一行中打印4个十六进制值,当只有2个字节的数据时,将2个值留空
但是,如果第一次通知提供了2字节的数据,那么我的整个文件只显示每次更改的2字节数据(即使在第一次通知后收到了4字节的数据)。如果第一个通知有4字节的数据,那么我得到了我想要的
# 1 楼答案
可以像创建任何其他文件一样创建CSV文件。首先打开要写入的文件:
这样写下你的价值观:
不要忘记使用以下选项关闭文件:
编辑: 试着区分这两种可能的状态。一种方式可能是这样的: