我正在尝试在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文件没有任何问题。
答案 0 :(得分:2)
在进一步深入研究WebView文档后,我尝试在WebView客户端上设置以下内容。
webView.getSettings().setMediaPlaybackRequiresUserGesture(false);
默认情况下,此设置设置为TRUE。我认为它阻止了声音播放。