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

Android蓝牙应用程序挂起在cancelDiscovery调用中,android,bluetooth,android-bluetooth,Android,Bluetooth,Android Bluetooth,我的Android应用程序非常简单。它所做的只是无限地执行以下循环(伪代码) 问题是它的工作非常不稳定。迟早,但它总是被冻结。调试器显示,在Android的深处,调用initSocketNative失败。以下是日志的摘录 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.blue

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

问题是它的工作非常不稳定。迟早,但它总是被冻结。调试器显示,在Android的深处,调用
initSocketNative
失败。以下是日志的摘录

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)
11-07 17:00:57.969:WARN/System.err(1473):java.io.IOException:未知错误:0
11-07 17:00:57.969:WARN/System.err(1473):在android.bluetooth.BluetoothSocket.initSocketNative(本机方法)
11-07 17:00:57.969:WARN/System.err(1473):在android.bluetooth.BluetoothSocket上。(BluetoothSocket.java:153)
11-07 17:00:57.969:WARN/System.err(1473):在android.bluetooth.BluetoothServerSocket.(BluetoothServerSocket.java:77)
11-07 17:00:57.969:WARN/System.err(1473):在android.bluetooth.BluetoothAdapter.createNewRfcommSocketAndRecord(BluetoothAdapter.java:983)
11-07 17:00:57.969:WARN/System.err(1473):在android.bluetooth.BluetoothAdapter.listenUsingRfcommWithServiceRecord(BluetoothAdapter.java:935)
11-07 17:00:57.969:WARN/System.err(1473):位于com.mobileleader.sync.obex.connection.BluetoothConnection$AcceptThread.run(BluetoothConnection.java:136)
崩溃发生后,所有后续调用
adapter.isDiscovering()
返回
true
,Android忽略所有调用
cancelDiscovery()
。有一次,我已经等了10分钟(只是为了实验),直到它苏醒过来。当然不走运

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


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

你的伪代码中的“等待”是什么意思?你是说你监听12秒还是调用这个线程的wait方法?发布真正的代码会很有帮助。没有任何代码就无法调试没有任何意义。@Tom,问题在startDiscovery内部,不管“等待”是什么意思。真正的代码是多线程的,并且正确地进行了同步/访问,此外,我花了很多时间来缩小问题源代码的范围。别浪费时间看我的代码,我知道我在做什么
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)