Android媒体的一些使用总结

    技术2022-06-09  51

    主要分为几节:

    1. Android的媒体文件内部是如何存储的?

    2. Andoid的媒体文件如何获取?

    3. 在使用媒体文件的一些小技巧。

     

     1.       Android的多媒体如何存储的?

    Android的多媒体文件主要存储在/data/data/com.android.providers.media/databases目录下,该目录下有两个db文件,一个是内部存储数据库文件(internal.db),一个是存储卡数据库(external-XXXX.db)。媒体文件的操作主要是围绕着这两个数据库来进行。这两个数据库的结构是完全一模一样的。

    我们先看一下这两个数据库包含了哪些表。

    album_art            audio                search

    album_info           audio_genres         searchhelpertitle

    albums               audio_genres_map     thumbnails

    android_metadata     audio_meta           video

    artist_info          audio_playlists      videothumbnails

    artists              audio_playlists_map

    artists_albums_map   images

    先从基本的分析:

    Images表:主要存储images信息。可以看一下这个表的结构:

    CREATE TABLE images (_id INTEGER PRIMARY KEY,_data TEXT,_size INTEGER,_display_name TEXT,mime_type TEXT,title

    TEXT,date_added INTEGER,date_modified INTEGER,description TEXT,picasa_id TEXT,isprivate INTEGER,latitude DOUBL

    E,longitude DOUBLE,datetaken INTEGER,orientation INTEGER,mini_thumb_magic INTEGER,bucket_id TEXT,bucket_displa

    y_name TEXT);

    包含了一些基本信息,其中大家一看就明白了。

    Thumbnails表:这个表和images表是有直接关系的。主要存储图片的缩略图,Android为每一张保存进系统的图片文件都会自动生成一张缩略图文件。关于这一点还有一些特殊的技巧后面再讲。我们可以看一下这个表的结构:

    CREATE TABLE thumbnails (_id INTEGER PRIMARY KEY,_data TEXT,image_id INTEGER,kind INTEGER,width INTEGER,height  INTEGER);

    每一张image对应一条thumbnail记录。

    Video表:主要存储视频信息了。和images表类似。表结构如下:

    CREATE TABLE video (_id INTEGER PRIMARY KEY,_data TEXT NOT NULL,_display_name TEXT,_size INTEGER,mime_type TEXT,date_added INTEGER,date_modified INTEGER,title TEXT,duration INTEGER,artist TEXT,album TEXT,resolution TEXT,description TEXT,isprivate INTEGER,tags TEXT,category TEXT,language TEXT,mini_thumb_data TEXT,latitude DOUBLE,longitude DOUBLE,datetaken INTEGER,mini_thumb_magic INTEGER, bucket_id TEXT, bucket_display_name TEXT, bookmark INTEGER);

    Videothumbnails表:存储视频的缩略图信息。这个和thumbnails表类似。

    Audio表:音频信息比视频信息和图片信息要稍微复杂一些,主要是存储了一些专辑(album)、歌手(artists)信息,而专辑和歌手信息是单独的表格存储的,audio其实是一个视图,真正的音频数据信息存储在audio_meta表格中。我们可以看一下audio视图的定义:

    CREATE VIEW audio as SELECT * FROM audio_meta LEFT OUTER JOIN artists ON audio_meta.artist_id=artists.artist_id LEFT OUTER JOIN albums ON audio_meta.album_id=albums.album_id;

    Albums表:主要存储专辑信息。

    Artists表:主要存储歌手信息。不多赘述。

    其他的一些表格我们平时可能用的比较少,就不做描述了,有兴趣可以自行研究一下。

     

    (未完待续)


    最新回复(0)