2012-09-22 440 views
4

我想搭配一個Android設備運行Android 4.1與a2dp能夠音頻接收器。我可以做到這一點沒有藍牙設置屏幕的問題,但我很努力地在代碼中做到這一點。如何連接到藍牙a2dp設備?

基本上我能夠發現設備,但我無法通過套接字連接到它。也許我使用了錯誤的UUID,或者我應該使用預定義的android.bluetooth.BluetoothA2dp類。這是我在做什麼:

UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); 
socket = device.createInsecureRfcommSocketToServiceRecord(uuid); 
socket.connect(); 

但我收到一個異常,說明它無法連接。

java.io.IOException: Service discovery failed 
at android.bluetooth.BluetoothSocket$SdpHelper.doSdp(BluetoothSocket.java:403) 
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:213) 

我也曾嘗試使用該設備提供的UUID通過device.getUuids()連接,但這些並沒有幫助任何連接到A2DP設備。

任何關於如何連接到a2dp設備的幫助將不勝感激。謝謝。

+0

您是否可以搜索並與此設備配對 –

+0

我可以在搜索設備時找到該設備。我的印象是,與設備建立套接字連接會自動將它們配對。在設置中查找和配對是沒有問題的。 – Moritz

+0

嗨Mortiz,我可以問問你有沒有這個地方?我正在嘗試將4.2+ Android設備連接到A2DP藍牙揚聲器,並且正在努力解決如何處理它。感謝您提前提供任何幫助。 – Ted

回答

2

A2DP沒有通過RFCOMM完成,因此您不能使用createRfcommSocket API。數據通過指定的協議多路複用器ID(一個用於控制,另一個用於流數據)通過L2CAP流直接傳輸。

+0

您可以詳細瞭解如何設置連接嗎? – Moritz

+0

這並不簡單。你需要打開一個L2CAP套接字,這是不可能使用android java API的。你必須進入C語言的實際BlueZ編程。一旦你打開一個L2CAP套接字,你必須實現AVDTP協議。您可以在BlueZ源代碼中找到開源實現。但除非您有權訪問藍牙規格,否則將會很困難。 – TJD

+1

hm。不是我希望的答案。但謝謝你跳進去。:) – Moritz