2012-04-13 2 views
11

다른 휴대 전화 (모든 휴대 전화)에 연결하고 핸즈프리 기능을 수행하기 위해 Android 폰을 핸즈프리 키트 (자동차 용)로 사용하려고합니다. 핸즈프리 프로파일을 위해 AT 명령을 사용하여 수행 할 수있는 (착신 전화, 거절, 응답 등) 그 이유는 잘 알려진 블루투스 채팅 앱과 반사 장치를 사용하여 모든 장치와의 연결을 설정하기 위해서입니다.핸즈프리 프로필을 통해 Android와 다른 휴대 전화 간의 블루투스 연결

메쏘드 m = device.getClass(). getMethod ("createRfcommSocket", new 클래스 [] {int.class}); tmp = (BluetoothSocket) m.invoke (device, 1);

그러나 핸즈프리 기능을 구현하고 내가 보내는 AT 명령을 이해하려면 연결된 전화기가 UUID를 사용하는 핸즈프리 프로필을 사용해야합니다. "0000111f-0000-1000-8000-00805F9B34FB"

따라서 핸즈프리 프로필에 연결할 수있는 방법이 있습니까?

감사합니다.

+0

Bluecove Library "http://bluecove.org/"를 사용하여 HF Bluetooth 연결을 설정할 수 있었으며 이제는 AT 명령을 사용하여 연결된 전화기에서 호출을 제어하고 관리 할 수 ​​있습니다. 또한 핸즈프리 기능을 완벽하게 사용하려면 연결된 전화기가 음성을 Android로 라우트하지만 싱크 역할이 없기 때문에 음성을 수신하지 못합니다. 나는 SCO 채널이 안드로이드에서 구현되었지만 발신자 역할 (음성을 헤드셋에만 보냄)으로 구현된다는 것을 알고 있습니다. 따라서 안드로이드에서 싱크 역할을 구현할 수있는 방법이 있습니까? 안드로이드의 BlueZ 스택이이를 지원합니까? – mjabdelhadi

+0

이것은 정확히 내가하려는 일입니다. 그 일에 성공 했니? –

답변

3

다른 선택 사항이없는 경우에만이 코드를 사용해야합니다. 이 코드의 1은 RFCOMM 포트입니다. 각 서비스에는 자체 RFCOMM 포트가 있습니다. 이 포트는 일반적으로 1 ~ 31 사이의 임의 번호입니다. 연결하려는 장치에서 서비스 (여기 핸즈프리 프로파일)가 사용하는 포트를 알아야합니다.

try { clientSocket = bluetoothDevice.createRfcommSocketToServiceRecord(serviceUUID); } 
catch (IOException e) 
{ 
    // handle error 
} 

이 코드는 블루투스를 사용하고 사용중인 하나를 교체해야 올바른 방법입니다 : 당신은이 작업을 수행 할 BluetoothDevice 개체에서 createRfcommSocketToServiceRecord 방법을 사용해야합니다.

관련 문제