2012-01-10 16 views
6

tengo una actividad que tiene un VideoView que se está preparando un video de forma asíncrona:MediaPlayer: parada llamada en el estado 4

Uri mUri = "uri to streaming video" 
VideoView mVideoView = (VideoView) rootView.findViewById(R.id.videoView); 
mVideoView.setOnErrorListener(this); 
mVideoView.setOnCompletionListener(this); 
mVideoView.setVideoURI(mUri); 
mVideoView.setMediaController(null); 

mVideoView.setOnPreparedListener(this); 

Si bien se "prepara" muestro un ProgressDialog ... si presiono la parte posterior botón durante este estado, el siguiente error se imprime a ADB y la actividad se estrella en silencio con una corta espera en una pantalla en negro:

E/MediaPlayer(2204): stop called in state 4 
E/MediaPlayer(2204): error (-38, 0) 
W/ActivityManager( 59): Activity pause timeout for HistoryRecord{45080368 com.myapp.VideoPlayerActivity} 

¿Cuál es la mejor manera de detener una VideoView desde la preparación de un video para que pueda salir de una ¿actividad?

Nota: no tengo acceso al objeto MediaPlayer real hasta que la devolución de llamada para el vídeo que se está preparado se llama:

@Override 
public void onPrepared(MediaPlayer player) 

... que no ha ocurrido mientras que el MediaPlayer/VideoView es " preparando".

+0

has resuelto ?? – frayab

+0

NPike Estoy sufriendo el mismo problema. ¿Has resuelto el problema? entonces como ? Por favor comparta el conocimiento. –

+0

¿Alguien ha encontrado una manera de arreglar esto? Sé que el hilo es antiguo, pero estoy teniendo exactamente el mismo problema. – nawlrus

Respuesta

2

No lo he probado, pero debería poder reset() MediaPlayer cuando se encuentre en estado de preparación.

+0

no es posible obtener una referencia de MediaPlayer antes de que el video esté listo, por lo que no es posible reiniciar el Reproductor de medios – user3542552

1

Trate de llamar MediaPlayer.prepare() antes de hacer MediaPlayer.stop() cuando se pulsa el botón de regreso (onPause implementar la actividad o método onStop)

+1

no es posible obtener una referencia de MediaPlayer antes de que el video esté listo, por lo que no es posible llamar a MediaPlayer.prepare() – user3542552