您的位置:首页 > 移动开发 > Android开发

Android 媒体库图片,音频,视频,文件的查询

2017-12-07 12:08 429 查看
转载:Android 媒体库图片,音频,视频,文件的查询

首先,我们该怎样获取查询这些信息?

  其实android中其实系统已经给我们提供了一个数据库,里面包含了sd卡中所有文件的信息(大小、位置、创建时间等)。

  

  多媒体数据库存放的位置:  

- data/data/com.android.provider.media/databases/external.db

- data/data/com.android.provider.media/databases/internal.db

  但是直接访问db数据库文件无疑是不现实的,这时候我们可以考虑使用 Android MediaProvider(媒体内容提供者),通过它我们可以很方便的获取到我们想要的信息。

  Android MediaProvider 使用 SQLite 数据库存储图片、视频、音频等多媒体文件的信息,供视频播放器、音乐播放器、图库使用。Media数据库分为internal 和external ,对应的是内部存储和外部存储数据库,这里指的就是上面两个db数据库文件。

ContentResolver(内容解析者)

  内容提供者(即 MediaProvider)已经有了,我们还需要一个内容解析者ContenResolver来帮助我们更好地解析数据。

获取ContentResolver :
mContext.getContentResolver();


ContentResolver的两个重要方法:

query (...) 搜索指定Uri下的媒体文件,后面是sql语句


insert(...) 把新文件插入到指定Uri表中,后面跟数据库键值对。


query方法参数介绍:

uri
:用于检索内容的 URI

projection
:要返回的列的列表。传递 null 时,将返回所有列,这样会导致效率低下

selection
:一种用于声明要返回哪些行的过滤器,其格式为 SQL WHERE 子句(WHERE 本身除外)。

selectionArgs
:在 selection 中包含 ?s,它将按照在 selection 中显示的顺序替换为 selectionArgs 中的值。

sortOrder
:行的排序依据,其格式为 SQL ORDER BY 子句(ORDER BY 自身除外)。

媒体文件的Uri是如何获取的

  找到MediaStore,里面内部类有Images,Audio,Video,Files这几个包含了所有Android媒体类型,例如我们要查询图片则通过Images 得到对应的EXTERNAL_CONTENT_URI就能按照ContentResolver 的方法查询图片,同时Images 中还有缩略图类,可以通过查询到图片的缩略图,表的字段名都一样,关键也是Uri,可以通过Images中的Thumbnails获取。以此类推可以去看看其他几种媒体类型中的相关Uri以及字段名和能查询到的信息。

关于MediaStore.Files
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 数据库