android 设置默认铃声,Android系统修改默认铃声
Andriod手機(jī)的鈴聲默認(rèn)保存在system/media/audio/下面,有四個(gè)文件夾,分別是alarms,notifications,ringtones,ui。對(duì)應(yīng)鬧鐘、通知、鈴聲、UI音效。root的手機(jī)可以直接替換修改相應(yīng)目錄下的文件來(lái)修改鈴聲。那這些聲音是從哪里來(lái)的呢。由于需要修改默認(rèn)的鈴聲,就讀了一下源碼,這里進(jìn)行記錄一下。
在源碼中,這些文件保存在frameworks\base\data\sounds目錄下面,通過(guò)修改相應(yīng)的mk文件把這些聲音文件放到手機(jī)的相應(yīng)目錄。手機(jī)啟動(dòng)后會(huì)調(diào)用媒體庫(kù)對(duì)手機(jī)內(nèi)外存儲(chǔ)上的多媒體文件進(jìn)行掃描,保存其URI到媒體庫(kù)的數(shù)據(jù)庫(kù)中。當(dāng)設(shè)置鈴聲時(shí),會(huì)調(diào)用媒體庫(kù)的(mediaProvider)RingtonePickerActivity進(jìn)行設(shè)置。這里鈴聲Uri保存在數(shù)據(jù)庫(kù)中,通過(guò)媒體庫(kù)掃描出來(lái)顯示個(gè)列表供選擇。默認(rèn)鈴聲的URI保存在設(shè)置(Settings)的數(shù)據(jù)庫(kù)中,在表system里面。
修改默認(rèn)鈴聲
修改mk文件,ro.config.ringtone對(duì)應(yīng)手機(jī)默認(rèn)鈴聲,ro.config.alarm_alert對(duì)應(yīng)鬧鐘默認(rèn)鬧鈴,ro.config.notification_sound設(shè)置通知默認(rèn)響鈴。我這里修改的是/build/target/product/full_base.mk,編譯的時(shí)候這些值會(huì)被編到? build.prop內(nèi)。
PRODUCT_PROPERTY_OVERRIDES := \
ro.config.ringtone=yami_style1.ogg \
ro.config.alarm_alert=Alarm_Rooster_02.ogg \
ro.config.notification_sound=yami_notification.ogg
在MediaScanner.java中讀取并保存配置到設(shè)置里面。
private static final String DEFAULT_RINGTONE_PROPERTY_PREFIX ="ro.config.";
private void setDefaultRingtoneFileNames() {
mDefaultRingtoneFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.RINGTONE);
mDefaultNotificationFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.NOTIFICATION_SOUND);
mDefaultAlarmAlertFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.ALARM_ALERT);
}
...
if (TextUtils.isEmpty(mDefaultRingtoneFilename) ||
doesPathHaveFilename(entry.mPath, mDefaultRingtoneFilename)) {
needToSetSettings = true;
}
...
if(needToSetSettings) {
if (notifications) {
setSettingIfNotSet(Settings.System.NOTIFICATION_SOUND, tableUri, rowId);
mDefaultNotificationSet = true;
} else if (ringtones) {
setSettingIfNotSet(Settings.System.RINGTONE, tableUri, rowId);
if (MSimTelephonyManager.getDefault().isMultiSimEnabled()) {
// Set the setting to the given URI for RINGTONE_2
setSettingIfNotSet(Settings.System.RINGTONE_2, tableUri, rowId);
}
mDefaultRingtoneSet = true;
} else if (alarms) {
setSettingIfNotSet(Settings.System.ALARM_ALERT, tableUri, rowId);
mDefaultAlarmSet = true;
}
}
這里看到寫(xiě)入了數(shù)據(jù)庫(kù)中。
總結(jié)
以上是生活随笔為你收集整理的android 设置默认铃声,Android系统修改默认铃声的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android view 随机位置,an
- 下一篇: android 区分系统应用,Andro