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

Commit 2269ed87 authored by Edgar Arriaga's avatar Edgar Arriaga Committed by Edgar Arriaga García
Browse files

Avoid duplicate ringtone load

When we create the ringtone defer creating the mediaplayer
until AudioAttributes are set, this avoids a duplicate
creation of the mediaplayer which causes a duplicate
asset load for the ringtone.

Bug: 240621827
Test: Receive a call and hear ringtone

Change-Id: Ic36412759bd17e63857182435c02c44b535f3210
parent 0db34344
Loading
Loading
Loading
Loading
+15 −15
Original line number Diff line number Diff line
@@ -73,11 +73,13 @@ public class RingtoneFactory {
        Uri ringtoneUri = incomingCall.getRingtone();
        Ringtone ringtone = null;

        AudioAttributes audioAttrs = getRingtoneAudioAttributes();

        if(ringtoneUri != null && userContext != null) {
            // Ringtone URI is explicitly specified. First, try to create a Ringtone with that.
            try {
                ringtone = RingtoneManager.getRingtone(userContext, ringtoneUri,
                        volumeShaperConfig);
              ringtone = RingtoneManager.getRingtone(
                  userContext, ringtoneUri, volumeShaperConfig, audioAttrs);
            } catch (NullPointerException npe) {
                Log.e(this, npe, "getRingtone: NPE while getting ringtone.");
            }
@@ -104,12 +106,19 @@ public class RingtoneFactory {
            }
            try {
                ringtone = RingtoneManager.getRingtone(
                        contextToUse, defaultRingtoneUri, volumeShaperConfig);
                    contextToUse, defaultRingtoneUri, volumeShaperConfig, audioAttrs);
            } catch (NullPointerException npe) {
                Log.e(this, npe, "getRingtone: NPE while getting ringtone.");
            }
        }
        return setRingtoneAudioAttributes(ringtone);
        return ringtone;
    }

    public AudioAttributes getRingtoneAudioAttributes() {
        return new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
            .build();
    }

    public Ringtone getRingtone(Call incomingCall) {
@@ -121,21 +130,12 @@ public class RingtoneFactory {
    public Ringtone getHapticOnlyRingtone() {
        Uri ringtoneUri = Uri.parse("file://" + mContext.getString(
                com.android.internal.R.string.config_defaultRingtoneVibrationSound));
        Ringtone ringtone = RingtoneManager.getRingtone(mContext, ringtoneUri, null);
        AudioAttributes audioAttrs = getRingtoneAudioAttributes();
        Ringtone ringtone = RingtoneManager.getRingtone(mContext, ringtoneUri, null, audioAttrs);
        if (ringtone != null) {
            // Make sure the sound is muted.
            ringtone.setVolume(0);
        }
        return setRingtoneAudioAttributes(ringtone);
    }

    private Ringtone setRingtoneAudioAttributes(Ringtone ringtone) {
        if (ringtone != null) {
            ringtone.setAudioAttributes(new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .build());
        }
        return ringtone;
    }