1. ホーム
  2. android

[解決済み] VideoViewでシームレスなビデオループを実現

2022-12-14 15:31:02

質問

以下のコードで、動画を raw リソースとして取得し、動画を開始し、それをループさせることができますが、動画をシームレスにループさせる必要があります。

public class Example extends Activity {
    VideoView vv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        vv = (VideoView)findViewById(R.id.VideoView01);

        //Video Loop
        vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                vv.start(); //need to make transition seamless.
            }
        });

        Uri uri = Uri.parse("android.resource://com.example/"
                + R.raw.video);

        vv.setVideoURI(uri);
        vv.requestFocus();    
        vv.start();
    }
}

このクリップは22秒しかありませんが、シームレスに作成されているので、遅延なしで作業することが可能です。

解き方は?

これを試してみてください、それは100%動作します。


VideoView videoView; <---メソッドの外側に書くか、final変数として宣言してください。

videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
    }
});