Media Data之多媒体数据库(三)MediaStore

MediaStore提供了对数据库管理的对应信息,并且封装了相关的方法方便上层调用。路径如下:
/frameworks/base/core/java/android/provider/ MediaStore.java
(The Media provider contains meta data for all available media on both internal and external storage devices.)

1. 类结构图

这里写图片描述

  下面对这些类进行分析并且总结一下方法和字段。
  首先,是MediaStore类的相关信息,包含在内部存储和外部存储的所有的多媒体文件元数据,提供相应方法和字段。

2. 字段

字段 解析
ACTION_IMAGE_CAPTURE 标准的intent action,发送给相机应用,拍摄照片并返回
ACTION_IMAGE_CAPTURE_SECURE 发送给相机应用,拍摄照片并返回,设备被固定
ACTION_VIDEO_CAPTURE 标准的intent action,发送给相机应用,录制视频并返回
AUTHORITY "media"
EXTRA_DURATION_LIMIT 指定录像时长的最大值
EXTRA_FINISH_ON_COMPLETION Intent-extra的名字用来控制MovieView 的onCompletion方法
EXTRA_FULL_SCREEN Intent-extra的名字用来控制ViewImage的UI
EXTRA_MEDIA_ALBUM Intent-extra的名字用来定义album
EXTRA_MEDIA_ARTIST Intent-extra的名字用来定义artist
EXTRA_MEDIA_FOCUS Intent-extra的名字用来定义search focus.
EXTRA_MEDIA_TITLE Intent-extra的名字用来定义 song title
EXTRA_OUTPUT Intent-extra的名字用来表示一个存储图片和视频content resolver 的Uri.
EXTRA_SCREEN_ORIENTATION Intent-extra的名字用来控制ViewImage或者MovieView.
EXTRA_SHOW_ACTION_ICONS Intent-extra的名字用来控制ViewImage的UI.
EXTRA_SIZE_LIMIT 指定最大字长.
EXTRA_VIDEO_QUALITY Intent-extra的名字用来控制录制视频的质量.
INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH 一个显示搜索音乐并且自动播放的Intent
INTENT_ACTION_MEDIA_SEARCH Activity Action: 显示搜索音乐.
INTENT_ACTION_MUSIC_PLAYER This constant was deprecated in API level 15. Use CATEGORY_APP_MUSIC instead.
INTENT_ACTION_STILL_IMAGE_CAMERA Intent action在图片模式下启动camera.
INTENT_ACTION_STILL_IMAGE_CAMERA_SECURE Intent action在图片模式下启动camera,设备被锁定
INTENT_ACTION_TEXT_OPEN_FROM_SEARCH 显示搜索可读media文件并且自动播放的intent
INTENT_ACTION_VIDEO_CAMERA Intent action 在录像模式下启动相机
INTENT_ACTION_VIDEO_PLAY_FROM_SEARCH An intent to perform a search for video media and automatically play content from the result when possible.
MEDIA_IGNORE_FILENAME Name of the file signaling the media scanner to ignore media in the containing directory and its subdirectories.
MEDIA_SCANNER_VOLUME Name of current volume being scanned by the media scanner.
UNKNOWN_STRING The string that is used when a media attribute is not known.

3. 方法

方法名 解析
getMediaScannerUri() Uri for querying the state of the media scanner.
getVersion(Context context) Get the media provider's version.

4. MediaStore内部类

根据上面的类结构图可知,对于MediaStore内部类的属性也非常重要,下面就其内部类相关信息进行总结。

4.1 Media.Audio

Media.Audio是所有音频文件的容器。下面分析的是其内部类、字段和方法。

4.1.1 MediaStore.Audio.AlbumColumns

代表一张专辑的列。

字段 解析
ALBUM The album on which the audio file appears, if any
ALBUM_ART Cached album art.
ALBUM_ID The id for the album
ALBUM_KEY A non human readable key calculated from the ALBUM, used for searching, sorting and grouping
ARTIST The artist whose songs appear on this album
FIRST_YEAR The year in which the earliest songs on this album were released.
LAST_YEAR The year in which the latest songs on this album were released.
NUMBER_OF_SONGS The number of songs on this album
NUMBER_OF_SONGS_FOR_ARTIST This column is available when getting album info via artist, and indicates the number of songs on the album by the given artist.

