我试图通过下面的代码来读取特征并获取其值

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应用程序的形式运行代码时。我也有同样的错误。

最佳答案

如果我没记错的话,这可能是因为你在主线程上做了太多的工作,你应该在一个单独的线程中,或者通过使用runnable或asynctask来完成繁重的处理。This SO question might help you.

07-26 09:39