Bluetooth transfert de données entre deux appareils Android

J'ai suivi ce guide Android pour la communication Bluetooth

Pour expliquer exactement ce que je veux faire, quand les deux appareils sont connectés, deux activités différentes sur chaque appareil (serveur et client), où sur l'activité du serveur, j'ai des boutons différents, et sur l'activité de client il y a juste un textview.
Je veux être en mesure d'appuyer sur un bouton sur le serveur de périphérique et de l'afficher sur le client.

J'ai réussi à établir une connexion entre les deux appareils, mais maintenant je veux envoyer les données que je n'ai pas été capable de le faire.

Ils donnent ce code pour le transfert de données:

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) { }
}
}

Mais cette ligne génère une erreur

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

Et n'est pas expliqué dans le guide. Je ne sais pas ce que le mHandler est ou fait.

En dehors de l'erreur, je n'ai même pas vraiment où mettre ce code. Devrait-il être dans le second activités (serveur et client) que je l'ouvre ou dans la main? Si dans le Serveur de l'activité, devrait-il être dans le onClick méthode pour tous les boutons avec un autre code octet à envoyer pour chaque bouton? Et dans ce code, comment faire la distinction qui est l'expéditeur et le destinataire?

Avez-vous ajouté des autorisations appropriées dans manifest.xml fichier ?? <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Et <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> ou <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> .

OriginalL'auteur Simpsons | 2014-01-19