Android - получение изображения через сокет с сервера C # (почти завершено)

Я посылаю изображение (это в основном видеопоток) x раз в секунду на моем сервере.

master.frame_drone.Bitmap это изображение

C # сервер

 private void send_data()
    {

            string data = "";


            string conetado, bateria, tensao, altitude, roll, pitch, yaw, velx, vely, velz, estado, atual, desejado;
            string conetado2, bateria2, tensao2, altitude2, roll2, pitch2, yaw2, velx2, vely2, velz2, estado2, atual2, desejado2;

            conetado = master.sconetado;
            bateria = master.sbateria;
            tensao = master.stensao;
            altitude = master.saltitude;
            roll = master.sroll;
            pitch = master.spitch;
            yaw = master.syaw;
            velx = master.svelx;
            vely = master.svely;
            velz = master.svelz;
            estado = master.sestado;
            atual = master.satual;
            desejado = master.sdesejado;


            conetado2 = slave.sconetado;
            bateria2 = slave.sbateria;
            tensao2 = slave.stensao;
            altitude2 = slave.saltitude;
            roll2 = slave.sroll;
            pitch2 = slave.spitch;
            yaw2 = slave.syaw;
            velx2 = slave.svelx;
            vely2 = slave.svely;
            velz2 = slave.svelz;
            estado2 = slave.sestado;
            atual2 = slave.satual;
            desejado2 = slave.sdesejado;


            ImageConverter converter = new ImageConverter();
            byte[] sendBytes = (byte[])converter.ConvertTo(master.frame_drone.Bitmap, typeof(byte[]));

            string_master_frame = Convert.ToBase64String(sendBytes);

            data = conetado + "\n" + bateria + "\n" + tensao + "\n" + altitude + "\n" + roll + "\n" + pitch + "\n" + yaw + "\n" + velx + "\n" + vely + "\n" + velz + "\n" + estado + "\n" + atual + "\n" + desejado + "\n" +
                        conetado2 + "\n" + bateria2 + "\n" + tensao2 + "\n" + altitude2 + "\n" + roll2 + "\n" + pitch2 + "\n" + yaw2 + "\n" + velx2 + "\n" + vely2 + "\n" + velz2 + "\n" + estado2 + "\n" + atual2 + "\n" + desejado2 + "\n" + string_master_frame + "\n";

            tcpServer1.Send(data);


    }

Таким образом, я получаю строку с сервера, что это в основном изображение.

Android-клиент

 protected Void doInBackground(Void... arg0) {


        Socket socket = null;

        try {
            socket = new Socket(dstAddress, dstPort);

            while(true) {
                Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));

     /*
      * notice: inputStream.read() will block if no data return
      */
                //MASTER
                valores[0] = r.nextLine();
                valores[1] = r.nextLine();
                valores[2] = r.nextLine();
                valores[3] = r.nextLine();
                valores[4] = r.nextLine();
                valores[5] = r.nextLine();
                valores[6] = r.nextLine();
                valores[7] = r.nextLine();
                valores[8] = r.nextLine();
                valores[9] = r.nextLine();
                valores[10] = r.nextLine();
                valores[11] = r.nextLine();
                valores[12] = r.nextLine();

                //SLAVE
                valores[13] = r.nextLine();
                valores[14] = r.nextLine();
                valores[15] = r.nextLine();
                valores[16] = r.nextLine();
                valores[17] = r.nextLine();
                valores[18] = r.nextLine();
                valores[19] = r.nextLine();
                valores[20] = r.nextLine();
                valores[21] = r.nextLine();
                valores[22] = r.nextLine();
                valores[23] = r.nextLine();
                valores[24] = r.nextLine();
                valores[25] = r.nextLine();

                valores[26] = r.nextLine();


                publishProgress(valores[0],valores[1],valores[2],valores[3],valores[4],valores[5],valores[6],valores[7],valores[8],valores[9],valores[10],valores[11],valores[12],
                        valores[13],valores[14],valores[15],valores[16],valores[17],valores[18],valores[19],valores[20],valores[21],valores[22],valores[23],valores[24],valores[25],valores[26]);
            }

@Override
protected void onProgressUpdate(String... values) {
    super.onProgressUpdate(values);
    conetado.setText(values[0]);
    bateria.setText(values[1]);
    tensao.setText(values[2]);
    altitude.setText(values[3]);
    roll.setText(values[4]);
    pitch.setText(values[5]);
    yaw.setText(values[6]);
    velx.setText(values[7]);
    vely.setText(values[8]);
    velz.setText(values[9]);
    estado.setText(values[10]);
    atual.setText(values[11]);
    desejado.setText(values[12]);

    conetado2.setText(values[13]);
    bateria2.setText(values[14]);
    tensao2.setText(values[15]);
    altitude2.setText(values[16]);
    roll2.setText(values[17]);
    pitch2.setText(values[18]);
    yaw2.setText(values[19]);
    velx2.setText(values[20]);
    vely2.setText(values[21]);
    velz2.setText(values[22]);
    estado2.setText(values[23]);
    atual2.setText(values[24]);
    desejado2.setText(values[25]);

    Bitmap master_bitmap = BitmapFactory.decodeByteArray(values[26].getBytes(),0,values[26].length());
    master_frame.setImageBitmap(master_bitmap);

}

}

Моя проблема в том, что я читаю строки построчно, используя\n всеTextViews работали хорошо, но когда я представляю строкуvalores[26] все начинает рассинхронизироваться и все значения смешиваются, например:valores[0] Теперь получает некоторые данныеvalores[26], так далее...

Как я могу получить строку с сервера и отобразить ее наImageView?

РЕДАКТИРОВАТЬ:

Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));
while(true) {

Работал. Теперь данные не смешиваются. И последний вопрос:

Внутри моего onProgressUpdate я пытался декодировать строку и не работал.

    byte[] decodedString = Base64.decode(values[26],Base64.DEFAULT);
    Bitmap master_bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
    master_frame.setImageBitmap(master_bitmap);

Процесс: com.example.tiago.java_android, PID: 3510 java.lang.IllegalArgumentException: плохой base-64 в android.util.Base64.decode (Base64.java:161) в android.util.Base64.decode (Base64.java) : 136) на android.util.Base64.decode (Base64.java:118)

Ответы на вопрос(1)

Ваш ответ на вопрос