首页 文章

Android - 使用MediaController的VideoView无法正常工作

提问于
浏览
0

我需要创建Activity,它将从URL播放视频 . 现在,我使用VideoView和MediaController,当这个活动创建时,在缓冲视频之后它应该播放 . 它工作,但只播放一次,在媒体控制器工作但不播放视频 .

这是一段代码:

private ProgressDialog progressDialog;
private VideoView videoView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_video);

    progressDialog = new ProgressDialog(this);
    progressDialog.setTitle("Some title");
    progressDialog.setMessage("Buffering...");
    progressDialog.setIndeterminate(false);
    progressDialog.setCancelable(false);
    progressDialog.show();

    videoView = (VideoView) findViewById(R.id.video_view);
    Intent intent = getIntent();
    String url = intent.getStringExtra("extra_url");

    Uri uri = Uri.parse(url);
    videoView.setVideoURI(uri, HeadersMap); // Here I put my headers - I need to do that.

    MediaController mediaController = new MediaController(this);
    mediaController.setAnchorView(videoView);
    videoView.setMediaController(mediaController);
    videoView.requestFocus();
    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        @Override
        public void onPrepared(MediaPlayer mp) {
            progressDialog.dismiss();
            videoView.start();
        }
    });
}

那么,有什么问题?为什么视频不能重复?我将光标设置为在控制器上启动,但没有任何反应 . 我该怎么办呢?或者我该怎么办?

谢谢你的回答!

1 回答

  • 1

    试试这个,

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

    你也可以用 setOnCompletionListener 做到这一点

    videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    
        @Override
        public void onCompletion(MediaPlayer mp) {
    
            videoView.start();  
    
        }
    });
    

    OR

    videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer arg0) {
                 mVideoView.start();
    
            }
        });
    
    
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
            public void onCompletion(MediaPlayer mp) {
                    mp.reset();
                    videoView.setVideoURI(uri, HeadersMap); 
            }
        });
    

相关问题