1、第一部分
安卓手机启动时候,会将手机系统目录下的音频文件信息加载到 /data/data/com.android.providers.media/databases目录下的internal.db的audio_meta表中,
需要通过sqlite3命令访问该部分内容。
adb操作命令如下:
>adb shell
$su
su
# cd /data/data/com.android.providers.media/databases
cd /data/data/com.android.providers.media/databases
# ls
ls
settings.db
setting.db
external-ffffffff.db
internal.db
# sqlite3 internal.db
sqlite3 internal.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tab
.tab
album_art artists searchhelpertitle
album_info artists_albums_map thumbnails
albums audio video
android_metadata audio_meta videothumbnails
artist_info images
artist_info_for_internal search
sqlite> select * from audio_meta;
select * from audio_meta;
1|/system/media/audio/ui/VideoRecord.ogg|VideoRecord.ogg|5582|application/ogg|14
10522689|1354005280|VideoRecordQQQQQQQQQQQQ|638|1||1|0||0|1|0|0|1|0||
2|/system/media/audio/ui/Unlock.ogg|Unlock.ogg|4666|application/ogg|1410522689|1
354005280|UnlockQQQQQQQ|498|2||1|0||0|1|0|0|1|0||
3|/system/media/audio/ui/LowBattery.ogg|LowBattery.ogg|6585|application/ogg|1410
522689|1354005280|LowBatteryQQQQQQQQQQQ|412|3||1|0||0|1|0|0|1|0||
4|/system/media/audio/ui/Lock.ogg|Lock.ogg|4661|application/ogg|1410522689|13540
05280|LockQQQQQ|497|2||1|0||0|1|0|0|1|0||
5|/system/media/audio/ui/KeypressStandard.ogg|KeypressStandard.ogg|5194|applicat
ion/ogg|1410522689|1354005280|KeypressStandardQQQQQQQQQQQQQQQQQ|433|4||1|0||0|1|
0|0|1|0||
6|/system/media/audio/ui/KeypressSpacebar.ogg|KeypressSpacebar.ogg|7392|applicat
ion/ogg|1410522689|1354005280|KeypressSpacebarQQQQQQQQQQQQQQQQQ|616|4||1|0||0|1|
0|0|1|0||
7|/system/media/audio/ui/KeypressReturn.ogg|KeypressReturn.ogg|7972|application/
ogg|1410522689|1354005280|KeypressReturnQQQQQQQQQQQQQQQ|664|4||1|0||0|1|0|0|1|0|
|
8|/system/media/audio/ui/KeypressDelete.ogg|KeypressDelete.ogg|6193|application/
ogg|1410522689|1354005280|KeypressDeleteQQQQQQQQQQQQQQQ|516|4||1|0||0|1|0|0|1|0|
|
9|/system/media/audio/ui/Effect_Tick.ogg|Effect_Tick.ogg|3994|application/ogg|14
10522690|1354005280|Effect_TickQQQQQQQQQQQQ|399|3||1|0||0|1|0|0|1|0||
…..
2、第二部分
手机的电话铃声、短信铃声、闹铃铃声的配置信息则被保存在 /data/data/com.android.providers.settings/databases目录下的settings.db的system表中,同样需要通过sqlite3命令访问该部分内容。
adb 命令操作如下:
>adb shell
$su
su
# cd /data/data/com.android.providers.settings/databases
cd /data/data/com.android.providers.settings/databases
# ls
ls
settings.db
# sqlite3 settings.db
sqlite3 settings.db
SQLite version 3.6.22
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tab
.tab
android_metadata bookmarks proxylist system
bluetooth_devices proxy secure trusted_list
sqlite> .schema system
.schema system
CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXTUNIQUE ON C
ONFLICT REPLACE,value TEXT);
CREATE INDEX systemIndex1 ON system (name);
sqlite> select * from system;
select * from system;
1|volume_music|6
3|volume_system|7
5|volume_alarm|6
6|volume_notification|5
7|volume_bluetooth_sco|6
8|mode_ringer|2
9|vibrate_on|4
10|mode_ringer_streams_affected|1062
11|mute_streams_affected|46
12|dim_screen|1
14|screen_off_timeout|60000
15|emergency_tone|0
16|call_auto_retry|0
17|dtmf_tone_type|0
18|hearing_aid|0
19|tty_mode|0
21|airplane_mode_radios|cell,bluetooth,wifi
22|wifi_sleep_policy|2
23|wifi_cellular_wlan|2
24|auto_time|1
26|screen_brightness_mode|0
27|window_animation_scale|1.0
28|transition_animation_scale|1.0
30|haptic_feedback_enabled|1
31|notification_light_pulse|1
32|set_install_location|0
34|power_sounds_enabled|1
35|low_battery_sound|/system/media/audio/ui/LowBattery.ogg
36|dock_sounds_enabled|0
37|desk_dock_sound|/system/media/audio/ui/Dock.ogg
38|desk_undock_sound|/system/media/audio/ui/Undock.ogg
39|car_dock_sound|/system/media/audio/ui/Dock.ogg
40|car_undock_sound|/system/media/audio/ui/Undock.ogg
42|lock_sound|/system/media/audio/ui/Lock.ogg
43|unlock_sound|/system/media/audio/ui/Unlock.ogg
44|vibrate_in_silent|0
45|phone_profiles_mode|general
46|profiles_last_mode|general
47|general_volume|5
48|meeting_volume|0
49|outdoor_volume|7
50|indoor_volume|5
51|sms_validity|255
52|notifications_use_ring_volume|1
53|time_12_24|24
54|autocheck_update_mode_on|1
55|autocheck_update_frequency|3
56|Is_Standby_Select_Card_Show|0
58|sim_init_state|true
59|next_alarm_formatted|
60|wlantogprsyes|false
61|timeouttip|0
62|isselectcellular|false
66|dtmf_tone|1
67|sound_effects_enabled|1
68|lockscreen_sounds_enabled|1
71|volume_fm|12
72|volume_fm_last_audible|12
73|volume_voice|5
74|volume_voice_last_audible|5
82|stay_on_while_plugged_in|0
83|bd_setting_i|866595015507504
84|5AF931DD20E44BA038E5904D7BD5111A|22B2AC5E0FA979E617B2972DCB3ED632
85|com.baidu.deviceid|22B2AC5E0FA979E617B2972DCB3ED632
87|lsf_PushEngine|{"PushEngine":[]}
90|gprs_connection_sim_setting|0
94|currentAudioProfileId|1
98|screen_brightness|255
103|accelerometer_rotation|1
104|airplane_mode_on|0
135|volume_ring|6
136|volume_ring_last_audible|6
177|default_install_location|2
179|notification_sound|content://media/internal/audio/media/51
180|alarm_alert|content://media/internal/audio/media/69
181|ringtone|content://media/internal/audio/media/56
上述查询结果最后三个记录,即为手机系统当前的三种铃声设置信息,其中
notification_sound:表示手机系统当前的短信铃声,选择的是第一部分中audio_meta表中id为51的音频文件;
alarm_alert:表示手机系统当前的闹铃铃声,选择的是第一部分中audio_meta表中id为69的音频文件;
ringtone:表示手机系统当前的来电铃声,选择的第一部分audio_meta表中id为56的音频文件;
因此,如果要通过adb修改手机的铃声,只需要通过sql语句修改以上三条记录即可,比如修改来电铃声,可以在第二部分中执行以下sql语句:
sqlite> update system set value='content://media/internal/audio/media/72'where name='ringtone';
这样就把第一部分查询的id号为72的音频文件设置成了当前的来电铃声。
查询一下修改的结果:
sqlite> select * from system where name='ringtone';
select * from system where name='ringtone';
187|ringtone|content://media/internal/audio/media/72
在真机上查看一下来电铃声设置即可确认上述修改是否成功。
短信和闹钟铃声的修改采用的方法和来电铃声相同。