Android webview html5 视频自动播放在 android 4.0.3 上不起作用

Posted

技术标签:

【中文标题】Android webview html5 视频自动播放在 android 4.0.3 上不起作用【英文标题】:Android webview html5 video autoplay not working on android 4.0.3 【发布时间】:2013-04-03 11:52:21 【问题描述】:

我开发了一个应用程序,用户可以在其中设置网页上的视频: - 他们可以指定一个 Youtube URL 要么 - 他们可以上传视频

根据用户选择的选项,我会呈现这样的视频页面: 如果视频来自 youtube:

<iframe type="text/html"   src="http://www.youtube.com/embed/YOUTUBEID?autoplay=1&loop=1&autohide=1&fs=0"  frameborder="0"></iframe>

如果正在上传视频:

<video id="video" style="cursor: pointer;"    autoplay controls loop>
  <source src="../video/Tareas_Diarias_Resumen.mp4" type="video/mp4" />
</video>

好的。这一切在 Google Chrome 上运行完美,但事实是视频将在 16 台三星 GT-P5100 android 4.03 平板电脑上观看。

我们创建了一个嵌入 webView 的 Android 应用程序:

WebView engine = (WebView) findViewById(R.id.web_engine);
engine.setWebChromeClient(new WebChromeClient());
engine.getSettings().setPluginsEnabled(true);
engine.getSettings().setPluginState(PluginState.ON);
engine.getSettings().setjavascriptEnabled(true);
engine.getSettings().setAllowFileAccess(true);
engine.loadUrl(miUrl);

这里我有两个问题: 1- 优酷视频。它工作正常,我可以看到视频但没有自动播放,我们希望它可以自动播放。有什么解决办法吗? 2- 上传的视频不行,我可以看到播放器但是没有视频。

视频是通过手刹转换的,选择 iphone 和 ipod-touch 预设和“网络优化”选项。

任何帮助或线索? 提前致谢

【问题讨论】:

大多数移动平台(Android、ios)上的自动播放被阻止以避免糟糕的用户体验 - 视频只能在用户操作后播放。您通常可以通过在另一个事件(例如 onloaded 事件)上触发 play() 来解决它 @Offbeatmammal 你能把这个写成答案来结束这个问题吗?谢谢。我也发现了这个longtailvideo.com/html5/autoloop 完成,虽然看起来已经有一个公认的答案 【参考方案1】:

自 Android SDK 17 起已禁用自动播放,但您可以将 setMediaPlaybackRequiresUserGesture 设置为 false 以重新启用自动播放。 不要忘记检查 SDK 版本,因为早期版本没有此功能。

    int SDK_INT = android.os.Build.VERSION.SDK_INT;
    if (SDK_INT > 16) 
        engine.getSettings().setMediaPlaybackRequiresUserGesture(false);
    

【讨论】:

对我不起作用。怎么了?我正在 Android 5.0 中测试【参考方案2】:

[升级为根据请求回答]

大多数移动平台(Android、iOS)上的自动播放被阻止以避免糟糕的用户体验 - 视频只能在用户操作后播放。您通常可以通过在另一个事件(例如 onloaded 事件)上触发 play() 来解决它

【讨论】:

【参考方案3】:

对于 Android 4.0.x,尝试触发事件:loadstart

var vid=document.getElementById('video');
vid.addEventListener("loadstart", showVideo, false);
function showVideo(e) 
  vid.play();

【讨论】:

我同意。对于 Android var myvideo = document.getElementsByTagName('video')[0]; myvideo.play(); 对于 Android 4.2.2+,您在本机代码中只需要 WebView.getSettings().setMediaPlaybackRequiresUserGesture(false);【参考方案4】:

这是无法实现的,大多数移动平台(Android、iOS)上的自动播放会被阻止以避免糟糕的用户体验。看这个: http://www.longtailvideo.com/html5/autoloop/

【讨论】:

以上是关于Android webview html5 视频自动播放在 android 4.0.3 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

html5 视频不适用于 android webview

通过 Android WebView 在 YouTube HTML5 视频中搜索

HTML5 视频未在 android webview 中播放

Android WebView html5 视频强制全屏

音频和视频未在 Android WebView HTML5 中播放

Android WebView 中的 HTML5 视频不一致