Autore Topic: Problema STREAMING CRASH  (Letto 723 volte)

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Problema STREAMING CRASH
« il: 29 Gennaio 2013, 16:45:06 CET »
0
Salve a tutti =)
Ho la mia classe
Codice (Java): [Seleziona]
package com.example.gestionevideo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.text.format.Time;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.URLUtil;
import android.widget.Button;
import android.widget.Toast;
import android.widget.VideoView;


public class VideoPlayer extends Activity {
/////////////////////////Attribute
private VideoView mVideoView;
private String pathVideo;
private URL path;
private Button stopVideo;
private TimerTask tt;
private Timer t;
private int durata;
//////////////////////////////////costruttore  
@Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.show_video);
                pathVideo = getIntent().getExtras().getString("path");
                stopVideo=(Button)findViewById(R.id.stopVideo);
                stopVideo.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                                // TODO Auto-generated method stub
                        mVideoView.pause();
                                finish();                              
                        }
                  });
                //pathVideo= "/sdcard/Wildlife.wmv";
                //pathVideo="http://dl.dropbox.com/u/145894/t/rabbits.3gp";
                //pathVideo="[url=http://www.youtube.com/watch?v=BEHFQKj9H9k&feature=g-vrec.mp4";]Best ROM's for the Samsung Galaxy Tab 10.1 - YouTube[/url]
                //pathVideo = "http://dl.dropbox.com/u/145894/t/rabbits.3gp";
                mVideoView = (VideoView) findViewById(R.id.surface_view);
                //path=(Uri)"http://dl.dropbox.com/u/145894/t/rabbits.3gp";
                //mVideoView.setV
               
               
               
                try {
                        mVideoView.setVideoPath(getDataSource(pathVideo));
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
                mVideoView.requestFocus();
                mVideoView.start();
                Status();
        }

        protected void onDestroy(){
                super.onDestroy();
        }

/////////////////////////////////////metodi
////////////////////////////
//touch schermo vuoto
  public boolean onTouchEvent(MotionEvent event) {
        super.onTouchEvent(event);
        int action = event.getAction();
                if(action == MotionEvent.ACTION_DOWN) {
                        //mVideoView.pause();
                        //finish();
                        return true;
                }
        return false;
        }
 //////////////////////////////////////////////////////////////////////////
        public void Status(){
                tt=null;
                t=null;
        //Declare the timer
                t = new Timer();
        //Set the schedule function and rate
        t.scheduleAtFixedRate(tt=new TimerTask() {
                        @Override
                        public void run() {
                                runOnUiThread(new Runnable() {
                                        public void run() {
                                                if(mVideoView.isPlaying()==true){
                                                        //Toast.makeText(getApplicationContext(), "finito", Toast.LENGTH_SHORT).show();
                                                }else{
                                                        finish();
                                                }
                                        }                              
                                });
                        }
               
        }, 500, 200);
        }
 
/////////////////////////////////si occupa della gestione della connessione e streaming
  private String getDataSource(String path) throws IOException {
      if (!URLUtil.isNetworkUrl(path)) {
          return path;
      }else{
          URL url = new URL(path);
          URLConnection cn = url.openConnection();
          cn.connect();
          InputStream stream = cn.getInputStream();
          if (stream == null)
              throw new RuntimeException("stream is null");
          File temp = File.createTempFile("mediaplayertmp", "mp4");
          temp.deleteOnExit();
          String tempPath = temp.getAbsolutePath();

          FileOutputStream out = new FileOutputStream(temp);
          byte buf[] = new byte[128];
          do {
              int numread = stream.read(buf);
              if (numread <= 0)
                  break;
              out.write(buf, 0, numread);
          } while (true);
          try {
              stream.close();
          } catch (IOException ex) {
              //error
          }
          return tempPath;
      }
  }
 //////////////////////////////////////////////////////////
 }
