2 votes

Comment jouer de l'audio sur une vue web dans Android ?

Je veux lire un fichier audio à partir d'une URL dans une vue Web. Je veux également qu'il y ait un bouton de lecture et de pause. J'ai essayé d'ouvrir l'URL directement comme ceci :-

myView = (WebView) findViewById(R.id.webView);
    myView.getSettings().setJavaScriptEnabled(true);
    myView.loadUrl(myUrl);

Mais ça ne marche pas.

2voto

Murtaza Hussain Points 663

Cela peut être fait par l'interface Javascript

Créer une classe WebInterface

public class WebInterface{
    Context mContext;

    WebInterface(Context c) {
        mContext = c;
    }

    @JavascriptInterface
    public void playSound(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }

    @JavascriptInterface
    public void pauseSound(String toast) {
        Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    }
}

Dans votre classe WebView

WebView browser;
browser=(WebView)findViewById(R.id.webkit);   
browser.getSettings().setJavaScriptEnabled(true);
browser.addJavascriptInterface(new WebInterface(this), "Android");        
browser.loadUrl("http://someurl.com");

En code HTML

<html>
<head>
<script type="text/javascript">
    function playSound(toast) {
        Android.showToast(toast);
    }

    function pauseSound(toast) {
        Android.showToast(toast);
    }
</script>
</head>
<body>
<input type="button" value="Say hello" onClick="playSound('Sound Played!')" />
<input type="button" value="Say hello" onClick="pauseSound('Sound Paused!')" />
</body>
</html>

0voto

Victor Semenovich Points 116

Quelle URL voulez-vous jouer ? Si c'est une page complexe avec du contenu HTML5, vous pouvez utiliser bibliothèque de passage y XWalkView au lieu de WebView . Mais cette bibliothèque va fortement augmenter la taille de votre apk.

Vous pouvez également essayer de définir WebViewClient dans votre pays d'origine WebView et manipuler onLoadResource() méthode. Si cette méthode reçoit une URL audio, dirigez-la vers l'application Android MediaPlayer .

0voto

Sathish Kumar J Points 2654

Essayez, c'est le code de travail,

 WebView mWebView;
 mWebView = (WebView)findViewById(R.id.webView);

    // Enable Javascript
    WebSettings webSettings = mWebView.getSettings();
    webSettings.setJavaScriptEnabled(true);

    mWebView.loadUrl("http://www.stephaniequinn.com/Music/Allegro%20from%20Duet%20in%20C%20Major.mp3");

    // Force links and redirects to open in the WebView instead of in a browser
    mWebView.setWebViewClient(new WebViewClient());

j'ai essayé avec un échantillon d'url audio. cela devrait fonctionner.

Bon codage !!!

0voto

Out Of Bounds Points 21

Là où vous déclarez votre MediaPLayer dans MyWebViewClient, ajoutez ce qui suit...

public class MyWebViewClient extends WebViewClient{

    public MediaPlayer mp;
    private Context context = null; // Add this line

    ...
}

Ensuite, ajoutez un constructeur à MyWebViewClient comme suit...

public MyWebViewClient(Context context) {
    this.context = context;
}

Puis dans shouldOverrideUrlLoading(...) récupérez vos actifs comme suit...

AssetFileDescriptor afd = context.getAssets().openFd(url);

Dans votre MainActivity, définissez le WebViewClient en passant ceci (qui est le contexte de l'activité) comme suit...

webMain.setWebViewClient(new MyWebViewClient(this));

Si vous voulez plus d'aide, visitez ce lien Android : Lecture d'un son d'actif à l'aide de WebView

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X