[devdiv精华转载] android开发 使用Android的MediaPlayer播放Http连接的Mp3的异常问题
最近在制作一音频播放软件时,发现同一个音频,在三个品牌的手机里直接播放正常,但上传到网络直接使用http的url进行播放时,HTC的2.2版G6能正常边下载边播放。三星和摩托罗拉的就报错了。。。报在MediaPlayer.prepare();或MediaPlayer.prepareAsync();处,经过多次多次对比分析,发现问题出现在mp3文件上,当mp3文件是带有专辑图片的格式文件时,三星和摩托罗拉按Http播放就会失败,本地播放正常。去掉图片就能播放了。
楼主用下面两种方法试一下,看看用系统的能不能打开
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse(path);
it.setDataAndType(uri , "video/mp3");
startActivity(it)
Intent it = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse(path);
it.setData(uri);
startActivity(it)
二种方法都试了。第一种会呼叫系统当前安装的能播放http协议mp3的播放器进行播放。如果安装多个还会弹出选择列表。我测试发现moboplayer是可以播放的。。。可能其不是用的系统默认的mp3下载协议。
删除第三方播放器后,再试发现会提示系统播放器播放不了。
第二种方法会呼叫系统浏览器,先下载再播放,这时系统播放器是能播放的。
不过我还是有疑问,我用过不带mp3专辑的文件,但是仍然没法播放出来,而且个别时候偶尔能播放成功,但是lz提供了思路呢,估计是media库实现的兼容性问题.
htc之所以能用,是因为没用android自带的media库,而是自己的实现.moto和三棒很标准,所以悲剧了.
希望大家能继续探讨,把真正问题揪出来.
浙公网安备 33010602011771号