2015-05-09 6 views
8

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

+0

jede Hilfe wird sehr geschätzt werden – Fou

+1

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. –

+0

@esme_louise Ich habe versucht, verschiedene Ideen nicht funktioniert für mich, nur ändern Sie einen Code in einen anderen .... – Fou

Antwort

11

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

1+ für die Warnung mit proguard! Sehr gute Antwort – apmartin1991

Verwandte Themen