Próbuję odtwarzać wiele filmów w pętli za pomocą MediaPlayer (Android ICS) i zmieniać filmy za każdym razem, gdy wywoływana jest funkcja oncompletion().setVideoSurfaceTexture nie powiodło się: -22 w odtwarzaczu multimediów
Działa świetnie, ale po losowym czasie zamrożenia aplikacji i pojawia się błąd:
[SurfaceView] connect: już podłączony (bież = 3, req = 3) setVideoSurfaceTexture failed: -22
Kiedy zdarzy ten błąd, to wewnętrznie zadzwonić graczowi wyzerować,
ref: mediaplayer.cpp
if (err != OK) {
LOGE("setVideoSurfaceTexture failed: %d", err);
// Note that we must do the reset before disconnecting from the ANW.
// Otherwise queue/dequeue calls could be made on the disconnected
// ANW, which may result in errors.
reset();
disconnectNativeWindow();
return err;
}
zgodnie z moim kodem otrzymuję powiadomienie dla onprepared() i zaczynam grać.
W rzeczywistości nie ma odtwarzania z powodu tego błędu.
Więc próbuję zresetować mediaplayer i zadzwonić do prepare(), gdy wystąpił ten problem, a mediaplayer nie gra, ale nie jestem w stanie uchwycić tego błędu (mp.isPlaying() -> true (bec'z called start() w onprepared()).
próbuję logikę jak
onprepared() {
mp.start();
if (pbm : [SurfaceView] connect : already connected (cur=3, req=3)
setVideoSurfaceTexture failed : -22 ) {
reset the mediaplayer source and call prepare
}
}
jak mogę zlokalizować ten problem, aby ponownie uruchomić mediaplayer ponownie?