WebView内部的网页加载是在背景中自动播放的,我想检测声音何时停止而不是显示吐司消息。
谢谢
如果您使用JavascriptInterface
,很容易。遵循我的步骤:
1.创建接口回调:
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是音频的索引。
hava有趣,然后尝试一下!
请阅读WebView.addjavascriptinterface()首先!
警告:如果使用Proguard,则应在proguard-project.txt
中添加colling Script。否则,回调将无效。因为类名称和方法会混淆,因此JavaScript无法回调。
//Preserved javaScript interface class
-keepclassmembers class com.xxx.xxx.javascript.MediaWebInterface {
public *;
}