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

Commit 94babdc4 authored by Alexey Kuzmin's avatar Alexey Kuzmin Committed by android-build-merger
Browse files

Merge "Default vibration amplitude resolution added" into pi-dev

am: 39cfdf13

Change-Id: Ib14c3c9cdaf3e9217bcbd6b6238a8840cb11a8cc
parents 8dea2c00 39cfdf13
Loading
Loading
Loading
Loading
+44 −0
Original line number Original line Diff line number Diff line
@@ -349,6 +349,26 @@ public abstract class VibrationEffect implements Parcelable {
            return new OneShot(mDuration, newAmplitude);
            return new OneShot(mDuration, newAmplitude);
        }
        }


        /**
         * Resolve default values into integer amplitude numbers.
         *
         * @param defaultAmplitude the default amplitude to apply, must be between 0 and
         *         MAX_AMPLITUDE
         * @return A {@link OneShot} effect with same physical meaning but explicitly set amplitude
         *
         * @hide
         */
        public OneShot resolve(int defaultAmplitude) {
            if (defaultAmplitude > MAX_AMPLITUDE || defaultAmplitude < 0) {
                throw new IllegalArgumentException(
                        "Amplitude is negative or greater than MAX_AMPLITUDE");
            }
            if (mAmplitude == DEFAULT_AMPLITUDE) {
                return new OneShot(mDuration, defaultAmplitude);
            }
            return this;
        }

        @Override
        @Override
        public void validate() {
        public void validate() {
            if (mAmplitude < -1 || mAmplitude == 0 || mAmplitude > 255) {
            if (mAmplitude < -1 || mAmplitude == 0 || mAmplitude > 255) {
@@ -470,6 +490,30 @@ public abstract class VibrationEffect implements Parcelable {
            return new Waveform(mTimings, scaledAmplitudes, mRepeat);
            return new Waveform(mTimings, scaledAmplitudes, mRepeat);
        }
        }


        /**
         * Resolve default values into integer amplitude numbers.
         *
         * @param defaultAmplitude the default amplitude to apply, must be between 0 and
         *         MAX_AMPLITUDE
         * @return A {@link Waveform} effect with same physical meaning but explicitly set
         *         amplitude
         *
         * @hide
         */
        public Waveform resolve(int defaultAmplitude) {
            if (defaultAmplitude > MAX_AMPLITUDE || defaultAmplitude < 0) {
                throw new IllegalArgumentException(
                        "Amplitude is negative or greater than MAX_AMPLITUDE");
            }
            int[] resolvedAmplitudes = Arrays.copyOf(mAmplitudes, mAmplitudes.length);
            for (int i = 0; i < resolvedAmplitudes.length; i++) {
                if (resolvedAmplitudes[i] == DEFAULT_AMPLITUDE) {
                    resolvedAmplitudes[i] = defaultAmplitude;
                }
            }
            return new Waveform(mTimings, resolvedAmplitudes, mRepeat);
        }

        @Override
        @Override
        public void validate() {
        public void validate() {
            if (mTimings.length != mAmplitudes.length) {
            if (mTimings.length != mAmplitudes.length) {
+2 −0
Original line number Original line Diff line number Diff line
@@ -704,9 +704,11 @@ public class VibratorService extends IVibratorService.Stub
        VibrationEffect scaledEffect = null;
        VibrationEffect scaledEffect = null;
        if (vib.effect instanceof VibrationEffect.OneShot) {
        if (vib.effect instanceof VibrationEffect.OneShot) {
            VibrationEffect.OneShot oneShot = (VibrationEffect.OneShot) vib.effect;
            VibrationEffect.OneShot oneShot = (VibrationEffect.OneShot) vib.effect;
            oneShot = oneShot.resolve(mDefaultVibrationAmplitude);
            scaledEffect = oneShot.scale(gamma, maxAmplitude);
            scaledEffect = oneShot.scale(gamma, maxAmplitude);
        } else if (vib.effect instanceof VibrationEffect.Waveform) {
        } else if (vib.effect instanceof VibrationEffect.Waveform) {
            VibrationEffect.Waveform waveform = (VibrationEffect.Waveform) vib.effect;
            VibrationEffect.Waveform waveform = (VibrationEffect.Waveform) vib.effect;
            waveform = waveform.resolve(mDefaultVibrationAmplitude);
            scaledEffect = waveform.scale(gamma, maxAmplitude);
            scaledEffect = waveform.scale(gamma, maxAmplitude);
        } else {
        } else {
            Slog.w(TAG, "Unable to apply intensity scaling, unknown VibrationEffect type");
            Slog.w(TAG, "Unable to apply intensity scaling, unknown VibrationEffect type");