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:

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?

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); 
  • Establecer credenciales en una vista Web de Android mediante una conexión HTTPS segura
  • Sesión de manejo en android mientras se registra en el lado del servidor en php
  • {Entrada de Facebook} java.lang.NoClassDefFoundError: android.support.v4.content.LocalBroadcastManager
  • Expresión regular de Android: devuelve la cadena correspondiente
  • Qué cosas se ejecutan en el hilo principal de la interfaz de usuario al abrir una aplicación para Android
  • El detector de progreso de subida no se disparó (API de unidad de Google)
  • ¿Cómo desarrollar una caminata a través del diálogo que aparece en el primer lanzamiento?
  • Envío de solicitud de publicación HTTP con Android
  • array = java.lang.IndexOutOfBoundsException: Rango de matriz no válido de 10 a 10
  • Actividad que extiende ActionBarActivity y YouTubeBaseActivity
  • ¿Qué es exactamente un widget?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.