我有一个非常简单的任务 - 只是为了在VideoView
上播放视频时显示播放控件。但我无法解决它。
以下是我用于初始化VideoView
和设置MediaController
的代码段:
videoView.setVideoURI(Uri.parse(videoUrl));
MediaController mediaController = new MediaController(this);
videoView.setMediaController(mediaController);
videoView.setKeepScreenOn(true);
videoView.setOnPreparedListener(mp -> {
progress.setVisibility(View.GONE);
videoView.start();
mediaController.show(0);
});
事情是mediaController.show(0)
没有任何效果。控件只显示3秒然后消失。
此外,我尝试覆盖MediaController的hide()
方法:
@Override public void hide() {}
嗯,它有效 - 控件从不隐藏,但不幸的是硬件'回归'按钮停止工作。没有覆盖硬件'返回'第一次点击关闭媒体控件上的按钮,第二次点击 - 按预期将用户带到上一个屏幕。
有没有可行的解决方案?
答案 0 :(得分:4)
hide()
以显示MediaController
videoView.setMediaController(new MediaController(this) {
@Override
public void hide()
{
mediaController.show();
}
});
videoView.setMediaController(mc);
答案 1 :(得分:4)
如果您尝试按以下方式显示媒体控制器按钮:
videoView.start();
mediaController.show(0);
由于某些原因显示(0)被忽略。
但是如果你将show(0)的调用延迟几毫秒,那么它将起作用:
....
public Handler handler = new Handler();
....
videoView.start();
handler.postDelayed(
new Runnable() {
public void run() {
mediaController.show(0);
}},
100);
对我来说看起来有点儿麻烦,如果是设计意图,那就很难记录。
答案 2 :(得分:0)
除了u2gilles的回答之外,我还发现延迟太短导致了#34;播放"显示符号而不是"暂停"符号
将处理程序的延迟修改为~250ms以修复它。