Android蓝牙应用程序在cancelDiscovery的调用中挂起

时间:2013-11-07 13:48:19

标签: android bluetooth android-bluetooth

我的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()所有后续调用true和Android都会忽略cancelDiscovery()的所有来电。有一次,我一直在等待10分钟(只是为了实验),直到它复活。当然没有运气。

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

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

0 个答案:

没有答案