各位好
小弟在做一个mp3播放的小例子,其中要对当前显示的mp3的曲名、艺术家和专辑图像进行显示。
1. 这些内容要怎么取出来呢?
2. 我在网上查了一下,有说用到MediaStore的,能不能不通过MediaStore直接取出来呢?
3. MediaStore是什么呢,我在本地res/raw/的音乐,是被直接放入了MediaStore吗?求解答,先谢了。
小弟在做一个mp3播放的小例子,其中要对当前显示的mp3的曲名、艺术家和专辑图像进行显示。
1. 这些内容要怎么取出来呢?
2. 我在网上查了一下,有说用到MediaStore的,能不能不通过MediaStore直接取出来呢?
3. MediaStore是什么呢,我在本地res/raw/的音乐,是被直接放入了MediaStore吗?求解答,先谢了。
这个资源是属于被剪裁过的应用使用的资源 不一定有你要的信息
你的mp3播放需要从sd载入文件 mediastore是用来保存文件的信息
如果不用mediastore 你需要自己去解析mp3文件的头 按照字节去对mp3文件的格式规范
而且里面还不一定有你要的专辑图像信息
谢谢
看来我必须使用MediaStore了呢。
再问下哦,我的mp3播放器要怎么从sd载入文件呢?
MediaPlayer就可以使用了。
或者自己用扫描sd卡的mp3后缀的文件
传sd卡目录 然后cursor记录位置 scan mp3文件
具体逻辑可以自己研究一下 可参考MediaScannerReceiver 和 MediaScan里面的扫描逻辑
这样一说的确有些思路了呢。
请问一下:在APIdemo里有相关MediaStore的例子吗?
补充一下:
mp3的曲名、艺术家和专辑图像这些信息是写在mp3文件中的,即mp3 的tag信息。
根据不同的ID3标准,这些信息不定写在mp3头,或者尾部。 但是如果mp3的tag信息本身包含图像信息,就一定会解析的到的,无论是自己解析,还是利用其他工具。除非mp3里本身不包含。
因为我们不能保证用户所下载的MP3都是正版mp3(即全部tag信息都是全的),所以解析不到图像也不要排除该mp3本身就不包含图像信息一般解析操作都是在扫描sd卡时执行完毕,LZ可以参考4L提供的线索。
补充完毕。
final String[] ccols = new String[] { MediaStore.Audio.Media._ID };
String where = MediaStore.Audio.Media.ARTIST_ID + "=" + id + " AND " +
MediaStore.Audio.Media.IS_MUSIC + "=1";
ContentResolver resolver = context.getContentResolver();
resolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, ccols, where, null, null);