Lire les données du périphérique bluetooth dans Android

J'utilise le bluetooth pour connecter et recevoir des données à partir d'un appareil bluetooth.

J'utilise le code suivant pour lire les données:

  • Android Studio collé sur "Gradle: résoudre les dépendances" _debugCompile '"ou" détachéConfiguration1 "
  • La méthode getApplicationContext () est indéfinie - problèmes de fragments
  • Performance Android: fichier plat vs SQLite
  • Comment choisir une image de la galerie (carte SD) pour mon application?
  • Animation personnalisée pour Toast enter / exit?
  • Comment forcer l'application à créer une miniature (capture instantanée) pour la liste des applications récentes?
  • 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"); } } 

    L'appareil envoie des données tout le temps sans s'arrêter.

    Avec le code ci-dessus, je reçois le message de:

     Log.d("MR", "buffer in try"); 

    Alors il va à la ligne suivante:

     bytes=mmInStream.read(buffer); 

    Et ne retourne jamais de cet appel. Je suppose que c'est parce qu'il commence à lire les données à partir du périphérique et ne s'arrête pas jusqu'à ce qu'il se déconnecte. Comment puis-je lire une certaine quantité d'octets à la fois?

    MODIFIER

    Sauf s'il reste sur les bytes = mmInStream.read(buffer); Code en raison du fait qu'il ne récupère aucune donnée sur le périphérique?

  • Y a-t-il d'énormes différences entre objective-c et Java, iPhone ou Android?
  • Liste de permissions Android XML complète
  • Est-il possible de prendre une capture d'écran et de tester des valeurs de pixels avec un expresso?
  • Application Javascript dans Android
  • Android - Obtenir Contact Photo du numéro de téléphone
  • Impossible d'obtenir le numéro de version ADT requis du SDK
  • One Solution collect form web for “Lire les données du périphérique bluetooth dans Android”

    J'utilise DataInputStreams au lieu de pouvoir utiliser une méthode readFully () qui attend un certain nombre d'octets avant de revenir. Je configure la connexion BT comme ceci:

     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); 

    Puis plus tard, quand je veux lire, j'utilise readFully:

     dinput.readFully(byteArray, 0, byteArray.length); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.