Ich arbeite an Bluetooth-RFComm-Verbindung. Es gibt eine Zeile in Android Sample, die ich nicht verstehen kann und leider konnte ich in anderen Fragen und Ressourcen keine gute Antwort finden.Ich kann mHandler.obtainMessage() in Android nicht verstehen Bluetooth-Beispiel
Hier wird der gesamte Code ist:
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) { }
}
ich diese Zeile nicht verstehen kann:
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI activity
mHandler.obtainMessage(MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
mHandler
wird in diesem Code definiert und MESSAGE_READ
auch ich kann nicht Verstehen was macht bytes
?
Ich denke und wie im Kommentar erwähnt, sendet es die empfangenen Bytes an die Aktivität, die ich als meine Hauptaktivität eingestellt habe. Kann ich in meiner Hauptaktivität eine Static TextView
anstelle von sendToTarget() machen, um die empfangene Nachricht anzuzeigen?
mHandler ist wahrscheinlich ein Instanzvariable, irgendwo in Ihrer Klasse deklariert. MESSAGE_READ ist wahrscheinlich eine Konstante, die in der Klasse oder über einen statischen Import definiert ist. – assylias