[英]Android BLE read Gatt Characteristic
我正在尝试在我的APP中阅读一些蓝牙特性。 现在我对Gatt Server中的特性更改后的处理方法有疑问。 最初,我尝试使用线程一次又一次地为特性重新触发读取:
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数据吗? 还是在我的应用程序端进行更新?
如果您需要任何其他代码,请告诉我。
读取GATT特征是异步操作。 在收到onCharacteristicRead回调之前,结果不可用。
无论如何,您应该将GATT服务器配置为在有新数据要发送时发送通知 ,而不是一直轮询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.