Android. Определите, воспроизводится ли звук в веб-представлении.

Загрузка веб-страницы внутри webview автоматически воспроизводится в фоновом режиме, я хотел бы обнаружить, когда звук останавливается и отображается сообщение с тостом.

благодаря

Solutions Collecting From Web of "Android. Определите, воспроизводится ли звук в веб-представлении."

Это может быть легко, если вы используете 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 data 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, вы должны добавить скрипт в свой proguard-project.txt . В противном случае обратный вызов будет недействительным. Потому что имя и метод класса будут запутываться, поэтому javascript не может вызвать обратный вызов.

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