Non riesco a far partire i video in streaming -.-"
Posto anche il logcat
Codice: [Seleziona]
01-29 16:39:44.870: W/dalvikvm(5573): threadid=1: thread exiting with uncaught exception (group=0x40a691f8)
01-29 16:39:44.880: E/AndroidRuntime(5573): FATAL EXCEPTION: main
01-29 16:39:44.880: E/AndroidRuntime(5573): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gestionevideo/com.example.gestionevideo.VideoPlayer}: android.os.NetworkOnMainThreadException
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.ActivityThread.access$600(ActivityThread.java:123)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.os.Handler.dispatchMessage(Handler.java:99)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.os.Looper.loop(Looper.java:137)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.ActivityThread.main(ActivityThread.java:4429)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at java.lang.reflect.Method.invokeNative(Native Method)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at java.lang.reflect.Method.invoke(Method.java:511)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at dalvik.system.NativeStart.main(Native Method)
01-29 16:39:44.880: E/AndroidRuntime(5573): Caused by: android.os.NetworkOnMainThreadException
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1099)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at java.net.InetAddress.lookupHostByName(InetAddress.java:391)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at java.net.InetAddress.getAllByNameImpl(InetAddress.java:242)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at java.net.InetAddress.getAllByName(InetAddress.java:220)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpConnection.<init>(HttpConnection.java:71)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpConnection.<init>(HttpConnection.java:50)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpConnection$Address.connect(HttpConnection.java:351)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpConnectionPool.get(HttpConnectionPool.java:86)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpConnection.connect(HttpConnection.java:128)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpEngine.openSocketConnection(HttpEngine.java:312)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpEngine.connect(HttpEngine.java:307)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpEngine.sendSocketRequest(HttpEngine.java:286)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpEngine.sendRequest(HttpEngine.java:236)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at libcore.net.http.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:80)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at com.example.gestionevideo.VideoPlayer.getDataSource(VideoPlayer.java:119)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at com.example.gestionevideo.VideoPlayer.onCreate(VideoPlayer.java:61)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.Activity.performCreate(Activity.java:4465)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
01-29 16:39:44.880: E/AndroidRuntime(5573):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
01-29 16:39:44.880: E/AndroidRuntime(5573):         ... 11 more
Qualche indicazione???
Non capisco dov'è esattamente l'errore...Ho i permessi di internet..ho attivo il WI-FI
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema STREAMING CRASH
« Risposta #1 il: 29 Gennaio 2013, 17:11:08 CET »
0
Dovresti aver capito che tutte le chiamate di rete devono essere fatte in un thread separato in modo tale da non bloccare il main thread.

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Problema STREAMING CRASH
« Risposta #2 il: 29 Gennaio 2013, 17:18:48 CET »
0
Quindi dovrei fare un asyncTask o un thread per gestire la funzione getDataSource(path) ?
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problema STREAMING CRASH
« Risposta #3 il: 29 Gennaio 2013, 17:19:53 CET »
+1
Quindi dovrei fare un asyncTask o un thread per gestire la funzione getDataSource(path) ?

Direi proprio di si ;)

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Problema STREAMING CRASH
« Risposta #4 il: 29 Gennaio 2013, 17:21:48 CET »
0
Okay muchas gracias =)
E' che ogni tanto mi perdo in una goccia d'acqua piuttosto che nel mare XD
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Problema STREAMING CRASH
« Risposta #5 il: 30 Gennaio 2013, 16:57:41 CET »
0
Soluzione
Codice (Java): [Seleziona]
ConnectedThread a=new ConnectedThread();
a.start();     

Thread
Codice (Java): [Seleziona]
        private String getDataSource(String path) throws IOException {
                if (!URLUtil.isNetworkUrl(path)) {
                        return path;
                } else {
                        URL url = new URL(path);
                        URLConnection cn = url.openConnection();
                        cn.connect();
                        InputStream stream = cn.getInputStream();
                        if (stream == null)
                                throw new RuntimeException("stream is null");
                        File temp = File.createTempFile("mediaplayertmp", "dat");
                        temp.deleteOnExit();
                        String tempPath = temp.getAbsolutePath();
                        FileOutputStream out = new FileOutputStream(temp);
                        byte buf[] = new byte[128];
                        do {
                                int numread = stream.read(buf);
                                if (numread <= 0)
                                        break;
                                out.write(buf, 0, numread);
                        } while (true);
                        try {
                                stream.close();
                                out.close();
                        } catch (IOException ex) {
                        }
                        return tempPath;
                }
        }
 //////////////////////////////////////////////////////////
  private class ConnectedThread extends Thread {
     
          public ConnectedThread() {
          }

      public  void run() {
          try {
                   patVideoPath=getDataSource(pathVideo));

                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
      }
     
 }
« Ultima modifica: 30 Gennaio 2013, 18:06:34 CET da MisterAnt »
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?