我创建了一个ContentProvider.它导出我的assets /目录中的文件.我正在使用content:// urls来访问WebView中的导出内容.
以下HTML按预期工作:
<img src="content://<provider-name>/test.jpg">
Run Code Online (Sandbox Code Playgroud)
我正在尝试将内容提供程序用于mp3音频文件:
<div id='player'></div>
<script>
url = "content://<provider-name>/test.mp3";
var audio = document.createElement('audio');
audio.src = url;
audio.controls = "controls";
document.getElementById("player").appendChild(audio);
</script>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息.
E/MediaPlayer(24120): Unable to to create media player
E/HTML5Audio(24120): couldn't load the resource: content://.../test.mp3 exc: java.io.IOException: setDataSource failed.: status=0x80000000
Run Code Online (Sandbox Code Playgroud)
我尝试了Android SDK 8和10但没有成功.我没有在日志中看到对ContentProvider的任何访问权限.看起来在WebView中无法访问音频标签中的内容.这看起来很奇怪,因为以下代码按预期工作:
MediaPlayer player = MediaPlayer.create(this,
Uri.parse("content://<provider-name>/test.mp3")
);
player.start();
Run Code Online (Sandbox Code Playgroud)
如何在WebView中播放ContentProvider中的音频文件?
我发现很多线程讨论Android上标记的支持.到目前为止看起来,即使Android Froyo 2.2也无法播放音频(我已经对nexus One进行了测试).
根据www.html5test.com网页,支持标签本身,但浏览器中没有编解码器(mp3,ogg ..).那我怎么解决这个问题呢?
到目前为止,我只看到一个解决方案,使用嵌入式Flex或Flash播放器,它可以流式传输mp3.那是对的吗?这是我在Android网络浏览器中播放.mp3或其他音频流的唯一方法吗?
Android 2.3 Gingerbread是否支持某些音频流?
非常感谢BR STeN
后来添加:我最终使用的工作解决方案是用于流式传输的小型Flex .swf.它可以很容易地与HTML网页集成(Flex-Javascript通信非常有效).唯一的问题是在某些手机上没有重新安装Flash Player,必须先从Android Market下载.
甚至后来添加:好吧,<audio>即使在Android 2.3上,该元素也是错误的 - 我不知道谷歌在做什么这么简单的事情是个问题.使用Flex Player是有道理的,但问题是在某些手机上无法从Android市场安装Adobe Flash播放器,因为有一些Adobe硬件要求,如1Ghz CPU等.一些像HTC这样的供应商提供自己的Flash播放器,但是那些非常糟糕,并且与AS 3.0无法正常工作......到目前为止,一切都运行得非常好,特别是在三星手机上(如Nexus S或Galaxy S).