studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java android bluetooth transfer

java - programacion - Transferencia de datos Bluetooth entre dos dispositivos Android



manual de programacion android pdf (5)

He estado siguiendo esta guía de Android para la comunicación Bluetooth

Para explicar exactamente lo que quiero hacer, cuando los dos dispositivos están emparejados, se abren dos actividades diferentes en cada dispositivo (servidor y cliente) donde en la actividad del servidor tengo diferentes botones, y en la actividad del cliente solo hay una vista de texto. Quiero poder presionar un botón en el dispositivo del servidor y mostrarlo en el cliente.

He logrado establecer una conexión entre los dos dispositivos, pero ahora quiero enviar datos que no he podido hacer.

Dan este código para la transferencia de datos:

private class ConnectedThread extends Thread { private final BluetoothSocket mmSocket; private final InputStream mmInStream; private final OutputStream mmOutStream; public ConnectedThread(BluetoothSocket socket) { mmSocket = socket; InputStream tmpIn = null; OutputStream tmpOut = null; // Get the input and output streams, using temp objects because // member streams are final try { tmpIn = socket.getInputStream(); tmpOut = socket.getOutputStream(); } catch (IOException e) { } mmInStream = tmpIn; mmOutStream = tmpOut; } public void run() { byte[] buffer = new byte[1024]; // buffer store for the stream int bytes; // bytes returned from read() // Keep listening to the InputStream until an exception occurs while (true) { try { // Read from the InputStream bytes = mmInStream.read(buffer); // Send the obtained bytes to the UI activity mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer) .sendToTarget(); } catch (IOException e) { break; } } } /* Call this from the main activity to send data to the remote device */ public void write(byte[] bytes) { try { mmOutStream.write(bytes); } catch (IOException e) { } } /* Call this from the main activity to shutdown the connection */ public void cancel() { try { mmSocket.close(); } catch (IOException e) { } } }

Pero esta línea genera un error

// Send the obtained bytes to the UI activity mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer).sendToTarget();

Y no se explica en la guía. No sé qué es o qué hace el mHandler.

Además del error, ni siquiera entiendo dónde poner este código. ¿Debería ser en las segundas actividades (servidor y cliente) que abro o en el principal? Si en la actividad Servidor, ¿debería estar en el método onClick para todos los botones con un código de bytes diferente para enviar para cada botón? Y en este código, ¿cómo distinguimos quién está enviando y quién está recibiendo?


Consulte el ejemplo de BluetoothChat que proporciona Google en el SDK. Le mostrará cómo implementar el envío básico de texto a través de bluetooth.


También puedes probar el ejemplo del tutorial aquí


¿Puedes describir el error tal como lo has visto?

Según lo informado por Ankit y Addy, BlueToothChat es el mejor código para referirse. Realice un experimento cargándolo en 2 dispositivos Android: use uno como servidor otro como cliente para intercambiar los mensajes entre ellos. Tal experimento lo ayudará a comprender su código y decidir su lógica de codificación.


enter code here Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { byte[] writeBuf = (byte[]) msg.obj; int begin = (int)msg.arg1; int end = (int)msg.arg2; switch(msg.what) { case 1: String writeMessage = new String(writeBuf); writeMessage = writeMessage.substring(begin, end); break; } } };


mHandler se usa para pasar mensajes de tu BluetoothHandle.java a tu Actividad. Esto lo ayudará a actualizar los mensajes en su pantalla que son devueltos por BluetoothHandler.

debe crear mHandler a partir de su actividad y llamar a su controlador de esta manera:

mBluetoothHandler = new BluetoothHandler(this, mHandler);

y tu BluetoothHandler.java tiene un constructor como este -

public class BluetoothHandler { public BluetoothHandler(Context context, Handler handler) { mAdapter = BluetoothAdapter.getDefaultAdapter(); mState = STATE_NONE; mHandler = handler; mcontext = context; } }

Para obtener más detalles, consulte el proyecto de muestra de Android de Bluetooth Chat . También puede usar este enlace: http://myandroidappdevelop.blogspot.in/2013/05/bluetooth-chat-example.html