在GATT Android中获得BLE特性的价值

时间:2014-07-12 06:50:44

标签: android bluetooth-lowenergy android-bluetooth gatt

我正在尝试使用以下代码读取特征并获取其值

private byte[] val;

mBluetoothLeService.readCharacteristic(characteristic);// reads it
val=characteristic.getValue();
String s=new String(val);

我的应用程序崩溃给出错误"应用程序可能在其主线程上做了太多工作。"

我也试过

private String s;
 mBluetoothLeService.readCharacteristic(characteristic);// reads it
    s=characteristic.getStringValue(0);

但错误相同

我调试了我的代码以检查它是否获得值

private String s;
     mBluetoothLeService.readCharacteristic(characteristic);// reads it
        s=characteristic.getStringValue(0);
    system.out.println(s);

显示正确的值,但在运行代码为Android App时。我得到了同样的错误。

2 个答案:

答案 0 :(得分:5)

如果我没记错,这可能是因为你在主线程上做了太多工作,你应该在一个单独的线程中或者使用Runnable或AsyncTask进行大量处理。 This SO question might help you.

答案 1 :(得分:0)

当您致电Read时 可以从BluetoothGattCallback获得特征

BluetoothGattCallback mCallback=new BluetoothGattCallback() {

    public void onCharacteristicRead(BluetoothGatt gatt, 
            BluetoothGattCharacteristic characteristic, int status) {

    };
};