2016-06-06 9 views
2

In meiner Anwendung ich eine Videoview verwenden, wo ein Mediaplayer zu spielen, und in einigen Fällen hat mir diesen Fehler Freigabe:java.lang.IllegalStateException Mediaplayer

java.lang.IllegalStateException 
at android.media.MediaPlayer.prepareAsync(Native Method) 
at android.widget.VideoView.openVideo(VideoView.java:350) 
at android.widget.VideoView.setVideoURI(VideoView.java:256) 
at android.widget.VideoView.setVideoURI(VideoView.java:239) 
at com.wul4.paythunder.hologram.MainActivity.cargarVideo(MainActivity.java:261) 
at com.wul4.paythunder.hologram.MainActivity$6.run(MainActivity.java:395) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:148) 
at android.app.ActivityThread.main(ActivityThread.java:5466) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

Meine Funktion das Video zu laden Ich beginne es ist:

Dieser Fehler weiß nicht zu sein, also wenn jemand weiß oder aufgetreten ist und Sie sich für eine Hand hinlegen können, würde er es begrüßen.

Ein Gruß und Dank im Voraus

EDIT

ich gesucht und gelesen, dass die Lösung in dem Methodenaufruf liegt setOnPreparedListener auch innerhalb der Funktion onPrepared das Video Initialisierung ->mp.start()

Ich habe es versucht und jetzt das gleiche Verhalten scheint, weiß nicht, ob in Zukunft wieder den gleichen Fehler geben

+0

Samsung Gerät? – dave

+0

Nein, in diesem Fall in einem "OnePlus - A0001" –

+0

sollten Sie video.start() innerhalb von setOnPreparedListener aufrufen – Meenaxi

Antwort

0

Haben Sie versucht, sich den Lebenszyklus einer MediaPlayer-Instanz anzusehen?

https://developer.android.com/reference/android/media/MediaPlayer.html

Im Grunde von dem, was ich sehe, Sie nicht richtig ‚Reset‘ das Objekt Mediaplayer, so dass es wieder richtig erneut ausführen können.

Versuchen Sie MediaPlayer.reset() und sehen, ob es funktioniert.

@Override 
      public void onCompletion(MediaPlayer mediaPlayer) { 

       Log.e("####", "onCompletion"); 

       // Reset the player here 

       cargarVideo(video); 

      }