我试图通过下面的代码来读取特征并获取其值
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.