无法在Android WebView中从URL播放mp3

时间:2015-07-25 02:49:58

标签: android jquery webview

我正在尝试在WebView中播放mp3文件。但是,该文件无法在WebView中播放,并且页面在输出和错误后挂起(请参阅下面的日志输出)。

jQuery代码

$.playSound('../static/sounds/cash-register.mp3');
             $('#myAudio').on('ended', function() {
                 window.location.replace("scan_tablet");
             });

(function($){
    $.extend({
       playSound: function(){
       return $("<embed src='"+arguments[0]+"' hidden='true' autostart='true' loop='false' class='playSound'>" + "<audio id='myAudio' autoplay='autoplay' style='display:none;' controls='controls'><source src='"+arguments[0]+"' type=\"audio/mpeg\" /><source src='"+arguments[0]+".ogg' type=\"audio/ogg\" /></audio>").appendTo('body');
   }
 });

})(jQuery);

WebView客户端

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.getSettings().setDomStorageEnabled(true);
webView.getSettings().setAllowFileAccessFromFileURLs(true);

if (Build.VERSION.SDK_INT >= 19) {
    webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
}

webView.setWebViewClient(new WebViewClient());

等...

记录输出

1) D/WebViewCallback: shouldInterceptRequest=localhost/static/sounds/cash-register.mp3

2) D/WebViewCallback: onLoadResource=localhost/static/sounds/cash-register.mp3

3) [WARNING:aw_network_delegate.cc(66)] localhost/static/sounds/cash-register.mp3#-3#1

4) E/MediaResourceGetter: Invalid url: java.lang.NumberFormatException: Invalid int: "null"

我不确定为什么URL似乎在日志输出的第3行中被修改。

当我在笔记本电脑上使用Chrome时尝试使用Chrome时,播放的mp3文件没有任何问题。

1 个答案:

答案 0 :(得分:2)

在进一步深入研究WebView文档后,我尝试在WebView客户端上设置以下内容。

webView.getSettings().setMediaPlaybackRequiresUserGesture(false);

默认情况下,此设置设置为TRUE。我认为它阻止了声音播放。