我使用的是Android开发示例项目BluetoothChat。
http://developer.android.com/resources/samples/BluetoothChat/index.html 我上的爱可视43运行它,并试图用串口进行通信的蓝牙适配器。 要与适配器通信,我需要使用UUID 00001101-0000-1000-8000-00805F9B34FB。然而,当我这样做时,我在这一行得到一个空指针异常: socket = mmServerSocket.accept();Android的蓝牙UUID导致异常
如果我使用一个不同的UUID我没有这个问题,但是我无法连接到串行适配器。 如果我使用摩托罗拉Droid而不是爱可视43,我没有这个问题。
从一些错误的信息,我认为爱可视正在使用的bluez堆栈。
任何想法,为什么调用accept()函数时,这个UUID和堆栈的组合会导致异常?
这里是周围的代码从日志(你可以从上面的链接获得整个源)
public void run() {
if (D) Log.d(TAG, "BEGIN mAcceptThread" + this);
setName("AcceptThread");
BluetoothSocket socket = null;
// Listen to the server socket if we're not connected
while (mState != STATE_CONNECTED) {
try {
// This is a blocking call and will only return on a
// successful connection or an exception
socket = mmServerSocket.accept();
} catch (IOException e) {
Log.e(TAG, "accept() failed", e);
break;
}
一些错误形式交往:
04-25 21:05:33.278:ERROR/BluetoothChatService (3321):听()失败
04-25 21:05:33.278:ERROR/BluetoothChatService(3321):产生java.io.IOException:无法注册SDP记录BluetoothChat
04-25 21:05:33.278:ERROR/BluetoothChatService(3321):在android.bluetooth.BluetoothAdapter.listenUsingRfcommWithServiceRecord(BluetoothAdapter.java:778)
感谢您的建议。纵观构造它抛出一个异常,在调用listenUsingRfcommWithServiceRecord() – JohnSantaFe 2011-04-26 03:26:33
从“使用中的错误,例如蓝牙不可用,或者权限不足,或通道” – JohnSantaFe 2011-04-26 03:27:25
发生这种情况时,文档我编辑我的OP,因为错误消息不相关。新消息是重要的,特别是无法注册BluetoothChat的SDP记录。还有其他建议吗? – JohnSantaFe 2011-04-26 03:31:21