Hallo,
nachdem ich nur Probleme mit meinem eigenen Skript zum Abrufen von Daten über Bluetooth hatte, habe ich das Bluetooth Chat Example von Google übernommen bzw. leicht modifiziert.
Um den eingehenden String zu einem großen zu machen füge ich einfach alles eingehende zusammen, bis das Stop Zeichen kommt. Das klappt auch soweit, nur das sich das eingehende irgendwie vermischt. Eigentlich sollte es so aussehen:
Zeile 1 (Infos)
Zeile 2 - n (jeweils 6 Werte durch ";" getrennt)
Stop
Allerdings bekomme ich abundzu vermischte Zeilen, wenn ich das Example kompiliere und installiere habe ich das gleiche Ergebnis. Woran kann das liegen?
Hier die wichtigen Zeilen:
BluetoothChatService
@Override
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[1024];
int bytes;
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
// Start the service over to restart listening mode
BluetoothChatService.this.start();
break;
}
}
}
Alles anzeigen
Handler, welche die Nachricht Empfängt:
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
// construct a string from the valid bytes in the buffer
String readMessage = new String(readBuf, 0, msg.arg1);
allIn += readMessage;
if(allIn.contains("ENDE")){
h.obtainMessage(0, allIn).sendToTarget();
mChatService.stop();
}
Log.i("IN:", readMessage);
break;
Alles anzeigen
Kann sich das einer erklären?