0

我的 Android 应用程序非常简单。它所做的只是无限执行以下循环(伪代码)

int longEnough = 12sec;
if (btAdapter.isDiscovering()){
  btAdapter.cancelDiscovery();
}else{
  btAdapter.startDiscovery();
  wait(longEnough);
}

问题是它的工作非常不稳定。迟早,但它总是被冻结。调试器显示在 Android 内部某处,调用initSocketNative不成功。这是logcat的摘录

11-07 17:00:57.969: WARN/System.err(1473): java.io.IOException: Unknown error: 0
11-07 17:00:57.969: WARN/System.err(1473): at android.bluetooth.BluetoothSocket.initSocketNative(Native Method)
11-07 17:00:57.969: WARN/System.err(1473): at android.bluetooth.BluetoothSocket.<init>(BluetoothSocket.java:153)
11-07 17:00:57.969: WARN/System.err(1473): at android.bluetooth.BluetoothServerSocket.<init>(BluetoothServerSocket.java:77)
11-07 17:00:57.969: WARN/System.err(1473): at android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:983)
11-07 17:00:57.969: WARN/System.err(1473): at android.bluetooth.BluetoothAdapter.listenUsingRfcommWithServiceRecord(BluetoothAdapter.java:935)
11-07 17:00:57.969: WARN/System.err(1473): at com.mobileleader.sync.obex.connection.BluetoothConnection$AcceptThread.run(BluetoothConnection.java:136)

崩溃发生后,所有后续调用adapter.isDiscovering()returntrue和 Android 忽略所有调用cancelDiscovery(). 有一次,我一直在等待 10 分钟(只是为了实验)直到它恢复。当然,没有运气。

测试环境包括一些 2.3.x 的 Android 设备。

问题是:我面对的是什么?

4

0 回答 0