我正在尝试使用以下代码读取特征并获取其值
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时。我得到了同样的错误。
答案 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) {
};
};