4.1.2 MediaStore.Audio.Albums

艺术家,继承BaseColumns, AlbumColumns接口

字段 解析
CONTENT_TYPE The MIME type for this table.
DEFAULT_SORT_ORDER The default sort order for this table
ENTRY_CONTENT_TYPE The MIME type for entries in this table.
方法 解析
getContentUri(String volumeName) Get the content:// style URI for the albums table on the given volume.

4.1.3 MediaStore.Audio.ArtistColumns

代表一个艺术家的列

字段 解析
ARTIST The artist who created the audio file, if any
ARTIST_KEY A non human readable key calculated from the ARTIST, used for searching, sorting and grouping
NUMBER_OF_ALBUMS The number of albums in the database for this artist
NUMBER_OF_TRACKS The number of albums in the database for this artist

4.1.4 MediaStore.Audio.Artists

艺术家 ,继承BaseColumns, ArtistColumns接口

内部类 解析
MediaStore.Audio.Artists.Albums 对于每个艺术家所包含的所有专辑的子目录
字段 解析
CONTENT_TYPE The MIME type for this table.
DEFAULT_SORT_ORDER The default sort order for this table
ENTRY_CONTENT_TYPE The MIME type for entries in this table.
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
getContentUri(String volumeName) Get the content:// style URI for the artists table on the given volume.

4.1.5 MediaStore.Audio.AudioColumns

在多个表中展示出来的音频文件的列

字段 解析
ALBUM The album the audio file is from, if any
ALBUM_ID The id of the album the audio file is from, if any
ALBUM_KEY A non human readable key calculated from the ALBUM, used for searching, sorting and grouping
ARTIST The artist who created the audio file, if any
ARTIST_ID The id of the artist who created the audio file, if any
ARTIST_KEY A non human readable key calculated from the ARTIST, used for searching, sorting and grouping
BOOKMARK The position, in ms, playback was at when playback for this file was last stopped.
COMPOSER The composer of the audio file, if any
DURATION The duration of the audio file, in ms
IS_ALARM Non-zero if the audio file may be an alarm
IS_MUSIC Non-zero if the audio file is music
IS_NOTIFICATION Non-zero if the audio file may be a notification sound
IS_PODCAST Non-zero if the audio file is a podcast
IS_RINGTONE Non-zero if the audio file may be a ringtone
TITLE_KEY A non human readable key calculated from the TITLE, used for searching, sorting and grouping
TRACK The track number of this song on the album, if any.
YEAR The year the audio file was recorded, if any

4.1.6 MediaStore.Audio.Genres

包含音频文件的流派,继承BaseColumns, GenresColumns

内部类 解析
MediaStore.Audio.Genres.Members 对于每种流派所包含的所有成员的子目录
字段 解析
CONTENT_TYPE The MIME type for this table.
DEFAULT_SORT_ORDER The default sort order for this table
ENTRY_CONTENT_TYPE The MIME type for entries in this table.
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
getContentUri(String volumeName) Get the content:// style URI for the audio genres table on the given volume.
getContentUriForAudioId(String volumeName, int audioId) Get the content:// style URI for querying the genres of an audio file.

4.1.7 MediaStore.Audio.GenresColumns

代表一个音频流派的列

字段 解析
NAME The name of the genre

4.1.8 MediaStore.Audio.Media

继承自AudioColumns

字段 解析
CONTENT_TYPE The MIME type for this table.
DEFAULT_SORT_ORDER The default sort order for this table
ENTRY_CONTENT_TYPE The MIME type for an audio track.
EXTRA_MAX_BYTES The name of the Intent-extra used to define a maximum file size for a recording made by the SoundRecorder application.
RECORD_SOUND_ACTION Activity Action: Start SoundRecorder application.
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
getContentUri(String volumeName) Get the content:// style URI for the audio media table on the given volume.
getContentUriForPath(String path)

4.1.9 MediaStore.Audio.Playlists

包含音频文件的播放列表

内部类 解析
MediaStore.Audio.Playlists.Members 每个播放列表所包含的所有成员的子目录
字段 解析
CONTENT_TYPE The MIME type for this table.
DEFAULT_SORT_ORDER The default sort order for this table
ENTRY_CONTENT_TYPE The MIME type for entries in this table.
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
getContentUri(String volumeName) Get the content:// style URI for the audio playlists table on the given volume.

