Reprendre la lecture vidéo de onResume

J'ai une VideoView et c'est une pause lorsque je lance une intention de courrier électronique. Lorsque l'intention du courrier électronique est terminée, je souhaite que la vidéo Vision continue de jouer, mais elle redémarre dès le début.

@Override public void onPause() { Log.d(TAG, "onPause called"); super.onPause(); videoView.pause(); } @Override public void onResume() { super.onResume(); Log.d(TAG, "onResume called"); videoView.start();//resume() doesnt work } 

Comment puis-je obtenir la vidéoView pour reprendre d'où elle a cessé.

  • Le sélecteur RelativeLayout d'Android state_pressed ne fonctionne pas
  • Android: comment détecter cliquez sur l'élément SearchView personnalisé
  • Comment dessiner une petite marque d'image et continuer à rafraichir sa position sur mon image de carte PERSONNALISÉE? - Android
  • Studio Android 2.3 course instantanée ne fonctionne pas
  • Comment puis-je changer la vue dans un fragment?
  • Comment implémenter la fonctionnalité .get avec FutureTask ou BackgroundTask à l'aide d'Android?
  • Android 4.4.2 - java.lang.RuntimeException: exécution de l'arrêt de l'activité qui n'est pas reprise
  • Droid: Comment obtenir l'ID de bouton de la méthode onClick décrite en XML?
  • Réglage de l'ID pour les éléments Spinner
  • Comment la méthode getView () est-elle utilisée et où s'appelle-t-elle?
  • Utilisez une imprimante bluetooth portative avec Android
  • Comment obtenir le nom de classe, pas le chemin complet?
  • 2 Solutions collect form web for “Reprendre la lecture vidéo de onResume”

    Et ça:

     @Override public void onResume() { super.onResume(); Log.d(TAG, "onResume called"); videoView.seekTo(stopPosition); videoView.start(); //Or use resume() if it doesn't work. I'm not sure } // This gets called before onPause so pause video here. @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); stopPosition = videoView.getCurrentPosition(); videoView.pause(); outState.putInt("position", stopPosition); } 

    Ensuite, dans votre onCreate (), appelez le stopPosition à partir du paquet et configurez-le globalement

     @Override protected void onCreate(Bundle args) { super.onCreate(args); if( args != null ) { stopPosition = args.getInt("position"); } 

    L'utilisation de seekTo donne un léger effet de scintillement lors de la reprise de la vidéo. Une meilleure approche serait utiliser les méthodes pause() et start() de la classe MediaPlayer au lieu d'utiliser les méthodes de VideoView . La méthode start() de VideoView redémarre la vidéo dès le début, mais la méthode start() de MediaPlayer reprend la vidéo si la méthode pause() avait déjà été appelée.

    Voici ce que docteur officiel d'Android dit

    Public void start ()

    Ajouté au niveau API 1 Démarre ou reprend la lecture. Si la lecture avait déjà été interrompue, la lecture continuerait d'où elle avait été interrompue. Si la lecture avait été arrêtée ou jamais commencée avant, la lecture commencera au début.

    Vous pouvez obtenir MediaPlayer associé à une VideoView dans OnPreparedListener de VideoView .

     public class MainActivity extends Activity { private MediaPlayer mMediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); VideoView videoView = (VideoView) findViewById(R.id.videoView1); videoView.setVideoPath(path); videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mMediaPlayer = mp; } }); } } 

    Ensuite, les méthodes suivantes de pause() et de resume() peuvent être appelées sur l'objet MediaPlayer lui-même.

     //To pause the video mMediaPlayer.pause(); //To resume the video mMediaPlayer.start(); 

    Solution très simple mais efficace. J'espère que cela aide!

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.