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

Commit 8c1e0132 authored by android-build-team Robot's avatar android-build-team Robot
Browse files

Snap for 6203617 from 69b0d131 to rvc-release

Change-Id: Iae8878d28c9c6cd8900066ca8a796045b1036563
parents 233a8629 69b0d131
Loading
Loading
Loading
Loading
+9 −34
Original line number Original line Diff line number Diff line
@@ -74,6 +74,9 @@ public class Ringer {


    private static final int[] PULSE_AMPLITUDE;
    private static final int[] PULSE_AMPLITUDE;


    private static final int RAMPING_RINGER_VIBRATION_DURATION = 5000;
    private static final int RAMPING_RINGER_DURATION = 10000;

    static {
    static {
        // construct complete pulse pattern
        // construct complete pulse pattern
        PULSE_PATTERN = new long[PULSE_PRIMING_PATTERN.length + PULSE_RAMPING_PATTERN.length];
        PULSE_PATTERN = new long[PULSE_PRIMING_PATTERN.length + PULSE_RAMPING_PATTERN.length];
@@ -111,13 +114,6 @@ public class Ringer {


    private static final int REPEAT_SIMPLE_VIBRATION_AT = 1;
    private static final int REPEAT_SIMPLE_VIBRATION_AT = 1;


    private static final int DEFAULT_RAMPING_RINGER_DURATION = 10000;  // 10 seconds

    private int mRampingRingerDuration = -1;  // ramping ringer duration in millisecond

    // vibration duration before ramping ringer in second
    private int mRampingRingerVibrationDuration = 0;

    private static final float EPSILON = 1e-6f;
    private static final float EPSILON = 1e-6f;


    private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
    private static final AudioAttributes VIBRATION_ATTRIBUTES = new AudioAttributes.Builder()
@@ -287,36 +283,18 @@ public class Ringer {
            // call (for the purposes of direct-to-voicemail), the information about custom
            // call (for the purposes of direct-to-voicemail), the information about custom
            // ringtones should be available by the time this code executes. We can safely
            // ringtones should be available by the time this code executes. We can safely
            // request the custom ringtone from the call and expect it to be current.
            // request the custom ringtone from the call and expect it to be current.
            if (mSystemSettingsUtil.applyRampingRinger(mContext)
            if (mSystemSettingsUtil.applyRampingRinger(mContext)) {
                && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()) {
                Log.i(this, "start ramping ringer.");
                Log.i(this, "start ramping ringer.");
                // configure vibration effect for ramping ringer.
                int previousRampingRingerVibrationDuration = mRampingRingerVibrationDuration;
                // get vibration duration in millisecond and round down to second.
                mRampingRingerVibrationDuration =
                    mSystemSettingsUtil.getRampingRingerVibrationDuration() >= 0
                    ? mSystemSettingsUtil.getRampingRingerVibrationDuration() / 1000
                    : 0;
                if (mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                if (mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                    effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
                    effect = getVibrationEffectForCall(mRingtoneFactory, foregroundCall);
                } else {
                } else {
                    effect = mDefaultVibrationEffect;
                    effect = mDefaultVibrationEffect;
                }
                }

                if (mVolumeShaperConfig == null) {
                // configure volume shaper for ramping ringer
                    float silencePoint = (float) (RAMPING_RINGER_VIBRATION_DURATION)
                int previousRampingRingerDuration = mRampingRingerDuration;
                        / (float) (RAMPING_RINGER_VIBRATION_DURATION + RAMPING_RINGER_DURATION);
                mRampingRingerDuration =
                    mSystemSettingsUtil.getRampingRingerDuration() > 0
                        ? mSystemSettingsUtil.getRampingRingerDuration()
                        : DEFAULT_RAMPING_RINGER_DURATION;
                if (mRampingRingerDuration != previousRampingRingerDuration
                    || mRampingRingerVibrationDuration != previousRampingRingerVibrationDuration
                    || mVolumeShaperConfig == null) {
                    float silencePoint = (float) (mRampingRingerVibrationDuration * 1000)
                        / (float) (mRampingRingerVibrationDuration * 1000 + mRampingRingerDuration);
                    mVolumeShaperConfig = new VolumeShaper.Configuration.Builder()
                    mVolumeShaperConfig = new VolumeShaper.Configuration.Builder()
                        .setDuration(mRampingRingerVibrationDuration * 1000
                        .setDuration(RAMPING_RINGER_VIBRATION_DURATION + RAMPING_RINGER_DURATION)
                            + mRampingRingerDuration)
                        .setCurve(new float[] {0.f, silencePoint + EPSILON /*keep monotonicity*/,
                        .setCurve(new float[] {0.f, silencePoint + EPSILON /*keep monotonicity*/,
                            1.f}, new float[] {0.f, 0.f, 1.f})
                            1.f}, new float[] {0.f, 0.f, 1.f})
                        .setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR)
                        .setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR)
@@ -347,7 +325,6 @@ public class Ringer {
                    maybeStartVibration(foregroundCall, shouldRingForContact, effect,
                    maybeStartVibration(foregroundCall, shouldRingForContact, effect,
                            isVibratorEnabled, isRingerAudible);
                            isVibratorEnabled, isRingerAudible);
                } else if (mSystemSettingsUtil.applyRampingRinger(mContext)
                } else if (mSystemSettingsUtil.applyRampingRinger(mContext)
                           && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()
                           && !mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                           && !mSystemSettingsUtil.enableAudioCoupledVibrationForRampingRinger()) {
                    Log.i(this, "startRinging: apply ramping ringer vibration");
                    Log.i(this, "startRinging: apply ramping ringer vibration");
                    maybeStartVibration(foregroundCall, shouldRingForContact, effect,
                    maybeStartVibration(foregroundCall, shouldRingForContact, effect,
@@ -377,7 +354,6 @@ public class Ringer {
        if (isVibrationEnabled
        if (isVibrationEnabled
                && !mIsVibrating && shouldRingForContact) {
                && !mIsVibrating && shouldRingForContact) {
            if (mSystemSettingsUtil.applyRampingRinger(mContext)
            if (mSystemSettingsUtil.applyRampingRinger(mContext)
                    && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig()
                    && isRingerAudible) {
                    && isRingerAudible) {
                Log.i(this, "start vibration for ramping ringer.");
                Log.i(this, "start vibration for ramping ringer.");
                mIsVibrating = true;
                mIsVibrating = true;
@@ -535,7 +511,6 @@ public class Ringer {
            return false;
            return false;
        }
        }
        return mSystemSettingsUtil.canVibrateWhenRinging(context)
        return mSystemSettingsUtil.canVibrateWhenRinging(context)
            || (mSystemSettingsUtil.applyRampingRinger(context)
            || mSystemSettingsUtil.applyRampingRinger(context);
                && mSystemSettingsUtil.enableRampingRingerFromDeviceConfig());
    }
    }
}
}
+0 −25
Original line number Original line Diff line number Diff line
@@ -30,16 +30,6 @@ import com.android.internal.annotations.VisibleForTesting;
@VisibleForTesting
@VisibleForTesting
public class SystemSettingsUtil {
public class SystemSettingsUtil {


    /** Flag for ringer ramping time in milliseconds. */
    private static final String RAMPING_RINGER_DURATION_MILLIS = "ramping_ringer_duration";

    /** Flag for vibration time in milliseconds before ramping ringer starts. */
    private static final String RAMPING_RINGER_VIBRATION_DURATION =
            "ramping_ringer_vibration_duration";

    /** Flag for whether or not to apply ramping ringer on incoming phone calls. */
    private static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled";

    /** Flag for whether or not to support audio coupled haptics in ramping ringer. */
    /** Flag for whether or not to support audio coupled haptics in ramping ringer. */
    private static final String RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED =
    private static final String RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED =
            "ramping_ringer_audio_coupled_vibration_enabled";
            "ramping_ringer_audio_coupled_vibration_enabled";
@@ -69,26 +59,11 @@ public class SystemSettingsUtil {
                Settings.Global.APPLY_RAMPING_RINGER, 0) == 1;
                Settings.Global.APPLY_RAMPING_RINGER, 0) == 1;
    }
    }


    public boolean enableRampingRingerFromDeviceConfig() {
        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_ENABLED,
                false);
    }

    public boolean enableAudioCoupledVibrationForRampingRinger() {
    public boolean enableAudioCoupledVibrationForRampingRinger() {
        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY,
        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_TELEPHONY,
                RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED, false);
                RAMPING_RINGER_AUDIO_COUPLED_VIBRATION_ENABLED, false);
    }
    }


    public int getRampingRingerDuration() {
	return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY,
                RAMPING_RINGER_DURATION_MILLIS, -1);
    }

    public int getRampingRingerVibrationDuration() {
        return DeviceConfig.getInt(DeviceConfig.NAMESPACE_TELEPHONY, 
                RAMPING_RINGER_VIBRATION_DURATION, 0);
    }

    public boolean isHapticPlaybackSupported(Context context) {
    public boolean isHapticPlaybackSupported(Context context) {
        return context.getSystemService(AudioManager.class).isHapticPlaybackSupported();
        return context.getSystemService(AudioManager.class).isHapticPlaybackSupported();
    }
    }
+0 −5
Original line number Original line Diff line number Diff line
@@ -374,7 +374,6 @@ public class RingerTest extends TelecomTestCase {
        mRingerUnderTest.startCallWaiting(mockCall1);
        mRingerUnderTest.startCallWaiting(mockCall1);
        ensureRingerIsAudible();
        ensureRingerIsAudible();
        enableRampingRinger();
        enableRampingRinger();
        enableRampingRingerFromDeviceConfig();
        mFuture.complete(false); // not using audio coupled haptics
        mFuture.complete(false); // not using audio coupled haptics
        enableVibrationWhenRinging();
        enableVibrationWhenRinging();
        assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
        assertTrue(mRingerUnderTest.startRinging(mockCall2, false));
@@ -442,8 +441,4 @@ public class RingerTest extends TelecomTestCase {
    private void enableRampingRinger() {
    private void enableRampingRinger() {
        when(mockSystemSettingsUtil.applyRampingRinger(any(Context.class))).thenReturn(true);
        when(mockSystemSettingsUtil.applyRampingRinger(any(Context.class))).thenReturn(true);
    }
    }

    private void enableRampingRingerFromDeviceConfig() {
        when(mockSystemSettingsUtil.enableRampingRingerFromDeviceConfig()).thenReturn(true);
    }
}
}