【问题标题】:How to check if webview YouTube video player was started如何检查 webview YouTube 视频播放器是否已启动
【发布时间】:2019-08-19 17:56:40
【问题描述】:

在我的 Android 应用中,我有一个 webview,其中 webview 中嵌入了 YouTube 视频。我的应用有一个原生 AdMob 横幅。

我想在用户播放视频时从应用程序中隐藏原生 admob 横幅,以便在视频播放时横幅不显示,然后在视频停止播放时再次显示广告

问题是我不知道如何检查视频是启动还是停止。

知道如何做到这一点吗?非常感谢。

【问题讨论】:

    标签: android webview youtube admob


    【解决方案1】:

    我想到的一个建议是将您的 AdView 的可见性设置为 GONE,并在视频播放时调用 mAdView.pause() AdView。这应该可以防止向 AdMob 发出任何其他请求。视频播放完毕后,您想再次显示横幅 - 您应该将 AdView 的可见性设置为 VISIBLE 并致电mAdView.resume()

    【讨论】:

    • 谢谢。这就说得通了。现在,问题的第二部分是 - 您如何知道 YouTube 视频何时开始和停止播放?
    【解决方案2】:

    webview 和native 之间的通信是通过JavascriptInterface 完成的。 YouTube 以类似的方式构建了它的 API。你可以使用下面的代码来实现你想要的。

    要通过 Youtube 视频实现播放/暂停功能,您可以使用YouTube JavaScript Player API

    例子:

    <div id="video-placeholder"></div>
    
    <script src="https://www.youtube.com/iframe_api"></script>
    

    当 API 完全加载后,它会查找一个名为 onYouTubeIframeAPIReady() 的全局函数,您应该定义它。

    你的代码应该是这样的

    var player;
    
    function onYouTubeIframeAPIReady() {
        player = new YT.Player('video-placeholder', {
            width: 600,
            height: 400,
            videoId: 'Xa0Q0J5tOP0',
            playerVars: {
                color: 'white',
                playlist: 'taJ60kskkns,FG0fTKAqZ5g'
            },
            events: {
                onReady: initialize
            }
        });
    }
    

    只需制作两个按钮并在点击时调用所需的方法。

    $('#play').on('click', function () {
        player.playVideo();
    });
    
    $('#pause').on('click', function () {
        player.pauseVideo();
    });
    

    您可以使用JavascriptInterface 从 WebView 获取本机 java/kotlin 代码中的回调。

    更多详细信息

    1. Youtube javascript player API 示例

    2. JavaScript Interface 示例

    【讨论】:

    • 谢谢,这基本上是我所做的。除了两个按钮。我使用:1)YT JS API 播放器,然后通过 2)JS 接口将视频的状态(暂停、播放等)传递到 Java 代码中,3)在 Java 代码中,我在播放时将可见性设置为 GONE 和在其他状态时变为可见(注意:需要在 UIThread 上设置可见性,否则它将不起作用)。这运作良好。 (我没有暂停和恢复广告)。
    【解决方案3】:

    我正在使用 jquery 来显示我的视频以及其他内容和 admob。当您使用 webview 时,它也应该适用于您的情况。
    您需要检测事件 - onPlayerStateChange。检查显示代码和先决条件的这个问题:
    Check if YouTube video is playing and run script

    【讨论】:

      【解决方案4】:

      你为什么不使用默认的 videoview 来播放 youtube 视频,这将使 admob 横幅和播放的视频之间的通信更容易应用 kasiopeous

      提到的相同逻辑

      【讨论】:

        猜你喜欢
        • 2016-02-05
        • 1970-01-01
        • 2018-12-18
        • 1970-01-01
        • 2016-10-22
        • 2012-12-14
        • 2012-06-07
        • 1970-01-01
        • 2021-01-31
        相关资源
        最近更新 更多