2011-04-25 170 views
2

我使用的是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)

回答

0

是否更改了 “类AcceptThread”,在您使用的构造这个函数“listenUsingRfcommWithServiceRecord()”?

我在ARCHOS 70上使用相同的UUID,我没有得到任何蓝牙连接错误(尝试重新启动ARCHOS,如果它间歇性的。)我想添加这个作为评论为某些原因,我没有看到评论!

+0

感谢您的建议。纵观构造它抛出一个异常,在调用listenUsingRfcommWithServiceRecord() – JohnSantaFe 2011-04-26 03:26:33

+0

从“使用中的错误,例如蓝牙不可用,或者权限不足,或通道” – JohnSantaFe 2011-04-26 03:27:25

+0

发生这种情况时,文档我编辑我的OP,因为错误消息不相关。新消息是重要的,特别是无法注册BluetoothChat的SDP记录。还有其他建议吗? – JohnSantaFe 2011-04-26 03:31:21

0

它结束了该问题与来自爱可视固件更新解决。