Android-确定Web视图是否播放声音



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 *;
}

最新更新