2011-04-25 173 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

它結束了該問題與來自愛可視固件更新解決。