4.1.10 MediaStore.Audio.PlaylistsColumns

代表播放列表的列

字段 解析
DATA Path to the playlist file on disk.
DATE_ADDED The time the file was added to the media provider Units are seconds since 1970.
DATE_MODIFIED The time the file was last modified Units are seconds since 1970.
NAME The name of the playlist

4.1.11 MediaStore.Audio.Radio

音频文件中的收音机文件

字段 解析
ENTRY_CONTENT_TYPE The MIME type for entries in this table.

4.2 Media.Files

Media provider的表,包含了多媒体存储中所有文件的索引,包括非多媒体文件。这个类可以在单词查询中处理多媒体文件和非多媒体文件。

方法 解析
getContentUri(String volumeName) Get the content:// style URI for the files table on the given volume.
getContentUri(String volumeName, long rowId) Get the content:// style URI for a single row in the files table on the given volume.

4.2.1 MediaStore.Files.FileColumns

所有多媒体文件的主表字段

字段 解析
MEDIA_TYPE The media type (audio, video, image or playlist) of the file, or 0 for not a media file
MEDIA_TYPE_AUDIO Constant for the MEDIA_TYPE column indicating that file is an audio file.
MEDIA_TYPE_IMAGE Constant for the MEDIA_TYPE column indicating that file is an image file.
MEDIA_TYPE_NONE Constant for the MEDIA_TYPE column indicating that file is not an audio, image, video or playlist file.
MEDIA_TYPE_PLAYLIST Constant for the MEDIA_TYPE column indicating that file is a playlist file.
MEDIA_TYPE_VIDEO Constant for the MEDIA_TYPE column indicating that file is a video file.
MIME_TYPE The MIME type of the file
PARENT The index of the parent directory of the file
TITLE The title of the content

4.3 MediaStore.Images

包含所有可用图片的元数据。下面是对其内部类的整理:

4.3.1 MediaStore.Images.ImageColumns

代表所有图片文件的列

字段 解析
BUCKET_DISPLAY_NAME The bucket display name of the image.
BUCKET_ID The bucket id of the image.
DATE_TAKEN The date & time that the image was taken in units of milliseconds since jan 1, 1970.
DESCRIPTION The description of the image
IS_PRIVATE Whether the video should be published as public or private
LATITUDE The latitude where the image was captured.
LONGITUDE The longitude where the image was captured.
MINI_THUMB_MAGIC The mini thumb id.
ORIENTATION The orientation for the image expressed as degrees.
PICASA_ID The picasa id of the image

4.3.2 MediaStore.Images.Media

提供各种操作方法,继承ImageColumns

字段 解析
CONTENT_TYPE The MIME type of of this directory of images.
DEFAULT_SORT_ORDER The default sort order for this table
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
getBitmap(ContentResolver cr, Uri url) Retrieves an image for the given url as a Bitmap.
getContentUri(String volumeName) Get the content:// style URI for the image media table on the given volume.
insertImage(ContentResolver cr, String imagePath, String name, String description) Insert an image and create a thumbnail for it.
insertImage(ContentResolver cr, Bitmap source, String title, String description) Insert an image and create a thumbnail for it.
query(ContentResolver cr, Uri uri, String[] projection)
query(ContentResolver cr, Uri uri, String[] projection, String where,String orderBy)
query(ContentResolver cr, Uri uri, String[] projection, String selection,String[] selectionArgs, String orderBy)

4.3.3 MediaStore.Images.Thumbnails

这个类允许开发者去查询并且得到两种略缩图,MINI_KIND: 512 x 384 thumbnail MICRO_KIND: 96 x 96 thumbnail

