2016-09-20 2 views
-2

Я пытаюсь читать 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, он способен отображать строку правильно.

+3

Вы использовали свой отладчик, чтобы проверить, что строка содержит то, что вы думаете, она содержит ? – immibis

+0

Пошел, чтобы отлаживать, он на самом деле читает «Строка препятствия \ r \ nStart 2-й строки» 'На самом деле она содержит обязательное условие строки, чтобы ввести мой цикл if. Так почему же это не так? –

+0

'Когда я пытаюсь проверить, содержит ли строка определенную информацию' как? – EJP

ответ

0

По какой-то причине Android LogCat не кажется обрабатывать \r

Итак, я подрезал строку как такой

readMessage = readMessage.replaceAll("\r", ""); 
Смежные вопросы