Tengo una AsyncTask, donde oculto una vista de video, inicio la reproducción de video y muestra la vista de video cuando se reproduce el video.VideoView no se inicia cuando es invisible
Pero el video simplemente no se iniciará cuando la vista del video esté configurada como invisible, la tarea asincrónica sigue colgando enBackground. Si comento esta línea, el video comienza a reproducirse. ¿Por qué la vista de video requiere una superficie visible?
public void walk(final View v) {
new AsyncTask() {
@Override
protected void onPreExecute() {
super.onPreExecute();
mVideoView.setVisibility(View.INVISIBLE); // this line causes video not to start
mVideoView.start();
}
@Override
protected Object doInBackground(Object... objects) {
while (!mVideoView.isPlaying()) {}
return null;
}
@Override
protected void onPostExecute(Object o) {
super.onPostExecute(o);
mVideoView.setVisibility(View.VISIBLE);
}
}.execute();
Un poco de historia por qué estoy haciendo esto: Trato de evitar el problema bien conocido de que el flash negro que por lo general tienen al iniciar un vídeo:
https://stackoverflow.com/search?q=%5Bandroid%5D+videoview+black
https://stackoverflow.com/search?q=%5Bandroid%5D+video+%5Bmediaplayer%5D+black