2012-02-01 13 views
8

は私がsetVideoPathを(呼び出すためにonCompletionListnerを使用してループ上のビデオ再生を行うために、VideoViewを使用してアプリケーションを持っている)、再び、次のように:アンドロイド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()); 
     } 
    }); 

このセットアップは、上うまく機能私が今までに遭遇したすべてのデバイス、私はそれを繰り返すことで何の問題もなかった。

しかし、私がテストしているMotorola Xoomは、最近ICSにアップグレードされました。これがICS上にあるので、これはしばらくの間動いてビデオをループします。しかし、最終的には(カウンターといくつかのログを追加しました。停止する前に何回も正常にループするパターンはありません)、ループをやめ、映画の最初のフレームのフリーズフレームに座ります。

誰もがこれが正しくループしない原因を知っていますか?または、誰かが、ICSの下で動作するVideoViewを適切にループさせる別の方法を知っていますか?

+0

コードにmpとは何ですか? –

+0

@jeraldov 'mp'は、onCompletion()メソッドのパラメータとして渡されるMediaPlayerオブジェクトです。 – FoamyGuy

答えて

10

再生するビデオが1つだけの場合は、用意されたリスナーでsetLooping(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