在Android Q以前,我们配置默认铃声时是在/frameworks/base/media/java/android/media/MediaScanner.java
如我之前的几笔提交:
Change-Id: I21cd1b402952c683bc51a6d53c5c4181459adcc6
Change-Id: Ic9348f78d7f3635ede7d2e857ccb481ccdff9f9e
Change-Id: I0489ae3e98bdc46c919880a52d7c29eb9432f9b1
Change-Id: I024aaa63cea33601eb8b4198f03dad8b9bd276ed
Change-Id: I8602ba5bb0257841c92ae16a996cda6e8de88767
但是在某MTK的Q升级项目中做一个AMX定制需求[AMX] Tone Customization(当SKUID为600CLA时需要增加InstitucionalRubrica.mp3铃声并配置为默认的来电,短信,彩信铃声)
Change-Id: Ifde79c5a68505738d7ad1bc55cb56c36bc2e6ef9
Change-Id: I23e57aa466dbaac34e3c95f6b53b6768c5b6283c
发现在/frameworks/base/media/java/android/media/MediaScanner.java配置不起效果,且无logcat输出:
private void setDefaultRingtoneFileNames() {
//+add, 20191114, for claro default ringtone
mSkuId = SystemProperties.get("ro.boot.skuid");
String productDevice = SystemProperties.get("ro.product.device", "0");
Log.v(TAG, "chentest mSkuId=" + mSkuId + " productDevice=" + productDevice);
if (this.mSkuId != null && this.mSkuId.equals("600CLA") && "DRX".equals(productDevice)) {
mDefaultRingtoneFilename = CLA_DEF_RINGTONE;
mDefaultRingtone2Filename = CLA_DEF_RINGTONE;
mDefaultNotificationFilename = CLA_DEF_RINGTONE;
Log.v(TAG, "chentest DRX 600CLA mDefaultRingtoneFilename=" + mDefaultRingtoneFilename
+ " mDefaultRingtone2Filename=" + mDefaultRingtone2Filename
+ " mDefaultNotificationFilename=" + mDefaultNotificationFilename);
}else{
mDefaultRingtoneFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.RINGTONE);
mDefaultNotificationFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.NOTIFICATION_SOUND);
mDefaultRingtone2Filename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.RINGTONE_SIM2);
}
//- add, 20191114, for claro default ringtone
mDefaultAlarmAlertFilename = SystemProperties.get(DEFAULT_RINGTONE_PROPERTY_PREFIX
+ Settings.System.ALARM_ALERT);
Log.v(TAG, "chentest [setDefaultRingtoneFileNames] mDefaultRingtoneFilename=" + mDefaultRingtoneFilename
+ " mDefaultRingtone2Filename=" + mDefaultRingtone2Filename
+ " mDefaultNotificationFilename=" + mDefaultNotificationFilename
+ " mDefaultAlarmAlertFilename=" + mDefaultAlarmAlertFilename);
}
发现在packages/providers/MediaProvider/src/com/android/providers/media/MediaService.java中配置即可生效
private static String getDefaultRingtoneFilename(int type) {
//add, 20191119, for claro default ringtone
switch (type) {
case TYPE_RINGTONE:
if (isDRXCLA()) {
Log.v(TAG,"[getDefaultRingtoneFilename] DRX CLA TYPE_RINGTONE is InstitucionalRubrica.mp3");
return "InstitucionalRubrica.mp3";
} else {
return SystemProperties.get("ro.config.ringtone");
}
case TYPE_RINGTONE_SIM2:
if (isDRXCLA()) {
Log.v(TAG,"[getDefaultRingtoneFilename] DRX CLA TYPE_RINGTONE_SIM2 is InstitucionalRubrica.mp3");
return "InstitucionalRubrica.mp3";
} else {
return SystemProperties.get("ro.config.ringtone_sim2");
}
case TYPE_NOTIFICATION:
if (isDRXCLA()) {
Log.v(TAG,"[getDefaultRingtoneFilename] DRX CLA TYPE_NOTIFICATION is InstitucionalRubrica.mp3");
return "InstitucionalRubrica.mp3";
} else {
return SystemProperties.get("ro.config.notification_sound");
}
case TYPE_ALARM: return SystemProperties.get("ro.config.alarm_alert");
default: throw new IllegalArgumentException();
}
}
/*
* add, 20191119, for claro default ringtone
* return if DRX project && CLA skuid
*/
private static boolean isDRXCLA() {
String mSkuId = SystemProperties.get("ro.boot.skuid");
String productDevice = SystemProperties.get("ro.product.device", "0");
Log.v(TAG,"[isDRXCLA] mSkuId="+mSkuId+", productDevice="+productDevice);
if("600CLA".equals(mSkuId) && "DRX".equals(productDevice)) {
return true;
}
return false;
}
即当SKUID为600CLA,项目为DRX时,将铃声,通知的默认音改为InstitucionalRubrica.mp3