Viewview Pausing and resuming

je suis nouveau à développement android et je suis la programmation d'un jeu. Mon jeu a des cutsceens qui jouent avant que chaque niveau commence, des cutsceens qui se font via videoview. Mon problème est que, lors d'une pause d'application, le cutsceen recommence à partir 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 là où nous l'avons mis en pause, mais depuis le début.

32
demandé sur Athos 2011-09-03 01:43:37

6 réponses

vous pouvez utiliser ce

@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
}

post original

48
répondu Sanket Patel 2017-05-23 12:10:29

ne devrait pas utiliser de vidéo.pause(), de la vidéo.resume(), parce que quand vous l'appelez, les données de mise en tampon seront perdues. C'est aussi la raison pour laquelle VideoView joue au début chaque fois que vous appelez vidéo.reprendre.)( Voir: VideoView onResume perd 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
    }   
}
18
répondu Khang .NT 2017-05-23 12:34:36

au lieu de resume() , utilisez à nouveau start() .

Il va démarrer la lecture à partir du point où vous mis en pause la vidéo.

17
répondu Flynn81 2013-07-10 07:53:55

dans OnPause vous pouvez obtenir la position actuelle .

length=mVideoView.getCurrentPosition();

et la valeur de la longueur de l'utiliser dans OnResume ().

mVideoView.seekTo(length);
mVideoView.start()

amende de travail .

10
répondu Shivani Khandelwal 2013-05-01 09:31:56

s'il vous plaît essayer ci-dessous code il fonctionnera tout à fait 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);
    }
}

veuillez vous assurer que la ligne ci-dessous est mentionnée dans votre manifeste.xml

<activity
        android:name="<Video Play Activity Name Here>"
        android:configChanges="orientation|keyboardHidden|screenSize" 
        android:screenOrientation="landscape"
        ></activity>
0
répondu Anuj J Pandey 2016-11-11 06:23:47

utilisez juste la méthode onSaveInstanseState au lieu de onPause et utilisez onRestart au lieu de onResume. Il sera certainement le travail. Acclamations !

0
répondu user8324061 2018-02-04 10:24:48