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