2012-04-13 42 views
11

Estoy tratando de usar mi teléfono Android como un kit de manos libres (como el de los automóviles) para conectarme a otro teléfono (cualquier teléfono) y realizar algunas funciones de manos libres como (responder a una llamada entrante, rechazar, ... etc.) que se puede hacer usando los comandos AT para el perfil de manos libres. Para eso, estoy usando la conocida aplicación de chat Bluetooth, y la reflexión funciona para establecer una conexión con cualquier dispositivo:Conexión Bluetooth entre Android y otro teléfono a través del perfil Manos libres

Método m = device.getClass(). GetMethod ("createRfcommSocket", new Clase [] {int.class}); tmp = (BluetoothSocket) m.invoke (dispositivo, 1);

Sin embargo, para lograr la funcionalidad de manos libres y comprender los comandos AT que estoy enviando, el teléfono conectado debe estar sobre el perfil de manos libres que usa el UUID: "0000111f-0000-1000-8000-00805F9B34FB"

Por lo tanto, ¿hay alguna forma de lograr una conexión con el perfil de manos libres?

Gracias!

+0

Pude establecer la conexión HF Bluetooth usando Bluecove Library "http://bluecove.org/" y ahora puedo controlar y administrar las llamadas en el teléfono conectado usando los comandos AT. Además, para una funcionalidad completa de manos libres, el teléfono conectado enruta la voz a Android pero no la recibe porque no tiene el rol de Sink. Sé que el canal SCO se implementa en Android pero como una función de origen (para enviar la voz al auricular solamente). Por lo tanto, ¿hay alguna manera de implementar el rol de receptor en Android? ¿Lo soporta la pila BlueZ de Android? – mjabdelhadi

+0

Esto es exactamente lo que estoy tratando de hacer. ¿Has tenido éxito en eso? –

Respuesta

3

Solo debe usar este código cuando no tenga otra opción. El 1 en este código es el puerto RFCOMM. Cada servicio tiene su propio puerto RFCOMM. Este puerto generalmente es aleatorio entre 1 y 31. Necesita saber qué puerto está usando el servicio (aquí el perfil de manos libres) en el dispositivo al que desea conectarse. Usted tiene que utilizar el método createRfcommSocketToServiceRecord del objeto BluetoothDevice para hacer esto:

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

Este código es la forma correcta de utilizar Bluetooth y debe sustituir a la que está utilizando.

Cuestiones relacionadas