Android系统修改默认铃声
2014-06-14 15:26
525 查看
Andriod手机的铃声默认保存在system/media/audio/下面,有四个文件夹,分别是alarms,notifications,ringtones,ui。对应闹钟、通知、铃声、UI音效。root的手机可以直接替换修改相应目录下的文件来修改铃声。那这些声音是从哪里来的呢。由于需要修改默认的铃声,就读了一下源码,这里进行记录一下。
在源码中,这些文件保存在frameworks\base\data\sounds目录下面,通过修改相应的mk文件把这些声音文件放到手机的相应目录。手机启动后会调用媒体库对手机内外存储上的多媒体文件进行扫描,保存其URI到媒体库的数据库中。当设置铃声时,会调用媒体库的(mediaProvider)RingtonePickerActivity进行设置。这里铃声Uri保存在数据库中,通过媒体库扫描出来显示个列表供选择。默认铃声的URI保存在设置(Settings)的数据库中,在表system里面。
修改默认铃声
修改mk文件,ro.config.ringtone对应手机默认铃声,ro.config.alarm_alert对应闹钟默认闹铃,ro.config.notification_sound设置通知默认响铃。我这里修改的是/build/target/product/full_base.mk,编译的时候这些值会被编到
build.prop内。
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中读取并保存配置到设置里面。
private
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;
}
}
这里看到写入了数据库中。
在源码中,这些文件保存在frameworks\base\data\sounds目录下面,通过修改相应的mk文件把这些声音文件放到手机的相应目录。手机启动后会调用媒体库对手机内外存储上的多媒体文件进行扫描,保存其URI到媒体库的数据库中。当设置铃声时,会调用媒体库的(mediaProvider)RingtonePickerActivity进行设置。这里铃声Uri保存在数据库中,通过媒体库扫描出来显示个列表供选择。默认铃声的URI保存在设置(Settings)的数据库中,在表system里面。
修改默认铃声
修改mk文件,ro.config.ringtone对应手机默认铃声,ro.config.alarm_alert对应闹钟默认闹铃,ro.config.notification_sound设置通知默认响铃。我这里修改的是/build/target/product/full_base.mk,编译的时候这些值会被编到
build.prop内。
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中读取并保存配置到设置里面。
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;
}
}
这里看到写入了数据库中。
相关文章推荐
- Android 系统默认铃声修改
- Android framework系统默认设置修改
- android编译中修改默认的系统应用
- Android系统的改进(八)-- 当把手机当作存储介质连到电脑后,如果指定的铃声在存储卡上,指定的歌曲铃声消失,恢复默认
- Android framework系统默认设置修改
- Android 修改系统浏览器网页默认字体太小 M
- android 中对 gps 默认关闭+语言默认中文的设置+时区设置+修改系统名字+修改系统默认时间
- Android framework系统默认设置修改
- Android 如何修改系统默认字体大小
- Android 系统默认亮度值的修改
- Android系统移植与调试之------->如何修改Android的默认语言、默认时区
- 修改 Android 系统默认语言版本
- Android默认闹钟-铃声-通知提示音修改
- 修改Tiny6410Android系统的开机默认设置
- Android系统移植与调试之------->如何修改Android默认字体大小和设置里面字体大小比例
- Android framework系统默认设置修改
- Android不改Framework代码修改系统默认屏幕亮度
- 修改android默认系统语言为中文和时区
- Android framework系统默认设置修改
- 关于Android4.x系统默认显示方向各种修改