Android媒体的一些使用总结(2)

2.   Android的多媒体如何获取?

Android提供了媒体获取与存储的相关API,主要包含在android.provider.MediaStorepackage中。

MediaStore.Audio.AlbumColumns

Columns representing an album  

MediaStore.Audio.ArtistColumns

Columns representing an artist  

MediaStore.Audio.AudioColumns

Columns for audio file that show up in multiple tables. 

MediaStore.Audio.GenresColumns

Columns representing an audio genre  

MediaStore.Audio.PlaylistsColumns

Columns representing a playlist  

MediaStore.Files.FileColumns

Fields for master table for all media files. 

MediaStore.Images.ImageColumns

 

MediaStore.MediaColumns

Common fields for most MediaProvider tables  

MediaStore.Video.VideoColumns

 

MediaStore

The Media provider contains meta data for all available media on both internal and external storage devices. 

MediaStore.Audio

Container for all audio content. 

MediaStore.Audio.Albums

Contains artists for audio files  

MediaStore.Audio.Artists

Contains artists for audio files  

MediaStore.Audio.Artists.Albums

Sub-directory of each artist containing all albums on which a song by the artist appears. 

MediaStore.Audio.Genres

Contains all genres for audio files  

MediaStore.Audio.Genres.Members

Sub-directory of each genre containing all members. 

MediaStore.Audio.Media

 

MediaStore.Audio.Playlists

Contains playlists for audio files  

MediaStore.Audio.Playlists.Members

Sub-directory of each playlist containing all members. 

MediaStore.Files

Media provider table containing an index of all files in the media storage, including non-media files. 

MediaStore.Images

Contains meta data for all available images. 

MediaStore.Images.Media

 

MediaStore.Images.Thumbnails

This class allows developers to query and get two kinds of thumbnails: MINI_KIND: 512 x 384 thumbnail MICRO_KIND: 96 x 96 thumbnail  

MediaStore.Video

 

MediaStore.Video.Media

 

MediaStore.Video.Thumbnails

This class allows developers to query and get two kinds of thumbnails: MINI_KIND: 512 x 384 thumbnail MICRO_KIND: 96 x 96 thumbnail  

简单的观察一下,发现这些类也就是对数据库中的一些表的封装,弄懂了底层的存储结构,对于了解这些类的作用就很容易了。

Android系统中的每一种媒体文件有两种地址描述方式。

第一种模式,大家知道,在Android中,Content Provider是用来存储和获取公共数据的统一接口,Content Provider为每一类资源分配了URI地址,比如图片的地址就包括MediaStore.Images.Media.INTERNAL_CONTENT_URIMediaStore.Images.Media.EXTERNAL_CONTENT_URI两个基础地址,其值分别是content://media/internal/images/mediacontent://media/external/images/media对应内部库和外部库地址。每一张图片的地址基本上是上面的基础URL地址下加上图片的内部ID。打个比方一张存储卡上的图片ID2,其对应的Uri地址就是content://media/external/images/media/2.知道了这个地址,基本上就可以操作这张图片的所有信息了。

另外一种描述文件地址标识就是传统的文件路径模式了,比如一张存储卡上的图片地址可能描述为:/mnt/sdcard/images/1.jpg。其实这个路径存储在images表格中的data字段中,有了这点关联,我们可以在这两种模式下进行任意切换。

前一种模式下,主要通过MediaStore.Images.MediaMediaStore.Audio.MediaMediaStore.Video.Media三个库中的query方法来查询或者获取特定条件的媒体了。

基本用法1:从一个Content Uri地址中生成Bitmap

可以采用android.provider.MediaStore.Images.Media.getBitmap(ContentResolver cr, Uri url)方法,其中ContentResolver是应用与资源之间的衔接人,它的示例通常可以通过在Activity中调用的getContentResolver()方法中获取。Uri地址就是上面描述的content://media/external/images/media/2类似地址,也就是Content Provider定义的地址形式。

基本用法2:从一个传统地址中生成Bitmap

有时候我们只知道一张图片的路径,并不知道图片的内部地址,想去获取该图片,可以采用android.graphics.BitmapFactory中的decodeXXX方法来搞定,比如decodeFile方法就是从文件路径中读取图片,原图片可以支持jpg,png,gif,bmp等各种格式。decodeByteArray就是从字节流中解码了。最后都是转换成Bitmap格式。

基本用法3获取一张图片的缩略图

有时候我们需要显示图片的缩略图,可以采用android.provider.MediaStore.Images.ThumbnailsgetThumbnail方法。另外其实也可以采用bitmapcompress的方法对图片进行一些压缩处理。

 

发布了27 篇原创文章 · 获赞 7 · 访问量 28万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览