2010-06-05 26 views
2

Je joue une vidéo en utilisant un VideoView dans mon application. Sur le clic d'un bouton, il enregistre la position actuelle de la vidéo, et l'application ouvre le navigateur avec une URL. En appuyant sur le bouton de retour, l'application revient à l'application vidéo et reprend la vidéo de l'endroit où il s'est arrêté. J'ai regardé le cycle de vie de l'activité Android et j'ai vu que la méthode onStart() était appelée une fois que l'activité vidéo arrivait au premier plan. Donc je crée ma mise en page dans onStart() et je joue la vidéo en cherchant la position actuelle.Android VideoView reprendre et chercher à

Mon problème est que lorsque la vidéo reprend, elle tamponne depuis le début, puis cherche à. Comme il a déjà été tamponné la première fois, y a-t-il un moyen d'éliminer à nouveau le tampon tout en faisant un seekTo?

Merci Chris

+0

Essayez de regarder ce que je suggère dans [7276825] (http://stackoverflow.com/questions/7276825/problem-with-videoview-on-android/11938750#11938750). –

Répondre

0

J'ai un problème similaire. J'ai un OnPreparedListener qui fait le seekTo avant le début. Le seekTo fonctionne, sauf qu'il y a un pépin audio qui vient du tout début de la vidéo, comme si elle commençait à jouer puis à chercher. Je ne sais pas si mon code aiderait le problème de mise en mémoire tampon décrit mais cela pourrait aider à l'éclairer.

mVideoView.setVisibility(View.VISIBLE); 
    //get current window information, and set format, set it up differently, if you need some special effects 
    getWindow().setFormat(PixelFormat.TRANSLUCENT); 
    //mVideoView.setVideoURI(Uri.parse(path)); 
    mVideoView.setVideoPath(path); 
    //get focus, before playing the video. 
    mVideoView.requestFocus(); 
    mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
      public void onPrepared(MediaPlayer mp) {       
      mVideoView.seekTo(mImageSeek); 
      mVideoView.start(); 
     } 
    }); 
0

Définir votre VideoView de ressources puis utilisez ce code

videoview = (VideoView) findViewById(R.id.videoview_play); 
videoview.setVideoPath(dir + videoName); 
//get focus, before playing the video. 
videoview.setMediaController(new MediaController(this)); 
videoview.requestFocus(); 
videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
             public void onPrepared(MediaPlayer mp){       
             videoview.seekTo(5000); 
             videoview.start(); 
             } 
           }); 

vous devez ajouter .setMediaController(new MediaController(this)); et

videoview.requestFocus(); 

avant d'utiliser le PrepareListener

espère que cela vous aidera