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

Commit 11d5b29d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Introduce VibrationEffectSegment" into sc-dev

parents 015adecc bd992109
Loading
Loading
Loading
Loading
+65 −27
Original line number Diff line number Diff line
@@ -1711,35 +1711,16 @@ package android.os {
    field public static final int[] RINGTONES;
  }

  public static class VibrationEffect.OneShot extends android.os.VibrationEffect implements android.os.Parcelable {
    ctor public VibrationEffect.OneShot(android.os.Parcel);
    ctor public VibrationEffect.OneShot(long, int);
    method public int getAmplitude();
    method public long getDuration();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.OneShot> CREATOR;
  }

  public static class VibrationEffect.Prebaked extends android.os.VibrationEffect implements android.os.Parcelable {
    ctor public VibrationEffect.Prebaked(android.os.Parcel);
    ctor public VibrationEffect.Prebaked(int, boolean, int);
    method public long getDuration();
    method public int getEffectStrength();
    method public int getId();
    method public boolean shouldFallback();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Prebaked> CREATOR;
  }

  public static class VibrationEffect.Waveform extends android.os.VibrationEffect implements android.os.Parcelable {
    ctor public VibrationEffect.Waveform(android.os.Parcel);
    ctor public VibrationEffect.Waveform(long[], int[], int);
    method public int[] getAmplitudes();
  public static final class VibrationEffect.Composed extends android.os.VibrationEffect {
    method @NonNull public android.os.VibrationEffect.Composed applyEffectStrength(int);
    method public long getDuration();
    method public int getRepeatIndex();
    method public long[] getTimings();
    method public void writeToParcel(android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Waveform> CREATOR;
    method @NonNull public java.util.List<android.os.vibrator.VibrationEffectSegment> getSegments();
    method @NonNull public android.os.VibrationEffect.Composed resolve(int);
    method @NonNull public android.os.VibrationEffect.Composed scale(float);
    method public void validate();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Composed> CREATOR;
  }

  public class VintfObject {
@@ -1856,6 +1837,63 @@ package android.os.strictmode {

}

package android.os.vibrator {

  public final class PrebakedSegment extends android.os.vibrator.VibrationEffectSegment {
    method @NonNull public android.os.vibrator.PrebakedSegment applyEffectStrength(int);
    method public int describeContents();
    method public long getDuration();
    method public int getEffectId();
    method public int getEffectStrength();
    method public boolean hasNonZeroAmplitude();
    method @NonNull public android.os.vibrator.PrebakedSegment resolve(int);
    method @NonNull public android.os.vibrator.PrebakedSegment scale(float);
    method public boolean shouldFallback();
    method public void validate();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.vibrator.PrebakedSegment> CREATOR;
  }

  public final class PrimitiveSegment extends android.os.vibrator.VibrationEffectSegment {
    method @NonNull public android.os.vibrator.PrimitiveSegment applyEffectStrength(int);
    method public int describeContents();
    method public int getDelay();
    method public long getDuration();
    method public int getPrimitiveId();
    method public float getScale();
    method public boolean hasNonZeroAmplitude();
    method @NonNull public android.os.vibrator.PrimitiveSegment resolve(int);
    method @NonNull public android.os.vibrator.PrimitiveSegment scale(float);
    method public void validate();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.vibrator.PrimitiveSegment> CREATOR;
  }

  public final class StepSegment extends android.os.vibrator.VibrationEffectSegment {
    method @NonNull public android.os.vibrator.StepSegment applyEffectStrength(int);
    method public int describeContents();
    method public float getAmplitude();
    method public long getDuration();
    method public boolean hasNonZeroAmplitude();
    method @NonNull public android.os.vibrator.StepSegment resolve(int);
    method @NonNull public android.os.vibrator.StepSegment scale(float);
    method public void validate();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.vibrator.StepSegment> CREATOR;
  }

  public abstract class VibrationEffectSegment implements android.os.Parcelable {
    method @NonNull public abstract <T extends android.os.vibrator.VibrationEffectSegment> T applyEffectStrength(int);
    method public abstract long getDuration();
    method public abstract boolean hasNonZeroAmplitude();
    method @NonNull public abstract <T extends android.os.vibrator.VibrationEffectSegment> T resolve(int);
    method @NonNull public abstract <T extends android.os.vibrator.VibrationEffectSegment> T scale(float);
    method public abstract void validate();
    field @NonNull public static final android.os.Parcelable.Creator<android.os.vibrator.VibrationEffectSegment> CREATOR;
  }

}

package android.permission {

  public final class PermissionControllerManager {
+0 −42
Original line number Diff line number Diff line
@@ -1515,30 +1515,6 @@ MissingNullability: android.os.VibrationEffect#get(int):
    
MissingNullability: android.os.VibrationEffect#get(int, boolean):
    
MissingNullability: android.os.VibrationEffect.OneShot#OneShot(android.os.Parcel) parameter #0:
    
MissingNullability: android.os.VibrationEffect.OneShot#scale(float, int):
    
MissingNullability: android.os.VibrationEffect.OneShot#writeToParcel(android.os.Parcel, int) parameter #0:
    
MissingNullability: android.os.VibrationEffect.Prebaked#Prebaked(android.os.Parcel) parameter #0:
    
MissingNullability: android.os.VibrationEffect.Prebaked#writeToParcel(android.os.Parcel, int) parameter #0:
    
MissingNullability: android.os.VibrationEffect.Waveform#Waveform(android.os.Parcel) parameter #0:
    
MissingNullability: android.os.VibrationEffect.Waveform#Waveform(long[], int[], int) parameter #0:
    
MissingNullability: android.os.VibrationEffect.Waveform#Waveform(long[], int[], int) parameter #1:
    
MissingNullability: android.os.VibrationEffect.Waveform#getAmplitudes():
    
MissingNullability: android.os.VibrationEffect.Waveform#getTimings():
    
MissingNullability: android.os.VibrationEffect.Waveform#scale(float, int):
    
MissingNullability: android.os.VibrationEffect.Waveform#writeToParcel(android.os.Parcel, int) parameter #0:
    
MissingNullability: android.os.VintfObject#getHalNamesAndVersions():
    
MissingNullability: android.os.VintfObject#getSepolicyVersion():
@@ -2739,12 +2715,6 @@ ParcelConstructor: android.os.IncidentReportArgs#IncidentReportArgs(android.os.P
    
ParcelConstructor: android.os.StrictMode.ViolationInfo#ViolationInfo(android.os.Parcel):
    
ParcelConstructor: android.os.VibrationEffect.OneShot#OneShot(android.os.Parcel):
    
ParcelConstructor: android.os.VibrationEffect.Prebaked#Prebaked(android.os.Parcel):
    
ParcelConstructor: android.os.VibrationEffect.Waveform#Waveform(android.os.Parcel):
    
ParcelConstructor: android.os.health.HealthStatsParceler#HealthStatsParceler(android.os.Parcel):
    
ParcelConstructor: android.service.notification.SnoozeCriterion#SnoozeCriterion(android.os.Parcel):
@@ -2773,12 +2743,6 @@ ParcelCreator: android.net.metrics.RaEvent:
    
ParcelCreator: android.net.metrics.ValidationProbeEvent:
    
ParcelCreator: android.os.VibrationEffect.OneShot:
    
ParcelCreator: android.os.VibrationEffect.Prebaked:
    
ParcelCreator: android.os.VibrationEffect.Waveform:
    
ParcelCreator: android.service.autofill.InternalOnClickAction:
    
ParcelCreator: android.service.autofill.InternalSanitizer:
@@ -2797,12 +2761,6 @@ ParcelNotFinal: android.net.metrics.IpConnectivityLog.Event:
    
ParcelNotFinal: android.os.IncidentManager.IncidentReport:
    
ParcelNotFinal: android.os.VibrationEffect.OneShot:
    
ParcelNotFinal: android.os.VibrationEffect.Prebaked:
    
ParcelNotFinal: android.os.VibrationEffect.Waveform:
    
ParcelNotFinal: android.os.health.HealthStatsParceler:
    
ParcelNotFinal: android.service.autofill.InternalOnClickAction:
+1 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ public class SystemVibrator extends Vibrator {

    @Override
    public boolean[] arePrimitivesSupported(
            @NonNull @VibrationEffect.Composition.Primitive int... primitiveIds) {
            @NonNull @VibrationEffect.Composition.PrimitiveType int... primitiveIds) {
        boolean[] supported = new boolean[primitiveIds.length];
        if (mVibratorManager == null) {
            Log.w(TAG, "Failed to check supported primitives; no vibrator manager.");
+1 −1
Original line number Diff line number Diff line
@@ -211,7 +211,7 @@ public class SystemVibratorManager extends VibratorManager {

        @Override
        public boolean[] arePrimitivesSupported(
                @NonNull @VibrationEffect.Composition.Primitive int... primitiveIds) {
                @NonNull @VibrationEffect.Composition.PrimitiveType int... primitiveIds) {
            boolean[] supported = new boolean[primitiveIds.length];
            for (int i = 0; i < primitiveIds.length; i++) {
                supported[i] = mVibratorInfo.isPrimitiveSupported(primitiveIds[i]);
+19 −3
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.media.AudioAttributes;
import android.os.vibrator.PrebakedSegment;
import android.os.vibrator.VibrationEffectSegment;
import android.util.Slog;

import java.lang.annotation.Retention;
@@ -330,9 +332,9 @@ public final class VibrationAttributes implements Parcelable {

        private void applyHapticFeedbackHeuristics(@Nullable VibrationEffect effect) {
            if (effect != null) {
                if (mUsage == USAGE_UNKNOWN && effect instanceof VibrationEffect.Prebaked) {
                    VibrationEffect.Prebaked prebaked = (VibrationEffect.Prebaked) effect;
                    switch (prebaked.getId()) {
                PrebakedSegment prebaked = extractPrebakedSegment(effect);
                if (mUsage == USAGE_UNKNOWN && prebaked != null) {
                    switch (prebaked.getEffectId()) {
                        case VibrationEffect.EFFECT_CLICK:
                        case VibrationEffect.EFFECT_DOUBLE_CLICK:
                        case VibrationEffect.EFFECT_HEAVY_CLICK:
@@ -355,6 +357,20 @@ public final class VibrationAttributes implements Parcelable {
            }
        }

        @Nullable
        private PrebakedSegment extractPrebakedSegment(VibrationEffect effect) {
            if (effect instanceof VibrationEffect.Composed) {
                VibrationEffect.Composed composed = (VibrationEffect.Composed) effect;
                if (composed.getSegments().size() == 1) {
                    VibrationEffectSegment segment = composed.getSegments().get(0);
                    if (segment instanceof PrebakedSegment) {
                        return (PrebakedSegment) segment;
                    }
                }
            }
            return null;
        }

        private void setUsage(@NonNull AudioAttributes audio) {
            mOriginalAudioUsage = audio.getUsage();
            switch (audio.getUsage()) {
Loading