2012-09-22 2 views
4

안드로이드 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) 

또한 device.getUuids()를 통해 장치가 제공하는 UUID를 사용하여 연결을 시도했지만 그 도움이되지 않았다 중 하나 A2DP 장치에 연결할 수 있습니다.

a2dp 장치에 연결하는 방법에 대한 도움을 주시면 매우 감사하겠습니다. 감사.

+0

이 장치를 검색하여 페어링 할 수 있습니까 –

+0

장치를 검색 할 때 장치를 찾을 수 있습니다. 나는 장치와 소켓 연결을 만드는 것이 자동으로 쌍을 이루는 인상을 받고 있었다. 설정에서 찾기 및 페어링은 문제가되지 않습니다. – Moritz

+0

안녕하세요, 모티츠, 혹시 이걸로 어디서 났는지 물어봐도 될까요? 현재 4.2 + 안드로이드 기기를 A2DP 블루투스 스피커에 연결하려고하고 있으며, 접근 방법을 고민 중입니다. 사전에 도움을 주셔서 감사합니다. – Ted

답변

2

RFCOMM을 통해 A2DP가 수행되지 않으므로 createRfcommSocket API를 사용할 수 없습니다. 데이터는 지정된 프로토콜 mux ID (제어를위한 하나, 스트리밍 데이터를위한 것)를 사용하여 L2CAP 스트림을 통해 직접 전송됩니다.

+0

연결을 설정하는 방법에 대해 좀 더 자세히 설명해 줄 수 있습니까? – Moritz

+0

단순하지 않습니다. 당신은 안드로이드 자바 API를 사용하여 불가능한 L2CAP 소켓을 열어야합니다. C에서 실제 BlueZ 프로그래밍을 시작해야합니다. L2CAP 소켓을 열면 AVDTP 프로토콜을 구현해야합니다. BlueZ 소스에서 오픈 소스 구현을 찾을 수 있습니다. 하지만 블루투스 사양에 대한 액세스 권한이 없으면 힘들 것입니다. – TJD

+1

hm. 내가 원하는 대답이 아니야. 하지만 점프 주셔서 감사합니다. :) – Moritz

관련 문제