如何解决此问题:应用可以播放YouTube视频的背景

时间:2015-05-14 18:37:20

标签: cordova youtube

我制作了一个播放YouTube视频的phonegap应用。谷歌已将其从游戏商店中取出,因为“应用程序可以播放YouTube视频。”

我不知道这意味着什么。

有人可以帮我解决这个问题,以免视频在后台播放吗?

感谢。

4 个答案:

答案 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)

有些事可能会在这里:

  1. 我想知道Google是否真的意味着&#34;背景播放&#34; ......或者他们真的只是意味着&#34;玩&#34;全部一起。他们可能会要求您将用户重定向到YouTube才能播放。谷歌希望YouTube成为唯一的YouTube视频播放器应用程序。

  2. 希望更有可能的是 - 您需要确保当您的应用程序退出/结束/暂停时,您还强行关闭/停止应用中的播放器。如果您使用的是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();
            }
        }
    }

}