Ciao, sto cercando di realizzare lo streaming di una webcam remota.
Il server gira sul PC a cui è connessa la webcam ed è scritto in Visual C# (anche il client per Windows).
L'applicazione per Android è realizzata con Android Studio. Il mio problema è nella gestione della InputStream per ricevere l'immagine (in formato bytes) dal server.
Posto il codice.
Quando lancio l'applicazione e premo sul tasto di connessione, il server riceve la richiesta ed invia l'immagine, ma l'applicazione Android si chiude senza dare errore. Potete aiutarmi? Grazie!codice:package com.example.skynet.streamremotewebcam; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; public class MainActivity extends AppCompatActivity { // Variabili globali Socket client = null; String indIP = ""; int porta = 0; String msg = ""; byte[] messaggio; byte[] risposta; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText editText = (EditText) findViewById(R.id.editText); Button btn = (Button) findViewById(R.id.button); final ImageView image = (ImageView) findViewById(R.id.Image); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { while (true) { indIP = editText.getText().toString(); porta = 11000; msg = "1"; messaggio = msg.getBytes(); new Thread(new Runnable() { @Override public void run() { try { client = new Socket(indIP, porta); OutputStream out = client.getOutputStream(); out.write(messaggio); InputStream in = client.getInputStream(); int risp = in.read(risposta); Bitmap bmp = BitmapFactory.decodeByteArray(risposta, 0, risposta.length); image.setImageBitmap(bmp); } catch (Exception ex) { Toast.makeText(MainActivity.this, "Si è verificato un errore ", Toast.LENGTH_LONG).show(); } } }).start(); } } }); } }


Rispondi quotando

