我有一个功能,它会连续检查蓝牙的输入流的值:
private final Runnable refresh_input = new Runnable() {
@Override
public void run() {
bt_read_input = GlobalVar.bt_input;
refresh_handler.postDelayed(refresh_input, 250);
}
};
然后是另一个通过蓝牙发送十六进制字符串的函数,然后检查上面bt_read_input
的变量,看看是否收到了答案。
答案是另一个十六进制字符串,如2b0000
。
如果我收到这个答案,该应用程序就可以了。但有时应用程序崩溃了,我意识到这是因为有时候,我收到了2次,而不是收到完整的字符串,如:
1. 2b
2. 0000
所以我必须实现一个检查它的函数。我认为这个函数可能就像我收到的byte []长3个字节(2b0000 = 3byte),然后就可以了,但如果小于3,那么它应该将接收的部分添加到一个新的byte []中,再次检查缺失的部分,并添加它以获得完整的字节[]。
我用这种方式启动了这个功能:
private byte[] ConfMsgCheck(byte[] b) { //b = bt_read_input
byte[] ConfByte = new byte[3];
if (b.length == 3) {
ConfByte = b;
}
else if (b.length < 3) {
ConfByte = b;
//here is where I don't know how to continue, because I should do something like a loop
//that checks again the value of b (bt_read_input) and adds it again to ConfByte.
}
return ConfByte;
}