Я использую следующий код (из примера приложения Bluetooth Chat), чтобы прочитать входящие данные и создать строку из прочитанных байтов.Я хочу читать, пока эта строка не прибыла <!MSG>
.Как вставить это условие с помощью функции read ()?
Вся строка выглядит следующим образом <MSG><N>xxx<!N><V>yyy<!V><!MSG>
.Но функция read () не читает всю строку сразу.Когда я отображаю символы, я не вижу все символы в одной строке.Это выглядит так:
Отправитель: <MS
Отправитель: G><N>xx
Отправитель: x<V
.
.
.
Я отображаю символы на своем телефоне (HTC Desire) и отправляю данные с помощью гипертерминала Windows.
Как убедиться, что все символы отображаются водна строка?Я попытался использовать StringBuilder и StringBuffer вместо новой String (), но проблема в том, что функция read () не читает все отправленные символы.Длина входного потока (в байтах) не равна фактической длине отправляемой строки.Построение строки из прочитанных байтов происходит хорошо.
Спасибо за любые предложения и время, потраченное на это.Также, пожалуйста, не стесняйтесь предлагать другие ошибки или лучший способ сделать что-то ниже, если таковые имеются.
Приветствия,
Madhu
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
//Writer writer = new StringWriter();
byte[] buffer = new byte[1024];
int bytes;
//String end = "<!MSG>";
//byte compare = new Byte(Byte.parseByte(end));
// Keep listening to the InputStream while connected
while (true) {
try {
//boolean result = buffer.equals(compare);
//while(true) {
// Read from the InputStream
bytes = mmInStream.read(buffer);
//Reader reader = new BufferedReader(new InputStreamReader(mmInStream, "UTF-8"));
//int n;
//while ((bytes = reader.read(buffer)) != -1) {
//writer.write(buffer, 0, bytes);
//StringBuffer sb = new StringBuffer();
//sb = sb.append(buffer);
//String readMsg = writer.toString();
String readMsg = new String(buffer, 0, bytes);
//if (readMsg.endsWith(end))
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, readMsg)
.sendToTarget();
//}
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
break;
}
}
}