在PhoneGap/Cordova应用中尝试自动播放YouTube视频

14

我正在使用PhoneGap开发一款应用程序。因此,它是一个Web应用程序。在这个应用程序中,我有一个需求,需要嵌入YouTube视频,并在用户导航到该特定页面时自动播放。

我已经读过HTML5视频自动播放在移动设备上不起作用,因为带宽问题。我的问题是,有没有任何方法可以绕过这个限制?我不介意复杂的解决方案或黑客技巧,只要能让我实现这个目标就行。任何方案都可以。

谢谢。


你尝试过提出的解决方案吗? - lifeisfoo
2个回答

5

正如您自己指出的那样,您代码中的所有自动播放指令都将在加载时被忽略。因此,我们将实现一个获取页面视频并开始播放的函数。

以下 JavaScript 代码可以实现此功能:

(function() {
    document.getElementsByTagName('video')[0].play();
})()

要在页面加载完成后执行此代码,我们需要设置一个WebViewClient并实现onPageFinished()。

webview.setWebViewClient(new CordovaWebViewClient(this, webview) {
            // autoplay when finished loading via javascript injection
            public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); }
});

final WebSettings settings = webview.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    settings.setPluginState(WebSettings.PluginState.ON);

一个完整的例子

    webview = new CordovaWebView(this);
    setContentView(webview);

    final WebSettings settings = webview.getSettings();
    settings.setJavaScriptEnabled(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    settings.setPluginState(WebSettings.PluginState.ON);

    webview.setWebViewClient(new CordovaWebViewClient() {
        // autoplay when finished loading via javascript injection
        public void onPageFinished(WebView view, String url) { webview.loadUrl("javascript:(function() { document.getElementsByTagName('video')[0].play(); })()"); }
    });

    webview.loadUrl("http://html5demos.com/video");

4

有一个cordova/phonegap插件AndroidMediaGestureSetting承诺可以实现这一功能。它依赖于Webview方法setMediaPlaybackRequiresUserGesture,该方法添加于API level 17(Android 4.2)。

它只需在webview上调用此方法即可:

WebView view = getWebViewFromPlugin();
view.getSettings().setMediaPlaybackRequiresUserGesture(false);

它也可以在Phongap Build中使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接