Android mediacontroller播放暂停控件未正确刷新

Android mediacontroller播放暂停控件未正确刷新,android,mediacontroller,Android,Mediacontroller,我在我的活动中使用了MediaController,它工作正常,但当我第一次播放视频时,应该会看到“暂停”按钮,但实际上是“播放”,当我按下该按钮时,视频会正确暂停,状态保持不变,之后它工作正常。当视频完成时,同样的事情也会发生。 这是一个错误还是我做错了什么 videoView.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) {

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

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();
    }
});

我也有同样的问题。我没有像你那样打电话给
MediaController.setVideoView
,因为我认为
VideoView.setMediaController
足以把事情连接起来。我尝试添加它,然后将调用移动到
onPrepared
中的
show
,现在它开始工作了

我希望我有更好的理解;我最好的猜测是,也许在媒体准备好之前,以及在给节目打电话之前,一切都需要准备妥当。在任何情况下,以下是我所拥有的:

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();

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

这种情况似乎只发生在旧的三星设备上(我猜是KitKat及以下)


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

我必须在
mMediaController.show()之前调用
mVideoView.start()
。在我的例子中,这两个调用都在
onPrepared(MediaPlayer pMp)
中。这是让它在三星安卓4.2.2设备上运行的唯一方法