2015-05-09 20 views
8

web sayfasının içeriğinin arka planda otomatik olarak oynatılıp oynatılmayacağını belirle, sesin ne zaman durduğunu ve ne zaman tost mesajı görüntülediğini belirlemek istiyorum. Eğer JavascriptInterface kullanırsanız en kolay olabilirAndroid - Web görünümünün web görünümünde çalınmasının ses mi, yoksa

sayesinde

+0

herhangi bir yardım son derece şimdiye kadar denedim ne – Fou

+1

takdir edilecektir? Şu an itibariyle, bu sorunu çözmek için çaba harcadığınızı gösteren herhangi bir kod veya gösterge göremiyorum. –

+0

@esme_louise Farklı fikirleri denemedim benim için, sadece bir kodu diğerine değiştirmeye devam et .... – Fou

cevap

11

. Benim adımı uygulayın:

1.Create bir arayüz geri arama:

public class MediaWebInterface { 

    public MediaWebInterface() { 

    } 

    @JavascriptInterface 
    public void setEndedIndex(int pIndex) { 
     // Call when the audio ended. 
    } 

} 

2.Create bir dinleyici "sona erdi" içerir 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.Load html verileri içine String ve size javascript yukarıdaki eklenecek html veri String:

// Enable javascript support 
mWebView.getSettings().setJavaScriptEnabled(true); 
mWebView.addJavascriptInterface(new MediaWebInterface(mHandler), "external"); 
mWebView.loadDataWithBaseURL(mBaseURL, mHTMLData+aboveJavascript, null, "utf-8", null); 

4. Ses durduğunda ve MediaWebInterface.setEndedIndex(pIndex)'u arayacak ve pIndex sesin dizinidir.

Hava eğlenceli ve deneyin!

Lütfen önce WebView.addJavascriptInterface()'u okuyun!

Uyarma: Eğer proguard kullanıyorsanız, proguard-project.txt ürününüze takip komut dosyası eklemeniz gerekir. Aksi takdirde, geri arama geçersiz olacaktır. Sınıf adı ve yöntemi gizleneceğinden, javascript geri arama yapamaz.

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

1+! Çok iyi cevap – apmartin1991

İlgili konular