Je suis nouveau dans le développement Android et je programme un jeu. Mon jeu a des cutceens qui se jouent avant chaque niveau, des cutceens qui se font par vidéo. Mon problème est que lors d’une pause d’application, le cutceen recommence du début à la reprise.
@Override
public void onPause() {
super.onPause();
video.pause();
}
@Override
public void onResume()
{
super.onResume();
video.resume();
}
Notre problème est que la vidéo ne reprend pas à la place de la pause, mais dès le début.
Vous pouvez utiliser ceci
@Override
public void onPause() {
Log.d(TAG, "onPause called");
super.onPause();
stopPosition = videoView.getCurrentPosition(); //stopPosition is an int
videoView.pause();
}
@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
}
Vous ne devez pas utiliser video.pause (), video.resume (), car lorsque vous l'appelez, les données mises en mémoire tampon seront perdues. C’est également la raison pour laquelle POURQUOI VideoView est lu au début lorsque vous appelez video.resume () . Voyez-le: VideoView onResume perd la partie mise en mémoire tampon de la vidéo
Solution:
VideoView videoView;
MediaPlayer mp;
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
this.mp = mp;
}
});
public void pause(){
//NOT videoview.pause(); Needn't save Stop position
if (mp != null){
mp.pause();
}
}
public void resume(){
//NOT videoview.resume();
if (mp != null){
mp.start(); //Video will begin where it stopped
}
}
Au lieu de resume()
, utilisez start()
à nouveau.
La lecture commencera à partir du point où vous avez mis en pause la vidéo.
Dans OnPause, vous pouvez obtenir la position actuelle.
length=mVideoView.getCurrentPosition();
et longueur utiliser dans OnResume ().
mVideoView.seekTo(length);
mVideoView.start()
fonctionne bien.
S'il vous plaît essayez ci-dessous le code cela fonctionnera absolument bien
@Override
public void onPause() {
super.onPause();
stopPosition = videoView.getCurrentPosition(); //stopPosition is an int
if (videoView.isPlaying())
videoView.pause();
}
@Override
public void onResume() {
super.onResume();
if (videoView != null) {
videoView.seekTo(stopPosition);
}
}
assurez-vous que la ligne ci-dessous est mentionnée dans votre fichier Manifest.xml
<activity
Android:name="<Video Play Activity Name Here>"
Android:configChanges="orientation|keyboardHidden|screenSize"
Android:screenOrientation="landscape"
></activity>
Utilisez simplement la méthode onSaveInstanseState au lieu de onPause et utilisez onRestart au lieu de onResume. Cela fonctionnera certainement. À votre santé !