我正在尝试通过 android 设备上的 bt 接收数据。当我从终端发送字节时(例如 0x10 0x20 0x30 0x40),我没有得到任何响应(Toast 没有弹出)。我不想以十六进制而不是字符串的形式获取数据。这是处理程序的代码:
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 如何以十六进制形式显示接收到的字节?
编辑:使用函数 byteToHexString() Toast 仅在我以 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();
编辑 2:我可以接收数字,但只能从 0x30-0x39 范围内接收数字 - 分配给 ASCII 字符 1-9 的数字。似乎来自处理程序的代码仅在接收 ASCII 数字时执行