天天看點

Android藍牙inputstream,Android使用inputStream從藍牙讀取

我編寫了一個程式,它不斷通過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,我将它轉換為字元。在沒有别的東西要讀取程式時,在讀完所有内容後也使用這種方法。有沒有人知道一種方式,我可以繼續閱讀,直到所有的資料被讀取?