我制作了一个播放YouTube视频的phonegap应用。谷歌已将其从游戏商店中取出,因为“应用程序可以播放YouTube视频。”
我不知道这意味着什么。
有人可以帮我解决这个问题,以免视频在后台播放吗?
感谢。
答案 0 :(得分:2)
我认为Google意味着当应用处于后台模式时(例如,触摸设备主页按钮),您必须暂停YouTube视频
我解决它的方式,所以注册'暂停'事件(当应用程序转到后台时调用)
document.addEventListener("pause", pause, false);
function pause (argument) {
if (typeof document.app.player != "undefined") {
document.app.player.pauseVideo();
}
}
播放youtube时我会保留播放器的引用:
patt=/\/www\.youtube\.com\/watch\?v=(.*)/;
m = patt.exec(url);
if (m.length == 2) {
url = "http://www.youtube.com/embed/"+ m[1] //+ "?autoplay=1"
console.log("url = "+url)
}
YTid = 'yt_'+m[1];
$("#MediaPPSVideo").html(
"<div id='"+YTid+"' width=\"100%\"></div>"
).after(function() {
document.app.player = new YT.Player(YTid, {
height: $(window).height()/2,
width: $(window).width()*0.95,
videoId: m[1],
events: {
'onReady': onPlayerReady,
}
});
})
这个丑陋但有效的
答案 1 :(得分:1)
在config.xml文件中添加它,为我工作Cordova 6.4.0。
<preference name="KeepRunning" value="false" />
在以下活动中进行更改 公共类MainActivity扩展了CordovaActivity
@Override
protected CordovaWebViewEngine makeWebViewEngine() {
return new WebViewEngine(this, preferences);
}
static class WebViewEngine extends SystemWebViewEngine {
public WebViewEngine(Context context, CordovaPreferences preferences) {
super(context, preferences);
}
@Override
public void setPaused(boolean value) {
super.setPaused(value);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
return;
} else if (value) {
webView.onPause();
} else {
webView.onResume();
}
}
}
答案 2 :(得分:0)
有些事可能会在这里:
我想知道Google是否真的意味着&#34;背景播放&#34; ......或者他们真的只是意味着&#34;玩&#34;全部一起。他们可能会要求您将用户重定向到YouTube才能播放。谷歌希望YouTube成为唯一的YouTube视频播放器应用程序。
希望更有可能的是 - 您需要确保当您的应用程序退出/结束/暂停时,您还强行关闭/停止应用中的播放器。如果您使用的是webView,即使您的应用不可见,它也可能继续播放视频。
答案 3 :(得分:0)
要让HTML视频在应用程序处于后台时停止播放,您需要在config.xml中使用KeepRunning
首选项暂停WebView计时器:
<preference name="KeepRunning" value="false" />
并在您的Activity暂停时调用WebView的onPause方法。要使用Cordova Android 4.0.0执行此操作,您可以使用自定义CordovaWebViewEngine实现:
public class MainActivity extends CordovaActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
}
@Override
protected CordovaWebViewEngine makeWebViewEngine() {
return new WebViewEngine(this, preferences);
}
/**
* Custom Engine implementation so it can pass resume and pause events to WebView.
* This is necessary to stop HTML5 video when app is put to background.
*/
static class WebViewEngine extends SystemWebViewEngine {
public WebViewEngine(Context context, CordovaPreferences preferences) {
super(context, preferences);
}
public WebViewEngine(SystemWebView webView) {
super(webView);
}
@Override
public void setPaused(boolean value) {
super.setPaused(value);
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
return;
} else if (value) {
webView.onPause();
} else {
webView.onResume();
}
}
}
}