字段 解析
DATA Path to the thumbnail file on disk.
DEFAULT_SORT_ORDER The default sort order for this table
FULL_SCREEN_KIND
HEIGHT The height of the thumbnail
IMAGE_ID The original image for the thumbnal
KIND The kind of the thumbnail
MICRO_KIND
MINI_KIND
THUMB_DATA The blob raw data of thumbnail
WIDTH The width of the thumbnal
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
cancelThumbnailRequest(ContentResolver cr, long origId) This method cancels the thumbnail request so clients waiting for getThumbnail will be interrupted and return immediately.
cancelThumbnailRequest(ContentResolver cr, long origId, long groupId) This method cancels the thumbnail request so clients waiting for getThumbnail will be interrupted and return immediately.
getContentUri(String volumeName) Get the content:// style URI for the image media table on the given volume.
getThumbnail(ContentResolver cr, long origId, long groupId, int kind, BitmapFactory.Options options) This method checks if the thumbnails of the specified image (origId) has been created.
getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Options options) This method checks if the thumbnails of the specified image (origId) has been created.
query(ContentResolver cr, Uri uri, String[] projection)
queryMiniThumbnail(ContentResolver cr, long origId, int kind, String[] projection)
queryMiniThumbnails(ContentResolver cr, Uri uri, int kind, String[] projection)

4.4 MediaStore.MediaColumns

大多数MediaProvider表的常见字段。

字段 解析
DATA Path to the file on disk.
DATE_ADDED The time the file was added to the media provider Units are seconds since 1970.
DATE_MODIFIED The time the file was last modified Units are seconds since 1970.
DISPLAY_NAME The display name of the file
HEIGHT The height of the image/video in pixels.
MIME_TYPE The MIME type of the file
SIZE The size of the file in bytes
TITLE The title of the content
WIDTH The width of the image/video in pixels.

4.5 MediaStore.Video

包含视频文件的元数据,并提供相应字段和方法。

方法 解析
query(ContentResolver cr, Uri uri, String[] projection)

4.5.1 MediaStore.Video.Media

提供和获取视频文件的Uri,继承VideoColumns

字段 解析
CONTENT_TYPE The MIME type for this table.
DEFAULT_SORT_ORDER The default sort order for this table
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
getContentUri(String volumeName) Get the content:// style URI for the video media table on the given volume.

4.5.2 MediaStore.Video.Thumbnails

这个类让开发者去查询并且得到两种略缩图:MINI_KIND: 512 x 384 thumbnail MICRO_KIND: 96 x 96 thumbnail

字段 解析
DATA Path to the thumbnail file on disk.
DEFAULT_SORT_ORDER The default sort order for this table
FULL_SCREEN_KIND
HEIGHT The height of the thumbnail
KIND The kind of the thumbnail
MICRO_KIND
MINI_KIND
VIDEO_ID The original image for the thumbnal
WIDTH The width of the thumbnal
EXTERNAL_CONTENT_URI The content:// style URI for the "primary" external storage volume.
INTERNAL_CONTENT_URI The content:// style URI for the internal storage.
方法 解析
cancelThumbnailRequest(ContentResolver cr, long origId) This method cancels the thumbnail request so clients waiting for getThumbnail will be interrupted and return immediately.
cancelThumbnailRequest(ContentResolver cr, long origId, long groupId) This method cancels the thumbnail request so clients waiting for getThumbnail will be interrupted and return immediately.
getContentUri(String volumeName) Get the content:// style URI for the image media table on the given volume.
getThumbnail(ContentResolver cr, long origId, long groupId, int kind, BitmapFactory.Options options) This method checks if the thumbnails of the specified image (origId) has been created.
getThumbnail(ContentResolver cr, long origId, int kind, BitmapFactory.Options options) This method checks if the thumbnails of the specified image (origId) has been created.

4.5.3 MediaStore.Video.VideoColumns

代表所有视频文件的列

字段 解析
ALBUM The album the video file is from, if any
ARTIST The artist who created the video file, if any
BOOKMARK The bookmark for the video.
BUCKET_DISPLAY_NAME The bucket display name of the video.
BUCKET_ID The bucket id of the video.
CATEGORY The YouTube category of the video
DATE_TAKEN The date & time that the video was taken in units of milliseconds since jan 1, 1970.
DESCRIPTION The description of the video recording
DURATION The duration of the video file, in ms
IS_PRIVATE Whether the video should be published as public or private
LANGUAGE The language of the video
LATITUDE The latitude where the video was captured.
LONGITUDE The longitude where the video was captured.
MINI_THUMB_MAGIC The mini thumb id.
RESOLUTION The resolution of the video file, formatted as "XxY"
TAGS The user-added tags associated with a video
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容