Android BLE阅读Gatt特色

时间:2016-09-28 08:17:26

标签: android bluetooth-lowenergy gatt characteristics

我正在尝试在我的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数据?或者在我的App端更新它?

如果您需要任何其他代码,请告知我们。

1 个答案:

答案 0 :(得分:1)

读取GATT特征是一种异步操作。在收到onCharacteristicRead回调后,结果才可用。

无论如何,您应该将GATT服务器配置为在发送新数据时发送notifications,而不是一直轮询它。