Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6e7671c1 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "RP: Notification and ringtone can't be overlaid by carrier"

parents deb0fd90 557b2acd
Loading
Loading
Loading
Loading
+74 −40
Original line number Diff line number Diff line
@@ -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. */
@@ -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;
        }

@@ -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;
        }

@@ -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);
@@ -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);
                            }
                        }
                    }
                }

@@ -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();
                    }
@@ -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
@@ -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) {
@@ -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;
+11 −0
Original line number Diff line number Diff line
@@ -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.
     */
@@ -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;
        }
@@ -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;
        }