2012-08-22 4 views
7

Ich versuche, mehrere Videos in Schleife mit MediaPlayer (Android ICS) zu spielen und die Videos jedes Mal ändern, wenn oncompletion() aufgerufen wird.setVideoSurfaceTexture fehlgeschlagen: -22 in Mediaplayer

Es funktioniert großartig, aber nach einer zufälligen Zeit bekommen die Anwendung einfrieren und ich den Fehler:

[Surface] connect: bereits angeschlossen (cur = 3, erf = 3) setVideoSurfaceTexture fehlgeschlagen: -22

Wenn diese Fehler passieren, intern nennt es den Reset-Spieler

ref: mediaplayer.cpp

nach meinem Code bekomme ich die Benachrichtigung für onprepared() und starten Sie die Wiedergabe.

Eigentlich gibt es keine Wiedergabe aufgrund dieses Fehlers.

Also versuche ich den Mediaplayer zurückzusetzen und call prepare() wenn dieses Problem passiert und der Mediaplayer nicht spielt, aber ich kann diesen Fehler nicht erfassen (mp.isPlaying() -> true (bec'z heißt start)() in onprepared()).

ich versuche, die Logik wie

onprepared() { 
    mp.start(); 
    if (pbm : [SurfaceView] connect : already connected (cur=3, req=3) 
             setVideoSurfaceTexture failed : -22 ) { 
     reset the mediaplayer source and call prepare 
    } 
} 

wie kann ich orten diesen Fehler den Mediaplayer zum Neustart wieder?

Antwort

9

wir dieses Problem durch die folgende Weise vermeiden können. ..

mediaPlayer.setDisplay(null); 

    mediaPlayer.reset(); 

danach die surfaceholder setzen wieder starten, bevor die Mediaplayer

mediaPlayer.setDisplay(surfaceHolder1); 

    mediaPlayer.start(); in onprepared notification. 
Verwandte Themen