我編寫了一個程式,它不斷通過SPP從藍牙讀取資料,并将資料流中的内容列印到編輯文本框中。我有以下線程:
myTimer = new Timer();
myTimer.schedule(new TimerTask(){
@Override
public void run(){
TimerMethod();
}
},0,1000);
private void TimerMethod(){this.runOnUiThread(startReading);}
private Runnable startReading = new Runnable(){
public void run(){
EditText _txtArea = (EditText) findViewById(R.id._txtArea);
try{
inStream = btSocket.getInputStream();
}catch (IOException e3) {
_txtArea.append("inStream establishment Failed!");
}現在,消息的傳入可以是任何大小,我想繼續閱讀,直到沒有剩下要讀的東西。我嘗試了一個實作,我做了這樣的事情:
byte[] msgIn = new byte[15];
inStream.read(msgIn, 0, 15);
int len = msgIn.length;
for (int i=0; i
out = new Character ((char) msgIn[i]).toString();
_txtArea.append(out);但是這限制了讀取到15個位元組,并且代碼看起來不太有效。如果有人想知道為什麼我有以下行=新字元((char)msgIn [i])。toString();這是因為進入的資料是ASCII,我将它轉換為字元。在沒有别的東西要讀取程式時,在讀完所有内容後也使用這種方法。有沒有人知道一種方式,我可以繼續閱讀,直到所有的資料被讀取?