Ich versuche, Daten über BT auf Android-Gerät zu erhalten. Wenn ich Bytes vom Terminal sende (zum Beispiel 0x10 0x20 0x30 0x40) bekomme ich keine Antwort (der Toast taucht nicht auf). Ich möchte Daten im Hexadezimalformat und nicht als String erhalten. Hier ist der Code von Handler:Wie bekomme ich Bytes per Bluetooth in Hexadezimalform?
mHandler = new Handler() {
public void handleMessage(android.os.Message msg)
{if(msg.what == MESSAGE_READ){
try {
byte[] readBuf = (byte[]) msg.obj;
Toast.makeText(MainActivity.this, readBuf[0], Toast.LENGTH_SHORT).show();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
}
};
Ich bin mit Android Studio 2.2.3 Wie empfangenen Bytes in Hex-Form angezeigt werden?
Bearbeiten: anted mit der Funktion byteToHexString() Toast Pop-up nur wenn ich Daten als ASCII-Zeichen sende, geschieht nichts beim Senden als hex. Ich kann es nicht debuggen, weil Android Studio mein Gerät nicht sehen kann. Modified Code in Handler:
byte[] readBuf = (byte[]) msg.obj;
String readMessage = new String(readBuf, 0, msg.arg1);
String HexStr = null;
HexStr = byteToHexString(readBuf);
Toast.makeText(MainActivity.this,HexStr, Toast.LENGTH_SHORT).show();
Edit 2: Ich kann Zahlen erhalten, aber nur aus Bereich 0x30-0x39 - Zahlen Zeichen zugewiesen 1-9 in ASCII. Es scheint, als würde Code von Handler nur beim Empfangen von ASCII-Nummern ausgeführt
Ich weiß nicht, was mache ich falsch, aber Android Studio kann nicht Symbol „DatatypeConverter“ lösen. Ich habe das java.lang.Object-Paket improvisiert. Ich habe verwendet: String HexStr = new String (DatatypeConverter.printHexBinary (readBuf)); Versucht, das Projekt zu säubern, Gradle-Dateien zu synchronisieren, Caches zu deaktivieren. – Juras
Ich habe nicht überprüft, aber es ist durchaus möglich, dass es nicht Teil der Android-API ist, obwohl es Standard-Java ist. Ich werde die Antwort in ein paar Minuten entsprechend aktualisieren. – Luke
@Juras überprüfen Sie es jetzt – Luke