尝试在 PhoneGap/Cordova 应用中自动播放 YouTube 视频
Trying to autoplay YouTube video in a PhoneGap/Cordova app
我正在使用 PhoneGap 开发应用程序。所以,这是一个网络应用程序。在此应用中,我需要嵌入 YouTube 视频并在用户导航到该特定页面时自动播放。
我了解到 HTML5 由于带宽问题,视频自动播放在移动设备上不起作用。我的问题是是否有 any 方法可以绕过此限制?我不介意可以让我做到这一点的复杂解决方法或技巧。什么都行。
谢谢。
有一个 cordova/phonegap plugin that promises to do this. It rely on the Webview method setMediaPlaybackRequiresUserGesture,添加到 API 级别 17 (Android 4.2)。
它只是在 webview 上调用这个方法:
WebView view = getWebViewFromPlugin();
view.getSettings().setMediaPlaybackRequiresUserGesture(false);
在 phongap build 中也可用。
正如您自己指出的那样,您的代码本身中的所有自动播放指令都将在加载时被忽略。因此,我们将实现一个获取正文中的视频并开始播放的功能。
以下 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");
我正在使用 PhoneGap 开发应用程序。所以,这是一个网络应用程序。在此应用中,我需要嵌入 YouTube 视频并在用户导航到该特定页面时自动播放。
我了解到 HTML5 由于带宽问题,视频自动播放在移动设备上不起作用。我的问题是是否有 any 方法可以绕过此限制?我不介意可以让我做到这一点的复杂解决方法或技巧。什么都行。
谢谢。
有一个 cordova/phonegap plugin that promises to do this. It rely on the Webview method setMediaPlaybackRequiresUserGesture,添加到 API 级别 17 (Android 4.2)。
它只是在 webview 上调用这个方法:
WebView view = getWebViewFromPlugin();
view.getSettings().setMediaPlaybackRequiresUserGesture(false);
在 phongap build 中也可用。
正如您自己指出的那样,您的代码本身中的所有自动播放指令都将在加载时被忽略。因此,我们将实现一个获取正文中的视频并开始播放的功能。
以下 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");