Lectura de datos desde un dispositivo bluetooth en android
Estoy usando chat bluetooth para poder conectar y recibir datos de un dispositivo bluetooth.
Utilizo el siguiente código para leer datos:
- Problemas con la importación de clases de plataformas Android
- Cómo combinar mapas de bits en android?
- Retrofit - android.os.NetworkOnMainThreadException
- Error en algunos dispositivos - no se pudo encontrar la clase 'com.google.android.gms.measurement.internal.zzz'
- Soporte de difusión celular en Android?
public void run() { byte[] buffer = new byte[1024]; int bytes; Log.v("MR", "start listening...."); // Keep listening to the InputStream while connected while (true) { try { // Read from the InputStream Log.d("MR", "buffer in try"); bytes = mmInStream.read(buffer); Log.d("MR", "input stream :"+(new String(buffer))); // Send the obtained bytes to the UI Activity mHandler.obtainMessage(Conn.MESSAGE_READ, bytes, -1, buffer).sendToTarget(); Log.d("MR", "buffer after"); } catch (Exception e) { Log.e("MR", "Error :"+e.getMessage()); // connectionLost(); // break; } Log.d("MR", "buffer after while"); } }
El dispositivo está enviando datos todo el tiempo sin detenerse.
Con el código anterior recibo el mensaje de:
Log.d("MR", "buffer in try");
Entonces va a la siguiente línea:
bytes=mmInStream.read(buffer);
Y nunca vuelve de esa llamada. Supongo que esto es porque comienza a leer datos desde el dispositivo y no se detiene hasta que se desconecta. ¿Cómo puedo leer una cierta cantidad de bytes a la vez?
EDITAR
A menos que permanezca en los bytes = mmInStream.read(buffer);
Código debido a que no obtiene ningún dato de nuevo desde el dispositivo?
- Ejecutar aplicación dos veces para trabajar
- Excluir recursos predefinidos en el archivo apk
- Error: - Error de ejecución de la tarea ': app: dexDebug' en android studio
- La aplicación android no libera Bluetooth correctamente al salir
- ListView onScroll añadir más elementos
- ListView aleatorio IndexOutOfBoundsException en Froyo
- Sustitución de recursos en tiempo de ejecución
- Uso de fuentes tipo otf en el estudio de Android
Utilizo DataInputStreams en lugar de otro como usted puede hacer un método de readFully () que espera leer cierto número de bytes antes de volver. Configure la conexión BT de la siguiente manera:
BluetoothDevice btDevice = bta.getRemoteDevice(macAddress); BluetoothSocket btSocket = InsecureBluetooth.createRfcommSocketToServiceRecord( btDevice, UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"), false); btSocket.connect(); InputStream input = btSocket.getInputStream(); DataInputStream dinput = new DataInputStream(input);
Después más adelante cuando quiero leer uso readFully:
dinput.readFully(byteArray, 0, byteArray.length);
- Porcentaje de llenado de Android del diseño
- Cómo rellenar la imagen dentro de ImageView por la costumbre de la izquierda y la coordenada superior | Androide