Соберите несколько строк в одну - PullRequest
0 голосов
/ 19 февраля 2019

Я работаю в приложении Bluetooth и получаю данные в нескольких пакетах String.(Я использую скорость 9600 бод)

пример:

02-19 09:44:59.516 12659-12659/com.example.appcopeeks I/RECEIVER: [1/1/0 
02-19 09:44:59.516 12659-12659/com.example.appcopeeks I/RECEIVER: 0:12:32]
02-19 09:44:59.526 12659-12659/com.example.appcopeeks I/RECEIVER:  Timesta
02-19 09:44:59.536 12659-12659/com.example.appcopeeks I/RECEIVER: mp=94668
02-19 09:44:59.546 12659-12659/com.example.appcopeeks I/RECEIVER: 5552 ID=
02-19 09:44:59.556 12659-12659/com.example.appcopeeks I/RECEIVER: 40 Value
02-19 09:44:59.566 12659-12659/com.example.appcopeeks I/RECEIVER: =2453

вот видео, что я получаю screenpresso.com / = 8kakb Я хотел бы поставить всеэто вместе в строке.

пример:

[11/2/19 9:48:25] Timestamp=1549878505 ID=4 Value=2475

Я пробовал это, но это не сработало.

 public class CapteurActivity extends AppCompatActivity {
 private StringBuilder dataFull = new StringBuilder();
 ...
  public void onReceive(Context context, Intent intent){
            switch (intent.getAction()){
                //writes the data received in the EditText
                case BGXpressService.BGX_DATA_RECEIVED: {
                    String stringReceived = intent.getStringExtra("data");

                    if ( stringReceived != null ) {
                        if ( stringReceived.startsWith("[")) {
                            getAssembleData(intent);
                        }
                    }

                    Log.d("Test DataFull: ",dataFull.toString());

        ...
  }
 }
}
     ...
public String getAssembleData(Intent intent){
    StringBuilder dataFull = new StringBuilder();
    String stringReceived = intent.getStringExtra("data");

    while (!stringReceived.contains("[")){
        dataFull.append(stringReceived);
    }
    return dataFull.toString();
 }
}

Спасибо, что нашли время, чтобы прочитать.

1 Ответ

0 голосов
/ 19 февраля 2019

Вы дважды вызываете Assemble и не проверяете исключение Null Pointer.Вот более простой подход, который может соответствовать вашим потребностям.В lastStringReceived будет храниться последняя сборка String до получения новой строки.

 public class CapteurActivity extends AppCompatActivity {
    static String lastStringReceived = "";
    StringBuffer buffer = new StringBuffer();
 ...
  public void onReceive(Context context, Intent intent){

            switch (intent.getAction()){
                //writes the data received in the EditText
                case BGXpressService.BGX_DATA_RECEIVED: {
                    String stringReceived = intent.getStringExtra("data");
                    if ( stringReceived != null ) {
                        if ( stringReceived.startsWith("[")) {
                            lastStringReceived = buffer.toString();
                            buffer = new StringBuffer();
                        }
                        buffer.append(stringReceived)
                    }

        ...
  }
 }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...