想在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)/notifications/AlertSound_sample-08.ogg:system/media/audio/notifications/AlertSound_sample-08.ogg /</p><p>$(LOCAL_PATH)/test_music.ogg:system/media/audio/notifications/test_music.ogg/</p><p>$(LOCAL_PATH)/Alarm_Buzzer.ogg:system/media/audio/alarms/Alarm_Buzzer.ogg /
$(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檔案中。