2016-04-20 8 views
0

Ich sende und empfange Daten von einer Android App zu einem Arduino mit dem USB. Die Daten, die ich aus dem Arduino erhalten, ist in byte[] Form:Byte [] in Snackbar nicht visualisieren

UsbSerialInterface.UsbReadCallback mCallback = new UsbSerialInterface.UsbReadCallback() { //Defining a Callback which triggers whenever data is read. 
     @Override 
     public void onReceivedData(byte[] arg0) { 
      String data = null; 
      try { 
       data = new String(arg0, "UTF-8"); 
       displaySnackbar(data); 
       data.concat("/n"); 
       tvAppend(textView, data); 
      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 

ich in der Lage bin, die alle Daten in einem TextView mit dem tvAppend Verfahren erhalten setzen:

private void tvAppend(TextView tv, CharSequence text) { 
    final TextView ftv = tv; 
    final CharSequence ftext = text; 

    runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      ftv.append(ftext); 
     } 
    }); 
} 

Aber ich kann nicht verwalten setzen Anzeige die Daten auf eine Snackbar ...

public void displaySnackbar(CharSequence data){ 
    View parentLayout = findViewById(R.id.activity_usb); 

    data="hola "+data.toString()+ " end"; 
    Snackbar.make(parentLayout, data, Snackbar.LENGTH_LONG) 

      .setAction("Action", null) 
      .show(); 

Wie kann ich die Datenvariable, um transformieren, um sie anzuzeigen mit einer Snackbar in der Lage sein?

Ich fühle mich wie ich etwas vermisse, aber ich weiß nicht was ... danke im Voraus!

Antwort

0

Die Antwort wurde nicht mit der Variablen selbst in Verbindung gebracht! Das Problem hängt mit der Menge der empfangenen Daten zusammen. Die Lösung, die ich implementiert habe, verwendet einen StringBuffer, der es ermöglicht, die Strings !:

korrekt anzuzeigen