在 VideoView 内添加循环

Adding looping within VideoView

我在 Android Studio 中组装的一个小应用程序遇到了一些麻烦。基本上应用程序应该启动 - 自动播放视频并保持循环直到被触摸...

除了循环工作,我已经掌握了一切 - 我已经尝试了这里的一些建议,但 none 在我的案例中有效(或者没有编码技能来让他们...)

主要代码如下

package com.pixel.danny.screensaverhfx;

import android.app.Activity;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.VideoView;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    VideoView videoView = findViewById(R.id.videoView);
    Uri uri=Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.hab);
    videoView.setVideoURI(uri);
    videoView.requestFocus();

    videoView.start();
    videoView.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            finish();
        }
    });    }
}

与其调用 finish();,不如调用 videoView.stopPlayback()

当您触摸 Videoview 您完成 activity 时,下面的代码在做什么,所以应用程序将关闭....

videoView.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            finish();   //remove this line 
            videoView.stopPlayback() // you can use this for stopPlay
        }
    });   

所以删除finish();你的问题得到了reslove

如果您想循环播放

 videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
              Toast.makeText(getApplicationContext(), "Video completed", Toast.LENGTH_LONG).show();
              videoView.start();   //it will start again
        }
    });