Я пытаюсь получить данные через bt на устройстве Android. Когда я отправляю байты из терминала (например, 0x10 0x20 0x30 0x40), я не получаю никакого ответа (Toast не всплывает). Я не хочу получать данные в шестнадцатеричном виде, а не как строку. Вот код из обработчика:Как получить полученные байты через bluetooth в шестнадцатеричном формате?
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();
}
}
}
};
Я использую Android Studio 2.2.3 Как отображать полученные байты в шестнадцатеричном виде?
Редактировать: afted с использованием функции byteToHexString() Тост появляется только тогда, когда я отправляю данные как символы ASCII, при отправке в качестве шестнадцатеричного кода ничего не происходит. Я не могу отладить его, потому что Android Studio не может видеть мое устройство. Модифицированный код в обработчик:
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: Я могу получить номера, но только из диапазона 0x30-0x39 - номера, присвоенные символов 1-9 в ASCII. Кажется, что код из обработчика выполняется только при получении ASCII-номеров
Я не знаю, что я делаю неправильно, но Android-студия не может разрешить символ «DatatypeConverter». Я получил пакет java.lang.Object. Я использовал: String HexStr = new String (DatatypeConverter.printHexBinary (readBuf)); Пробовал также проект очистки, синхронизация файлов Gradle, Invalidate caches. – Juras
Я не проверял, но вполне возможно, что он не является частью Android API, несмотря на стандартную Java. Я обновлю ответ в течение нескольких минут. – Luke
@ Juras проверить это сейчас – Luke