8

我在我的活动中使用了 MediaController,它工作正常,但是当我第一次播放视频时,应该有 b 暂停按钮可见,而是有播放,当我按下该按钮时,视频正确暂停并且状态保持不变,之后它工作正常。视频完成时也会发生同样的事情。这是一个错误还是我做错了什么?

videoView.setOnPreparedListener(new OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
            mediaController = new MediaController(VideoPlayerActivity.this){
        public void hide(){
        }
        public void show(){
            if(isPlayingAd){
                super.hide();
            }else{
                super.show();
            }
        }
    };
    videoView.setMediaController(mediaController);
    mediaController.setMediaPlayer(videoView);
    mediaController.show();
    }
});
4

2 回答 2

6

我一直有同样的问题。我没有像你那样打电话MediaController.setVideoView,因为我认为VideoView.setMediaController这足以解决问题。我尝试添加它,然后将调用移至showwithin onPrepared,现在它正在工作。

我希望我有更好的理解;我最好的猜测是,在准备好媒体之前和打电话给演出之前,也许一切都需要正确连接。无论如何,这就是我所拥有的:

mMediaController = new MediaController(VideoPlayerActivity.this, false);

mVideoView.setOnPreparedListener( new MediaPlayer.OnPreparedListener() {            
    @Override
    public void onPrepared(MediaPlayer pMp) {
        mMediaController.show();
    }       
});

mVideoView.setMediaController(mMediaController);
mMediaController.setMediaPlayer(mVideoView);
mVideoView.setVideoPath(uri);  // may not be applicable in your case
mVideoView.requestFocus();
mVideoView.start();
于 2012-08-04T00:01:00.910 回答
0

正如 Oneworld 在另一个答案中提到的那样,我对旧的三星设备也有同样的问题。即使 MediaController 与 VideoView 正确连接,播放按钮也会失去同步,直到暂停并再次使用 MediaController 播放。

这件事似乎只发生在旧的三星设备上(我猜是 KitKat 及以下设备)。

我发现的唯一解决方案是在通过 mc.show() 显示控制器之前通过 videoview.start() 以编程方式播放视频。

于 2016-06-30T14:02:36.593 回答