> 文档中心 > Android基础#18:Android中声音文件与数据库表的对应关系,数据库的查询,sqlite

Android基础#18:Android中声音文件与数据库表的对应关系,数据库的查询,sqlite

    似乎任何一个成熟的系统,都支持数据库。-----箴言-----

内容简介:

大家知道,在setings应用中,用户可以设置来电铃声,通知铃声,闹铃等,那么,这些声音放在哪,对应的数据库又是什么?

在Android中,使用sqlite进行数据库的存储和访问。

声音设置文件与数据库的对应关系:
在声音设置时,会将内置的声音和SD Card(如果存在的话)都显示出来,对应的声音目录为:
(需要再root过的设备中才能查看)

1. 内置的: /system/media/audio下的alarms,ringtones,notifications分别存放了闹铃,铃声,通知铃声, 对应的数据库表为:

/data/data/com.android.providers.media/databases/audio。 事实上,audio是一个视图,真正的表是audio_meta,正如下面的例子一样,用.schema audio可以显示出创建audio的SQL语句。

2. SD Card: /sdcard,对应的数据库表为:external-xxxxxxx.db

在系统启动时,Mediascanner会将内置的和SD card上的文件进行扫描,并创建出上面提到的数据库。这样一来,应用程序就可以通过Android提供的ContentResolver来进行数据的访问了。

下面是一个例子(查询内置声音):
 

# /root/tools/adb/adb shell
# cd /data/data/com.android.providers.media/databases

# ls
internal.db-shm
internal.db
internal.db-wal
external-1ebb0278.db

# sqlite3 internal.db
SQLite version 3.7.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

sqlite> .tab
album_art              artists_albums_map     search               
album_info             audio                  searchhelpertitle    
albums                 audio_meta             thumbnails           
android_metadata       audio_sort             video                
artist_info            audio_sort_view        videothumbnails      
artist_info_sort_view  images               

 

artists                images_album_search  

 

sqlite> .schema 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;
CREATE TRIGGER audio_delete INSTEAD OF DELETE ON audio BEGIN DELETE from audio_meta where _id=old._id;DELETE from audio_playlists_map where audio_id=old._id;DELETE from audio_genres_map where audio_id=old._id;END;

sqlite> select * from audio;
1|/system/media/audio/alarms/闹钟02.ogg|闹钟02.ogg|19803|application/ogg|1313638400|1313426096|闹钟02QßQßDQ*Q*Q|1875|1||1|0||0|0|1|0|0||1|||1QQQQQQQ-183121033|alarms

......

 注:sqlite数据库,是Android系统使用的数据库。