我正在尝试在我的 APP 中读取一些蓝牙特性。现在我有一个问题,从我的 Gatt 服务器更改特性后该怎么做。起初,我尝试使用线程一次又一次地重新触发对特征的读取,如下所示:
new Thread(new Runnable() {
@Override
public void run() {
int[] newData = new int[30];
while(true){
try{
for(int i=0;i<newData.length;i++){
newData[i] = 0;
}
BluetoothGatt tmpGatt = refExtDataClass.getRefBluetoothGatt();
tmpGatt.readCharacteristic(characteristic);
byte[] value = characteristic.getValue();
for(int i=0;i<newData.length;i++){
newData[i] = value[i];
}
refExtDataClass.setNmData(newData);
}catch(Exception e){
break;
}
}
}
}).start();
但问题是数据似乎在某一时刻损坏了(就像我总是从我的 MCU 端将相同的数据写入特征)。
是否允许像这样读取 BLE 数据?是否有任何建议的方式来一直读取 BLE 数据?或者在我的应用程序端更新它?
如果您需要任何其他代码,请告诉我。