如何检查 webview YouTube 视频播放器是不是已启动

Posted

技术标签:

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

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

我想在用户播放视频时从应用程序中隐藏原生 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 代码中的回调。

更多详细信息

    Youtube javascript player API 示例

    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

提到的相同逻辑

【讨论】:

以上是关于如何检查 webview YouTube 视频播放器是不是已启动的主要内容,如果未能解决你的问题,请参考以下文章

在 WebView 中播放 youtube 视频

如何在我的应用程序中播放 Youtube 视频而不使用 Webview

如何在 Android WebView 中播放 YouTube 视频?

Android:在 Webview 上播放 youtube 视频

youtube 视频未在 webView 中显示

YouTube 视频未在 WebView 中播放 - Android