Android來電鈴聲預設設定的實現方法與如何設定語音來電的預設鈴聲
一、Android來電鈴聲預設設定的實現方法Andoird預設來電鈴聲的設定方法為修改build/target/product/core.mk的ro.config.ringtone的值如ro.config.ringtone=Backroad.ogg,該音樂檔案必須於framework/base/data/sounds/Android.mk中加入音樂檔案。framework/base/media/java/android/media/MediaScanner.java中類的初始化時會設定預設鈴聲的檔案名稱的變數mDefaultRingtoneFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX + Setting.System.RINGTONE);MediaScanner該類會搜尋音樂檔案必插入資料庫中,搜尋過程中檢查是否與設定的預設鈴聲相同,如果相同則設為預設鈴聲。} else if (ringtones && mWasEmptyPriorToScan && !mDefaultRingtoneSet) {
if (TextUtils.isEmpty(mDefaultRingtoneFilename) ||
doesPathHaveFilename(entry.mPath, mDefaultRingtoneFilename)) {
setSettingIfNotSet(Settings.System.RINGTONE, tableUri, rowId);
setProfileSettings(AudioProfileManager.TYPE_RINGTONE, tableUri, rowId);
mDefaultRingtoneSet = true;
}
}二、如何設定語音來電的預設鈴聲首先在core.mk中新增ro.config.videocall=BentleyDubs.ogg。在framework/base/media/java/android/media/MediaScanner.java類中新加兩個成員變數
private boolean mDefaultVideoCallSet;
private String mDefaultVideoCallFilename;在setDefaultRingtoneFileNames()方法中加入以下代碼初始化預設鈴聲的檔案名稱
mDefaultVideoCallFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.VIDEO_CALL);
在endFile()方法中加入以下代碼設定語音來電的預設鈴聲 } else if (ringtones && mWasEmptyPriorToScan && !mDefaultVideoCallSet) {
if (TextUtils.isEmpty(mDefaultVideoCallFilename) ||
doesPathHaveFilename(entry.mPath, mDefaultVideoCallFilename)) {
setSettingIfNotSet(Settings.System.VIDEO_CALL, tableUri, rowId);
setProfileSettings(AudioProfileManager.TYPE_VIDEO_CALL, tableUri, rowId);
mDefaultVideoCallSet = true;
}
}