die Webseite geladen wird innerhalb von Webview ist automatisch im Hintergrund zu spielen, möchte ich erkennen, wenn Ton stoppt und dann Toast Nachricht anzeigen.Android - Identifizieren Sie, ob Web-View Ton abspielen oder nicht
dank
die Webseite geladen wird innerhalb von Webview ist automatisch im Hintergrund zu spielen, möchte ich erkennen, wenn Ton stoppt und dann Toast Nachricht anzeigen.Android - Identifizieren Sie, ob Web-View Ton abspielen oder nicht
dank
das ist einfach, wenn Sie die JavascriptInterface
verwenden werden können. Folgen Sie meinem Schritt:
1.Erstellen eine Schnittstelle Rückruf:
public class MediaWebInterface {
public MediaWebInterface() {
}
@JavascriptInterface
public void setEndedIndex(int pIndex) {
// Call when the audio ended.
}
}
2.Create ein Javascript, das ein "beendet" Hörer enthalten:
<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.Legen die HTML-Daten in ein String
und über Javascript Sie hTML-Daten String
anhängen:
// Enable javascript support
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new MediaWebInterface(mHandler), "external");
mWebView.loadDataWithBaseURL(mBaseURL, mHTMLData+aboveJavascript, null, "utf-8", null);
4. Wenn der Ton stoppt, und es ruft die MediaWebInterface.setEndedIndex(pIndex)
, und pIndex ist der Index des Audio.
Hava Spaß, und versuchen Sie es!
Bitte zuerst die WebView.addJavascriptInterface() lesen!
Warnung: Wenn Sie proguard verwenden, sollten Sie folgendes Skript in Ihre proguard-project.txt
hinzufügen. Andernfalls wird der Rückruf ungültig. Da der Klassenname und die Methode verschleiern, kann das JavaScript nicht zurückrufen.
//Preserved javaScript interface class
-keepclassmembers class com.xxx.xxx.javascript.MediaWebInterface {
public *;
}
1+ für die Warnung mit proguard! Sehr gute Antwort – apmartin1991
jede Hilfe wird sehr geschätzt werden – Fou
Was haben Sie bisher versucht? Im Moment sehe ich keinen Code oder Hinweis, dass Sie sich Mühe gegeben haben, das selbst zu lösen. –
@esme_louise Ich habe versucht, verschiedene Ideen nicht funktioniert für mich, nur ändern Sie einen Code in einen anderen .... – Fou