Loading media/java/android/media/MediaScanner.java +74 −40 Original line number Diff line number Diff line Loading @@ -336,6 +336,13 @@ public class MediaScanner private boolean mDefaultNotificationSet; /** Whether the scanner has set a default sound for the alarm ringtone. */ private boolean mDefaultAlarmSet; /** Whether the scanner has set a default sound for the ringer ringtone 2. */ private boolean mDefaultRingtone2Set; /** Whether the scanner has set a default sound for the ringer ringtone 3. */ private boolean mDefaultRingtone3Set; /** Whether the scanner has set a default sound for the mms notification ringtone. */ private boolean mDefaultMmsNotificationSet; /** The filename for the default sound for the ringer ringtone. */ private String mDefaultRingtoneFilename; /** The filename for the default sound for the ringer ringtone 2. */ Loading Loading @@ -437,15 +444,19 @@ public class MediaScanner + Settings.System.RINGTONE); } if (!TextUtils .isEmpty(mContext.getResources().getString(R.string.def_custom_sys_ringtone2))) { mDefaultRingtone2Filename = mContext.getResources().getString( R.string.def_custom_sys_ringtone2); if (mDefaultRingtone2Filename == null || TextUtils.isEmpty(mDefaultRingtone2Filename)) { } else { mDefaultRingtone2Filename = mDefaultRingtoneFilename; } if (!TextUtils .isEmpty(mContext.getResources().getString(R.string.def_custom_sys_ringtone3))) { mDefaultRingtone3Filename = mContext.getResources().getString( R.string.def_custom_sys_ringtone3); if (mDefaultRingtone3Filename == null || TextUtils.isEmpty(mDefaultRingtone3Filename)) { } else { mDefaultRingtone3Filename = mDefaultRingtoneFilename; } Loading @@ -458,10 +469,10 @@ public class MediaScanner + Settings.System.NOTIFICATION_SOUND); } if (!TextUtils.isEmpty(mContext.getResources().getString(R.string.def_custom_sys_mms))) { mDefaultMmsNotificationFilename = mContext.getResources().getString( R.string.def_custom_sys_mms); if (mDefaultMmsNotificationFilename == null || TextUtils.isEmpty(mDefaultMmsNotificationFilename.trim())) { } else { mDefaultMmsNotificationFilename = mDefaultNotificationFilename; } Loading Loading @@ -988,6 +999,9 @@ public class MediaScanner } Uri result = null; boolean needToSetSettings = false; boolean needToCustomizeMmsNotification = false; boolean needToCustomizeRingtone2 = false; boolean needToCustomizeRingtone3 = false; if (rowId == 0) { if (mMtpObjectHandle != 0) { values.put(MediaStore.MediaColumns.MEDIA_SCANNER_NEW_OBJECT_ID, mMtpObjectHandle); Loading @@ -1004,11 +1018,26 @@ public class MediaScanner // needed. if (mWasEmptyPriorToScan) { if (notifications && !mDefaultNotificationSet) { needToSetSettings = needToSetSettingsForNotification(entry); needToSetSettings = toSetSettings(entry.mPath, mDefaultNotificationFilename); } else if (ringtones && !mDefaultRingtoneSet) { needToSetSettings = needToSetSettingsForRingtone(entry); needToSetSettings = toSetSettings(entry.mPath, mDefaultRingtoneFilename); } else if (alarms && !mDefaultAlarmSet) { needToSetSettings = needToSetSettingsForAlarm(entry); needToSetSettings = toSetSettings(entry.mPath, mDefaultAlarmAlertFilename); } if (isSoundCustomized()) { if (notifications && !mDefaultMmsNotificationSet) { needToCustomizeMmsNotification = toSetSettings(entry.mPath, mDefaultMmsNotificationFilename); } else if (ringtones) { if (!mDefaultRingtone2Set) { needToCustomizeRingtone2 = toSetSettings(entry.mPath, mDefaultRingtone2Filename); } if (!mDefaultRingtone3Set) { needToCustomizeRingtone3 = toSetSettings(entry.mPath, mDefaultRingtone3Filename); } } } } Loading @@ -1017,7 +1046,10 @@ public class MediaScanner // get priority when bulk inserting. // If the rowId of the inserted file is needed, it gets inserted immediately, // bypassing the bulk inserter. if (inserter == null || needToSetSettings) { if (inserter == null || needToSetSettings || needToCustomizeMmsNotification || needToCustomizeRingtone2 || needToCustomizeRingtone3) { if (inserter != null) { inserter.flushAll(); } Loading Loading @@ -1059,10 +1091,6 @@ public class MediaScanner if(needToSetSettings) { if (notifications) { setSettingIfNotSet(Settings.System.NOTIFICATION_SOUND, tableUri, rowId); if (isSoundCustomized()) { setSettingIfNotSet(Settings.System.MMS_NOTIFICATION_SOUND, tableUri, rowId); } mDefaultNotificationSet = true; } else if (ringtones) { // memorize default system ringtone persistently Loading @@ -1088,34 +1116,35 @@ public class MediaScanner } } return result; } private boolean needToSetSettingsForNotification(FileEntry entry) { boolean result = TextUtils.isEmpty(mDefaultNotificationFilename) || doesPathHaveFilename(entry.mPath, mDefaultNotificationFilename); if (isSoundCustomized()) { result = result || TextUtils.isEmpty(mDefaultMmsNotificationFilename) || doesPathHaveFilename(entry.mPath, mDefaultMmsNotificationFilename); if (notifications && needToCustomizeMmsNotification) { overrideSetting(Settings.System.MMS_NOTIFICATION_SOUND, tableUri, rowId); mDefaultMmsNotificationSet = true; } else if (ringtones) { int phoneCount = TelephonyManager.getDefault().getPhoneCount(); if (phoneCount == 2 && needToCustomizeRingtone2) { overrideSetting(Settings.System.RINGTONE_2, tableUri, rowId); mDefaultRingtone2Set = true; } return result; if (phoneCount == 3) { if (needToCustomizeRingtone2) { overrideSetting(Settings.System.RINGTONE_2, tableUri, rowId); mDefaultRingtone2Set = true; } if (needToCustomizeRingtone3) { overrideSetting(Settings.System.RINGTONE_3, tableUri, rowId); mDefaultRingtone3Set = true; } private boolean needToSetSettingsForRingtone(FileEntry entry) { boolean result = TextUtils.isEmpty(mDefaultRingtoneFilename) || doesPathHaveFilename(entry.mPath, mDefaultRingtoneFilename); if (isSoundCustomized()) { result = result || TextUtils.isEmpty(mDefaultRingtone2Filename) || doesPathHaveFilename(entry.mPath, mDefaultRingtone2Filename) || TextUtils.isEmpty(mDefaultRingtone3Filename) || doesPathHaveFilename(entry.mPath, mDefaultRingtone3Filename); } } } return result; } private boolean needToSetSettingsForAlarm(FileEntry entry) { return TextUtils.isEmpty(mDefaultAlarmAlertFilename) || doesPathHaveFilename(entry.mPath, mDefaultAlarmAlertFilename); private boolean toSetSettings(String path, String filename) { return TextUtils.isEmpty(filename) || doesPathHaveFilename(path, filename); } private boolean doesPathHaveFilename(String path, String filename) { Loading @@ -1137,6 +1166,11 @@ public class MediaScanner } } private void overrideSetting(String settingName, Uri uri, long rowId) { Settings.System.putString(mContext.getContentResolver(), settingName, ContentUris.withAppendedId(uri, rowId).toString()); } private int getFileTypeFromDrm(String path) { if (!isDrmEnabled()) { return 0; Loading media/java/android/media/RingtoneManager.java +11 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,13 @@ public class RingtoneManager { */ public static final int TYPE_ALARM = 4; /** * Type that refers to sounds that are used for mms notifications. * Note: This constant value is only for internal usage and * can't be added to TYPE_ALL. */ private static final int TYPE_MMS_NOTIFICATION = 0x00800000; /** * All types of sounds. */ Loading Loading @@ -698,6 +705,8 @@ public class RingtoneManager { return Settings.System.NOTIFICATION_SOUND; } else if ((type & TYPE_ALARM) != 0) { return Settings.System.ALARM_ALERT; } else if ((type & TYPE_MMS_NOTIFICATION) != 0) { return Settings.System.MMS_NOTIFICATION_SOUND; } else { return null; } Loading Loading @@ -733,6 +742,8 @@ public class RingtoneManager { return TYPE_NOTIFICATION; } else if (defaultRingtoneUri.equals(Settings.System.DEFAULT_ALARM_ALERT_URI)) { return TYPE_ALARM; } else if (defaultRingtoneUri.equals(Settings.System.DEFAULT_MMS_NOTIFICATION_URI)) { return TYPE_MMS_NOTIFICATION; } else { return -1; } Loading Loading
media/java/android/media/MediaScanner.java +74 −40 Original line number Diff line number Diff line Loading @@ -336,6 +336,13 @@ public class MediaScanner private boolean mDefaultNotificationSet; /** Whether the scanner has set a default sound for the alarm ringtone. */ private boolean mDefaultAlarmSet; /** Whether the scanner has set a default sound for the ringer ringtone 2. */ private boolean mDefaultRingtone2Set; /** Whether the scanner has set a default sound for the ringer ringtone 3. */ private boolean mDefaultRingtone3Set; /** Whether the scanner has set a default sound for the mms notification ringtone. */ private boolean mDefaultMmsNotificationSet; /** The filename for the default sound for the ringer ringtone. */ private String mDefaultRingtoneFilename; /** The filename for the default sound for the ringer ringtone 2. */ Loading Loading @@ -437,15 +444,19 @@ public class MediaScanner + Settings.System.RINGTONE); } if (!TextUtils .isEmpty(mContext.getResources().getString(R.string.def_custom_sys_ringtone2))) { mDefaultRingtone2Filename = mContext.getResources().getString( R.string.def_custom_sys_ringtone2); if (mDefaultRingtone2Filename == null || TextUtils.isEmpty(mDefaultRingtone2Filename)) { } else { mDefaultRingtone2Filename = mDefaultRingtoneFilename; } if (!TextUtils .isEmpty(mContext.getResources().getString(R.string.def_custom_sys_ringtone3))) { mDefaultRingtone3Filename = mContext.getResources().getString( R.string.def_custom_sys_ringtone3); if (mDefaultRingtone3Filename == null || TextUtils.isEmpty(mDefaultRingtone3Filename)) { } else { mDefaultRingtone3Filename = mDefaultRingtoneFilename; } Loading @@ -458,10 +469,10 @@ public class MediaScanner + Settings.System.NOTIFICATION_SOUND); } if (!TextUtils.isEmpty(mContext.getResources().getString(R.string.def_custom_sys_mms))) { mDefaultMmsNotificationFilename = mContext.getResources().getString( R.string.def_custom_sys_mms); if (mDefaultMmsNotificationFilename == null || TextUtils.isEmpty(mDefaultMmsNotificationFilename.trim())) { } else { mDefaultMmsNotificationFilename = mDefaultNotificationFilename; } Loading Loading @@ -988,6 +999,9 @@ public class MediaScanner } Uri result = null; boolean needToSetSettings = false; boolean needToCustomizeMmsNotification = false; boolean needToCustomizeRingtone2 = false; boolean needToCustomizeRingtone3 = false; if (rowId == 0) { if (mMtpObjectHandle != 0) { values.put(MediaStore.MediaColumns.MEDIA_SCANNER_NEW_OBJECT_ID, mMtpObjectHandle); Loading @@ -1004,11 +1018,26 @@ public class MediaScanner // needed. if (mWasEmptyPriorToScan) { if (notifications && !mDefaultNotificationSet) { needToSetSettings = needToSetSettingsForNotification(entry); needToSetSettings = toSetSettings(entry.mPath, mDefaultNotificationFilename); } else if (ringtones && !mDefaultRingtoneSet) { needToSetSettings = needToSetSettingsForRingtone(entry); needToSetSettings = toSetSettings(entry.mPath, mDefaultRingtoneFilename); } else if (alarms && !mDefaultAlarmSet) { needToSetSettings = needToSetSettingsForAlarm(entry); needToSetSettings = toSetSettings(entry.mPath, mDefaultAlarmAlertFilename); } if (isSoundCustomized()) { if (notifications && !mDefaultMmsNotificationSet) { needToCustomizeMmsNotification = toSetSettings(entry.mPath, mDefaultMmsNotificationFilename); } else if (ringtones) { if (!mDefaultRingtone2Set) { needToCustomizeRingtone2 = toSetSettings(entry.mPath, mDefaultRingtone2Filename); } if (!mDefaultRingtone3Set) { needToCustomizeRingtone3 = toSetSettings(entry.mPath, mDefaultRingtone3Filename); } } } } Loading @@ -1017,7 +1046,10 @@ public class MediaScanner // get priority when bulk inserting. // If the rowId of the inserted file is needed, it gets inserted immediately, // bypassing the bulk inserter. if (inserter == null || needToSetSettings) { if (inserter == null || needToSetSettings || needToCustomizeMmsNotification || needToCustomizeRingtone2 || needToCustomizeRingtone3) { if (inserter != null) { inserter.flushAll(); } Loading Loading @@ -1059,10 +1091,6 @@ public class MediaScanner if(needToSetSettings) { if (notifications) { setSettingIfNotSet(Settings.System.NOTIFICATION_SOUND, tableUri, rowId); if (isSoundCustomized()) { setSettingIfNotSet(Settings.System.MMS_NOTIFICATION_SOUND, tableUri, rowId); } mDefaultNotificationSet = true; } else if (ringtones) { // memorize default system ringtone persistently Loading @@ -1088,34 +1116,35 @@ public class MediaScanner } } return result; } private boolean needToSetSettingsForNotification(FileEntry entry) { boolean result = TextUtils.isEmpty(mDefaultNotificationFilename) || doesPathHaveFilename(entry.mPath, mDefaultNotificationFilename); if (isSoundCustomized()) { result = result || TextUtils.isEmpty(mDefaultMmsNotificationFilename) || doesPathHaveFilename(entry.mPath, mDefaultMmsNotificationFilename); if (notifications && needToCustomizeMmsNotification) { overrideSetting(Settings.System.MMS_NOTIFICATION_SOUND, tableUri, rowId); mDefaultMmsNotificationSet = true; } else if (ringtones) { int phoneCount = TelephonyManager.getDefault().getPhoneCount(); if (phoneCount == 2 && needToCustomizeRingtone2) { overrideSetting(Settings.System.RINGTONE_2, tableUri, rowId); mDefaultRingtone2Set = true; } return result; if (phoneCount == 3) { if (needToCustomizeRingtone2) { overrideSetting(Settings.System.RINGTONE_2, tableUri, rowId); mDefaultRingtone2Set = true; } if (needToCustomizeRingtone3) { overrideSetting(Settings.System.RINGTONE_3, tableUri, rowId); mDefaultRingtone3Set = true; } private boolean needToSetSettingsForRingtone(FileEntry entry) { boolean result = TextUtils.isEmpty(mDefaultRingtoneFilename) || doesPathHaveFilename(entry.mPath, mDefaultRingtoneFilename); if (isSoundCustomized()) { result = result || TextUtils.isEmpty(mDefaultRingtone2Filename) || doesPathHaveFilename(entry.mPath, mDefaultRingtone2Filename) || TextUtils.isEmpty(mDefaultRingtone3Filename) || doesPathHaveFilename(entry.mPath, mDefaultRingtone3Filename); } } } return result; } private boolean needToSetSettingsForAlarm(FileEntry entry) { return TextUtils.isEmpty(mDefaultAlarmAlertFilename) || doesPathHaveFilename(entry.mPath, mDefaultAlarmAlertFilename); private boolean toSetSettings(String path, String filename) { return TextUtils.isEmpty(filename) || doesPathHaveFilename(path, filename); } private boolean doesPathHaveFilename(String path, String filename) { Loading @@ -1137,6 +1166,11 @@ public class MediaScanner } } private void overrideSetting(String settingName, Uri uri, long rowId) { Settings.System.putString(mContext.getContentResolver(), settingName, ContentUris.withAppendedId(uri, rowId).toString()); } private int getFileTypeFromDrm(String path) { if (!isDrmEnabled()) { return 0; Loading
media/java/android/media/RingtoneManager.java +11 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,13 @@ public class RingtoneManager { */ public static final int TYPE_ALARM = 4; /** * Type that refers to sounds that are used for mms notifications. * Note: This constant value is only for internal usage and * can't be added to TYPE_ALL. */ private static final int TYPE_MMS_NOTIFICATION = 0x00800000; /** * All types of sounds. */ Loading Loading @@ -698,6 +705,8 @@ public class RingtoneManager { return Settings.System.NOTIFICATION_SOUND; } else if ((type & TYPE_ALARM) != 0) { return Settings.System.ALARM_ALERT; } else if ((type & TYPE_MMS_NOTIFICATION) != 0) { return Settings.System.MMS_NOTIFICATION_SOUND; } else { return null; } Loading Loading @@ -733,6 +742,8 @@ public class RingtoneManager { return TYPE_NOTIFICATION; } else if (defaultRingtoneUri.equals(Settings.System.DEFAULT_ALARM_ALERT_URI)) { return TYPE_ALARM; } else if (defaultRingtoneUri.equals(Settings.System.DEFAULT_MMS_NOTIFICATION_URI)) { return TYPE_MMS_NOTIFICATION; } else { return -1; } Loading