gpt4 book ai didi

Android - 识别网页 View 是否播放声音

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:00:51 24 4
gpt4 key购买 nike

在 webview 中加载的网页在后台自动播放,我想检测声音何时停止,而不是显示 toast 消息。

谢谢

最佳答案

如果您使用 JavascriptInterface,这会很容易。按照我的步骤:

1.创建接口(interface)回调:

public class MediaWebInterface {

public MediaWebInterface() {

}

@JavascriptInterface
public void setEndedIndex(int pIndex) {
// Call when the audio ended.
}

}

2.创建一个包含“已结束”监听器的 javascript:

<script type='text/javascript'>window.onload=function(){var n=document.getElementsByTagName("audio"),r=n.length;for(var o=0;o<r;o++)n[o].setAttribute("index",o),n[o].addEventListener("ended",function(){for(var e=0;e<r;e++)this===n[e]&&window.external.setEndedIndex(e)})}
</script>

3.将 html 数据加载到 String 中并将上面的 javascript 附加到您的 html 数据 String:

// Enable javascript support
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new MediaWebInterface(mHandler), "external");
mWebView.loadDataWithBaseURL(mBaseURL, mHTMLData+aboveJavascript, null, "utf-8", null);

4.当音频停止时,会调用MediaWebInterface.setEndedIndex(pIndex),pIndex是音频的索引。

玩得开心,试试吧!

请阅读WebView.addJavascriptInterface()第一!

警告:如果您使用混淆器,您应该将以下脚本添加到您的proguard-project.txt。否则回调无效。因为类名和方法会混淆,所以javascript无法回调。

//Preserved javaScript interface class
-keepclassmembers class com.xxx.xxx.javascript.MediaWebInterface {
public *;
}

关于Android - 识别网页 View 是否播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30135600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com