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

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

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

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

如果正在上传视频:

<video id="video" style="cursor: pointer;" width="640" height="480"  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
  • 完成,虽然看起来已经有一个公认的答案

标签: android html video webview youtube-api


【解决方案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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-20
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-30
      相关资源
      最近更新 更多