我在我的应用中使用MediaController。但不幸的是,MediaController在3秒后消失。但我希望我的MediaController可见,直到我的视频完全播放。
如何实现这一目标。
答案 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();