如何在我的视频播放中使MediaController可见

时间:2011-05-06 10:51:31

标签: android mediacontroller

我在我的应用中使用MediaController。但不幸的是,MediaController在3秒后消失。但我希望我的MediaController可见,直到我的视频完全播放。

如何实现这一目标。

4 个答案:

答案 0 :(得分:11)

默认情况下,MediaController会在3秒后隐藏自身。为了使它在整个视频播放过程中可见,我们必须覆盖MediaController的hide()。我已经在下面给出了代码片段。

final MediaController mc = new MediaController(this);
video.setMediaController(new MediaController(this) {
    @Override
    public void hide()
    {
       mc.show();
    }

    }); 

video.setMediaController(mc);

答案 1 :(得分:2)

为了停止隐藏MediaController,我们可以通过扩展基类来创建一个新的Mediacontroller。然后我们可以通过简单地覆盖它来禁用hide方法。为了获得实际的隐藏功能,我们可以在基类中获取hide()方法。我们可以在使用它完成播放后隐藏Mediacontroller。 这是MediaController的代码:

public class MediaController_2 extends MediaController{
public MediaController_2(Context context) {
    super(context);
}
public void hide() {
}
public void hidecontroller()    {
    super.hide();
}
}

现在即使在完成播放后,mediacontroller也不会隐藏。为了在完成播放后隐藏控制器,我们可以使用OnCompletionListener。

        MediaController_2 mediaController = new MediaController_2(getActivity());
        mediaPlayer.prepare();   
        mediaPlayer.start();
        mediaController.show(0);
        mediaPlayer.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
                mediaController.hidecontroller();
            }
        });

答案 2 :(得分:1)

更简洁

首先,在int timeout方法中使用show()作为参数对我没有任何作用。

其次,这段简洁的代码迫使控件在第一次触摸后留在屏幕上:

// Assumes you have a VideoView in your layout called 'video_preview'.
VideoView videoPreview = (VideoView) findViewById(R.id.video_preview);

MediaController mediaController = new MediaController(this) {                                                        
    @Override
    public void hide() {}      // Prevent hiding of controls.
};

videoPreview.setMediaController(mediaController);

答案 3 :(得分:0)

VideoView videoPlayer;
MediaController mediaController;

videoPlayer = view.findViewById(R.id.videoPlayer);
Uri uri = Uri.parse(URL);
videoPlayer.setVideoURI(uri);
mediaController = new MediaController(getContext()) {
    @Override
    public void hide() {}      // on hide do nothing
};
videoPlayer.setMediaController(mediaController);
videoPlayer.requestFocus();
videoPlayer.start();