2014-02-14 3 views
0

나는 2 개의 안드로이드 폰을 가지고 있으며 그 중 하나를 헤드셋으로 변환 할 수있었습니다 (예, 나는 그 전화를 뿌리 뽑았습니다). 전화로 수신 전화가 수신되면 헤드셋 에뮬레이트 된 전화기는 헤드셋과 관련된 작업 (예 : 전화 선택, 통화 끊김) 등을 수행 할 수 있습니다. 그러나 전화기에서 헤드셋으로 오디오 전송은 누락됩니다 -장치.SCO 소켓에서 데이터에 액세스

2 명의 안드로이드 폰과 음성 데이터에 액세스하는 동안 SCO 연결을 설정 한 경험이있는 사람이 있습니까? (현재로서는 음질에 관심이 없습니다.)

나는 A2DP를 발견했지만, 그것은 단방향이다. SCO 만 양방향 음성 데이터 전송입니다.

도움이나 조언을 주시면 감사하겠습니다.

답변

1

나는 리플렉션을 통해 이것을 수행했다. 그것은 특정 장치에서만 작동했습니다. 모두가 아닙니다. 내가 그 장치를 뿌리 뽑지는 않았지만.

Class cls = Class.forName("android.bluetooth.BluetoothDevice"); 
Method method = cls.getDeclaredMethod("createScoSocket", (Class[])null); 
BluetoothSocket scoSocket = (BluetoothSocket)method.invoke(device, null); 
scoSocket.connect(); 

또한 당신이 당신의 오디오를 재생할 때 사용할 수있는 AudioManager.startBluetoothSco()와 AudioManager.setBluetoothScoOn (참) 방법이있다.

+0

응답 해 주셔서 감사합니다. 나는이 메커니즘을 시도했다. 그러나 SCO 소켓을 열고 오디오를 라우팅하는 것은 저에게 효과적이지 않았습니다. 너와 어떤 장치가 작동했는지 말해 줄 수 있니? Galaxy Nexus 3 (이전 BT 스택을 가지고 있기 때문에 4.1.1 실행)을 사용합니다. – amsurana

+0

Nexus 7 또는 Nexus 4 또는 Samsung Galaxy 2에서는 작동하지 않습니다. 따라서 휴대 전화에서는 작동하지 않을 수도 있습니다. 나는 모른다. –

+0

사용 사례에 따라 작동하지 않을 수 있습니다. 이제 GingerBread에서 ScoSocket 구현을 살펴보고 있습니다. 이 클래스는 향후 릴리스에서 제거되었습니다. 도움 주셔서 감사합니다. – amsurana