想在Android系统中添加铃声,可以通过adb push 的方法,但如果要多次修改系统,每次push进去就显得太费劲了,这里有个简单的方法,就是把铃声编译进android 的system.img文件中,在每次刷机的时候,铃声就自动添加了。
废话不多说,直接切入主题:
1、Android系统中的铃声都放在了frameworks/base/data/sounds/目录下,所以第一步需要先把铃声拷贝到这个路径下。
进入frameworks/base/data/sounds/目录
~/work/android_src$ cd frameworks/base/data/sounds/
2、把需要添加的音频文件test_music.ogg拷贝到这个目录
~/work/android_src/frameworks/base/data/sounds$ ls
Alarm_Beep_01.ogg Alarm_Rooster_02.ogg effects newwavelabs Ring_Classic_03.ogg Ring_Digital_04.ogg Ring_Synth_04.ogg
Alarm_Beep_02.ogg alert.ogg F1_MissedCall.ogg notifications Ring_Classic_04.ogg Ring_Digital_05.ogg Ring_Synth_05.ogg
Alarm_Beep_03.ogg AudioPackage2.mk F1_New_MMS.ogg OriginalAudio.mk Ring_Classic_05.ogg ringer.ogg ringtones
Alarm_Buzzer.ogg AudioPackage3.mk F1_New_SMS.ogg ring3.ogg Ring_Digital_01.ogg Ring_Synth_01.ogg testfiles
Alarm_Classic.ogg AudioPackage4.mk F1_NewVoicemail.ogg Ring_Classic_01.ogg Ring_Digital_02.ogg Ring_Synth_02.ogg
Alarm_Rooster_01.ogg test_music.ogg Ring_Classic_02.ogg Ring_Digital_03.ogg Ring_Synth_03.ogg
3、要在每次编译的时候都把音频文件编译到system.img文件中,还需要找下Android系统管家,也就是*.mk文件。
~/work/android_src/frameworks/base/data/sounds$ lsls -l *.mk
-rwxr-xr-x 1 hyson hyson 7876 2011-01-26 08:16 AudioPackage2.mk
-rwxr-xr-x 1 hyson hyson 7471 2011-01-26 08:16 AudioPackage3.mk
-rwxr-xr-x 1 hyson hyson 7817 2011-01-26 08:16 AudioPackage4.mk
-rwxr-xr-x 1 hyson hyson 3081 2011-01-26 08:16 OriginalAudio.mk
4、修改其中的mk文件,把音频文件添加进去。以修改OriginalAudio.mk为例。
~/work/android_src/frameworks/base/data/sounds$ vi OriginalAudio.mk
$(LOCAL_PATH)/test_music.ogg:system/media/audio/notifications/test_music.ogg/
表示把当前目录的test_music.ogg文件编译到target系统的system/media/audio/notifications/目录下。
5、编译系统
~/work/android_src/frameworks/base/data/sounds$ mm snod
mm snod会直接在当前目录下编译,并把编译结果写入system.img文件中。