Я пытаюсь читать bytes
получил через соединения Bluetooth и преобразовать его в String
Строка из байта не отображается, если « п» внутри
Монитор входного потока
public void run() {
Log.i(TAG, "BEGIN mConnectedThread");
byte[] buffer = new byte[1024];
int bytes;
// Keep listening to the InputStream while connected
while (true) {
try {
// Read from the InputStream
bytes = mmInStream.read(buffer);
// Send the obtained bytes to the UI Activity
mHandler.obtainMessage(MainActivity.MESSAGE_READ, bytes, -1, buffer)
.sendToTarget();
} catch (IOException e) {
Log.e(TAG, "disconnected", e);
connectionLost();
// Start the service over to restart listening mode
BluetoothChatService.this.start();
break;
}
}
}
MainActivity когда я получаю, оператор журнала, похоже, не вызван, если существует несколько строк. Если это только одна линия, это нормально
case MESSAGE_READ:
byte[] readBuf = (byte[]) msg.obj;
String readMessage = new String(readBuf, 0, msg.arg1);
Log.d(TAG, "Incoming message: " + readMessage); // does not get called when there's a linebreak.
Когда я пытаюсь проверить, если строка содержит определенную информацию, как таковая, она не дозвонились, даже если строка я получил действительно содержит его.
Например, учитывая, если я получил readMessage = "Obstacle String\nStart of 2nd line"
Следующее утверждение не дозвонились
if (readMessage.contains("Obstacle String"))
Но когда я пытаюсь установить readMessage
в какой-то TextView
, он способен отображать строку правильно.
Вы использовали свой отладчик, чтобы проверить, что строка содержит то, что вы думаете, она содержит ? – immibis
Пошел, чтобы отлаживать, он на самом деле читает «Строка препятствия \ r \ nStart 2-й строки» 'На самом деле она содержит обязательное условие строки, чтобы ввести мой цикл if. Так почему же это не так? –
'Когда я пытаюсь проверить, содержит ли строка определенную информацию' как? – EJP