android操作sdcard中的多媒体文件(二)——音乐列表的更新
2013-11-18 14:24
399 查看
android操作sdcard中的多媒体文件(二)——音乐列表的更新
原文地址在上一篇随笔中,我介绍了如何在程序中查询sdcard内的多媒体文件,并且显示到播放列表中,但是,如果在sdcard内删除、增加一些多媒体文件,如何让播放列表也更新呢,这里我分享一下自己在项目中的一些解决方法,希望对大家有所帮助。
首先,我简单介绍一下android是如何扫描sdcard内的多媒体信息的,详细请阅读stay的博文:http://www.cnblogs.com/stay/articles/1957571.html
当android的系统启动的时候,系统会自动扫描sdcard内的多媒体文件,并把获得的信息保存在一个系统数据库中,以后在其他程序中如果想要访问多媒体文件的信息,其实就是在这个数据库中进行的,而不是直接去sdcard中取,理解了这一点以后,问题也随着而来:如果我在开机状态下在sdcard内增加、删除一些多媒体文件,系统会不会自动扫描一次呢?答案是否定的,也就是说,当你改变sdcard内的多媒体文件时,保存多媒体信息的系统数据库文件是不会动态更新的。
那么如何让多媒体数据库中的数据更新呢?我们可以采用广播机制来实现:在应用程序中发送一个广播,让android系统扫描sdcard并更新多媒体数据库
?
?
这里我们定义了两个Cursor对象,分别用来存储扫描前后的多媒体信息,并给出相应的提示。
以前有很多朋友问过我,为什么扫描以后播放列表中的数据条数没有发生相应的改变。要实现播放列表在扫描后更新,必须重新读取多媒体信息到Cursor中,并且重新设置adapter,最后还要调用XXXAdapter.notifyDataSetChanged()来通知UI更新。(可以参考第一张的内容)
上面的操作都是手动在SDCARD中添加或着删除多媒体文件,下面介绍如何在列表中删除SDCARD中的多媒体文件。
在上一篇随笔中,我们使用了系统提供的ContentProvider来查询sdcard中的多媒体文件,我们同样可以使用这个ContentProvider来进行删除操作:
?
为什么没有被删除,原因是上面的删除操作只是删除了系统多媒体数据库中的相应记录,而并没有删除SDCAED中的文件(注意:多媒体信息数据库和SDCARD中的多媒体文件并不会自动保持同步),这个时候如果再次扫描SDCARD,你会发现刚才从播放列表中删除的行会再次出现。
其实要想真正的从SDCARD中删除多媒体文件并不难,可能有朋友会想到这样的方法:遍历SDCARD中的多媒体文件,然后把想要删除的文件和其他文件逐一比较,找到文件路径,最后进行删除。这种方法是可以实现删除操作的,不过效率很低,如果SDCARD中的文件夹以及文件很多,也不知道要用掉多少时间。。
在上一张中我们从多媒体数据库中读出来一项很重要的信息:MediaStore.Audio.Media.DATA
并且取得里面的字串并存放在了_path数组中,最终的数据格式为:/SDCARD/[子文件夹名]文件名,又了这个路径,我们就可以很方便的从SDCARD中删除多媒体文件了
?
相关文章推荐
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件——音乐列表的更新
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件——音乐列表的更新
- (转)android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件(二)——音乐列表的更新
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- android操作sdcard中的多媒体文件(一)——音乐列表的制作
- android操作sdcard中的多媒体文件
- android操作sdcard中的多媒体文件
- Android sdcard媒体文件更新(程序控制刷新MediaStore数据库)详解
- Android开发——对sdcard扩展卡文件操作
- Android SDCard操作(文件读写,容量计算)
- Android 文件在SDCard上读写操作