2011-09-01 15 views
10

Estoy desarrollando una aplicación que debería conectar 2 dispositivos Android a través de Bluetooth automáticamente. Digamos que ya están emparejados. ¿Es posible lograr eso?¿Cómo conectar de forma programada 2 dispositivos Android con bluetooth?

+1

Es posible, echar un vistazo a: http://developer.android.com /guide/topics/wireless/bluetooth.html –

+1

En el lado negativo, tal aplicación, por ejemplo que está constantemente buscando una conexión, afectará adversamente la duración de la batería. No es Buena idea. –

Respuesta

18

Por supuesto que es posible. Voy a hacer un breve tutorial de la documentación:

Comience con el BluetoothAdapter - es su administrador de Bluetooth.

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 

Si bluetoothAdapter es nula, significa que este dispositivo Android no es compatible con Bluetooth (No tiene radio Bluetooth. Aunque creo que es raro encontrar estos dispositivos ...)

A continuación, asegúrese Bluetooth es en:

if (!bluetoothAdapter.isEnabled()) { 
     Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
     startActivityForResult(enableBtIntent, request_code_for_enabling_bt); 
} 

Si no está encendido, empezamos la actividad que pide al usuario para que pueda.

Digamos que el usuario habilitó (supongo que debe verificar si lo hizo, hágalo en su método onActivityResult). Podemos consultar a los dispositivos vinculados:

Set<BluetoothDevice> pairedDevices = bluetoothAdapter.getBoundedDevices(); 

Entonces bucle sobre ellas: for(BluetoothDevice device : pairedDevices) y encontrar la que desea conectarse.

vez que haya encontrado un dispositivo, crear un socket para conectarlo:

BluetoothSocket socket = device.createRfcommSocketToServiceRecord(YOUR_UUID); 

YOUR_UUID es un objeto UUID contiene una identificación especial de su aplicación. Lea sobre esto here.

Ahora, intento de conexión (el dispositivo que está intentando conectarse debe tener un socket creado con el mismo UUID en modo de escucha):

socket.connect(); 

connect() bloques el hilo hasta que la conexión se establece, o se produce un error, se lanzará una excepción en este caso. Entonces debe llamar al connect en un hilo separado.

¡Y allí! Estás conectado a otro dispositivo. Ahora obtenga los flujos de entrada y salida:

InputStream is = socket.getInputStream(); 
OutputStream os = socket.getOutputStream(); 

y puede comenzar a enviar/recibir datos. Tenga en cuenta que ambas acciones (enviar y recibir) son bloqueando, por lo que debe llamarlas desde hilos separados.

Leer más sobre esto, y encontrar la manera de crear el servidor (Aquí hemos creado un cliente) en el Bluetooth documentation.

+1

gracias, ya lo he implementado en mi aplicación hace un tiempo, lo califiqué todo, sin embargo su respuesta es muy buena y la estoy marcando como aceptada. – Miky

+0

@Miky nos puede mostrar su implementación – jaimin

+0

@jaimin Lo siento, la conexión Bluetooth automática nunca funcionó satisfactoria para mí.Tuve que elegir WiFi como alternativa. – Miky

Cuestiones relacionadas