2012-02-01 95 views
8

我有一個VideoView的應用程序,以使在一個循環我使用onCompletionListner再次打電話setVideoPath()的視頻播放,像這樣:的Android VideoView重複

mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer arg0) { 
      mVideoView.start(); 

     } 
    }); 


    mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     public void onCompletion(MediaPlayer mp) { 
       //I have a log statment here, so I can see that it is making it this far. 
       mp.reset(); // <--- I added this recently to try to fix the problem 
       mVideoView.setVideoPath(file.getAbsolutePath()); 
     } 
    }); 

這種設置上順暢運行到目前爲止我遇到過的所有設備,我從來沒有遇到任何問題,不會重複。

但是我測試的摩托羅拉Xoom最近升級爲ICS。現在它在ICS上,這將工作一段時間,並循環播放視頻。但最終(我已經添加了一個計數器和一些日誌,在停止之前它沒有成功循環多少次的模式),它將停止循環,只是坐在電影中第一幀的凍結幀上。

有誰知道什麼可能會導致這不再正常循環?或者是否有人知道另一種讓VideoView能夠正常循環的方式,它仍然在ICS下工作?

+0

什麼是你的代碼上的mp? – 2013-08-07 10:49:58

+0

@jeraldov'mp'是作爲參數傳遞給onCompletion()方法的MediaPlayer對象。 – FoamyGuy 2013-08-07 14:10:07

回答

10

如果您只有一個視頻可以播放,您可以在準備好的監聽器中設置Looping(true)。

myVideoView.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 
      // TODO Auto-generated method stub 
      mp.setLooping(true); 

     } 
    }); 

你就完成了。

3

到目前爲止:

mp.reset(); 

中的onComplete回調裏面似乎解決它。如果有人能解釋它發生了什麼,會非常感興趣。

+1

你的意思是onCompletion? – Adi 2013-12-05 21:35:29