我正在尝试在 Android 4.1.x 上使用 HTML5 媒体标签播放视频,我可以让它在其他 API(以上和以下)级别上播放,我知道getMediaPlaybackRequiresUserGesture
API 级别 17+。但是,特别是在 4.1.x 上,我无法在没有用户手势的情况下播放视频。我知道在我的活动中设置 hardwareAccelerated=true 并使用自定义 ChromeClient。
查看4.1 webkit源代码,似乎即使在 4.1.x mediaPlayback 上也需要用户手势,即使在那个 API 级别上我不能在我的活动中使用 requiresUserGesture(true) 。
我的 HTML 代码基本上如下,除非我点击屏幕,否则视频不会播放。如果我听所有的事件,我会看到它加载开始 => 持续时间更改 => 加载元数据 => 加载数据 => 停滞。
<html>
<head>
<script>
window.addEventListener('load', function () {
var video = document.getElementById("video");
video.load();
video.play();
}, false);
</script>
</head>
<body>
<video id="video" src="file:///sdcard/example/file.mp4" preload="auto"></video>
</video>
</body>
</html>