J'ai une asyncTask, où je masque une vue vidéo, démarre la lecture de la vidéo et affiche la vue vidéo lors de la lecture de la vidéo.VideoView ne démarre pas lorsqu'il est invisible
Mais la vidéo ne démarre pas lorsque la vue vidéo est définie sur invisible, la tâche asynchrone reste suspendue à l'arrière-plan. Si je commente sur cette ligne, la vidéo commence à jouer. Pourquoi la vue vidéo nécessite-t-elle une surface 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 peu de fond pourquoi je fais ceci: J'essaie d'éviter le problème bien connu du flash noir que vous avez habituellement lors du démarrage d'une vidéo:
https://stackoverflow.com/search?q=%5Bandroid%5D+videoview+black
https://stackoverflow.com/search?q=%5Bandroid%5D+video+%5Bmediaplayer%5D+black