繁体   English   中英

如何在android中的webview上播放音频?

[英]How to play audio on webview in android?

我想在webview上播放来自URL的音频。 我也希望它有播放和暂停按钮。 我试过像这样直接打开URL: -

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

但这不起作用。

这可以通过Javascript接口完成

创建一个类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();
    }
}

在您的WebView类中

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

在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>

试试,这是工作代码,

 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());

我尝试了一个示例音频网址。 它应该工作。

快乐的编码.. !!!

如果您在MyWebViewClient中声明MediaPLayer,请添加以下内容......

public class MyWebViewClient extends WebViewClient{

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

    ...
}

然后将构造函数添加到MyWebViewClient,如下所示...

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

然后在shouldOverrideUrlLoading(...)获取您的资产如下...

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

在您的MainActivity中,通过传递它(活动上下文)来设置WebViewClient,如下所示......

webMain.setWebViewClient(new MyWebViewClient(this));

如果您需要更多帮助,请访问此链接Android:使用WebView播放资产声音

你想玩什么网址? 如果它是包含HTML5内容的复杂页面,则可以使用XWalkView XWalkView而不是WebView 但是这个库会大大增加你的apk大小。

您还可以尝试将WebViewClient设置为本机WebView并处理onLoadResource()方法。 如果此方法接收音频URL,请将其指向Android MediaPlayer

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM