如何检查 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 视频播放器是不是已启动的主要内容,如果未能解决你的问题,请参考以下文章
如何在我的应用程序中播放 Youtube 视频而不使用 Webview
如何在 Android WebView 中播放 YouTube 视频?