Mik*_*Kay 6 html5 android html5-audio cordova
我在Android 4.4上部署了带有Android SDK的v19的phonegap.我在我的index.html文件所在的文件夹中有一个mp3文件,我想用html5音频标签播放.
<html>
<body>
<audio controls>
<source src='sound.mp3' type='audio/mpeg'>
</audio>
</body>
<script type="text/javascript" src="cordova.js"></script>
</html>
Run Code Online (Sandbox Code Playgroud)
它不起作用,但失败如下:
I/AwesomePlayer( 124): setDataSource_l(URL suppressed)
E/ ( 124): Failed to open file '/android_asset/www/sound.mp3'. (No such file or directory)
Run Code Online (Sandbox Code Playgroud)
它看起来像一个路径问题,但我已经尝试了我能想到的所有排列.我认为它更为基础,就像AwesomePlayer无法访问存储在android_asset目录中的mp3.
使用Media插件进行phonegap工作正常,因为其他答案已经建议,但由于音频标签适用于外部媒体,而Media插件适用于内部媒体,因此似乎应该可以轻松修复.我还有一个巨大的工作应用程序,在任何地方使用音频标签,我真的不想重写它使用媒体插件.是否有一个简单的明显修复,或者我应该提交错误报告?
让我总结一下我从类似主题的各种问题/答案中找到的内容:
从SD卡播放本地文件适用于Android:
<audio controls="controls">
<source src="file:///sdcard/test.mp3" type="audio/mpeg"/>
</audio>
Run Code Online (Sandbox Code Playgroud)如果您想要从Android设备播放文件,那么使用Media对象的当前实现是唯一的选择.
探索链接:
到目前为止,我唯一的解决方案是将音频标签动态重写为phonegap Media启用按钮。不是很好:
$("audio").replaceWith (option,element) -> "
<span class='audio' data-src='#{$(element).attr('src')}'>
<button class='Play'>Play</button>
<button style='display:none' class='Pause'>Pause</button>
<button style='display:none' class='Reset'>Reset</button>
</span>
"
$("span.audio").on "click", "button.Play", (event) ->
audioTarget = $(event.target).parent()
unless audioTarget.data("audio")?
path = "/android_asset/www/#{audioTarget.attr("data-src")}"
audioTarget.data("audio", new Media(path))
audioTarget.data("audio").play()
$(event.target).hide().siblings().show()
$("span.audio").on "click", "button.Pause", (event) ->
$(event.target).parent().data("audio").pause()
$(event.target).hide().siblings().show()
$("span.audio").on "click", "button.Reset", (event) ->
$(event.target).parent().data("audio").seekTo(0)
$(event.target).hide().siblings().show()
Run Code Online (Sandbox Code Playgroud)