5

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

如何实现这一点。

4

4 回答 4

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);
于 2012-05-03T13:53:56.640 回答
2

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

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

现在媒体控制器即使在播放完成后也不会隐藏。为了在播放完成后隐藏控制器,我们可以使用 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();
            }
        });
于 2015-10-12T19:50:04.577 回答
1

更简洁

首先,int timeout在方法中使用 an 作为参数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);
于 2014-03-17T22:55:04.337 回答
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();
于 2020-08-11T19:03:18.800 回答