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

Commit 92de1dc3 authored by Lais Andrade's avatar Lais Andrade
Browse files

Introduce VibrationEffect.createVendorEffect

Introduce new @SystemApi for vendor-specific vibration effects.

Fix: 345405987
Flag: android.os.vibrator.vendor_vibration_effects
Test: FrameworksVibratorCoreTests
      FrameworksVibratorServicesTests
      CtsVibratorTestCases
Change-Id: I86e15e495196330c32723618c917a4f6993c0d45
parent 694fc6c6
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -255,7 +255,7 @@ java_library {
        "android.hardware.vibrator-V1.1-java",
        "android.hardware.vibrator-V1.2-java",
        "android.hardware.vibrator-V1.3-java",
        "android.hardware.vibrator-V2-java",
        "android.hardware.vibrator-V3-java",
        "android.se.omapi-V1-java",
        "android.system.suspend.control.internal-java",
        "devicepolicyprotosnano",
+5 −0
Original line number Diff line number Diff line
@@ -409,6 +409,7 @@ package android {
    field @FlaggedApi("android.app.ondeviceintelligence.flags.enable_on_device_intelligence") public static final String USE_ON_DEVICE_INTELLIGENCE = "android.permission.USE_ON_DEVICE_INTELLIGENCE";
    field public static final String USE_RESERVED_DISK = "android.permission.USE_RESERVED_DISK";
    field public static final String UWB_PRIVILEGED = "android.permission.UWB_PRIVILEGED";
    field @FlaggedApi("android.os.vibrator.vendor_vibration_effects") public static final String VIBRATE_VENDOR_EFFECTS = "android.permission.VIBRATE_VENDOR_EFFECTS";
    field public static final String WHITELIST_AUTO_REVOKE_PERMISSIONS = "android.permission.WHITELIST_AUTO_REVOKE_PERMISSIONS";
    field public static final String WHITELIST_RESTRICTED_PERMISSIONS = "android.permission.WHITELIST_RESTRICTED_PERMISSIONS";
    field public static final String WIFI_ACCESS_COEX_UNSAFE_CHANNELS = "android.permission.WIFI_ACCESS_COEX_UNSAFE_CHANNELS";
@@ -11354,6 +11355,10 @@ package android.os {
    field @NonNull public static final android.os.Parcelable.Creator<android.os.UserManager.EnforcingUser> CREATOR;
  }
  public abstract class VibrationEffect implements android.os.Parcelable {
    method @FlaggedApi("android.os.vibrator.vendor_vibration_effects") @NonNull @RequiresPermission(android.Manifest.permission.VIBRATE_VENDOR_EFFECTS) public static android.os.VibrationEffect createVendorEffect(@NonNull android.os.PersistableBundle);
  }
  public abstract class Vibrator {
    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+10 −0
Original line number Diff line number Diff line
@@ -2577,6 +2577,16 @@ package android.os {
  public static final class VibrationEffect.Composition.UnreachableAfterRepeatingIndefinitelyException extends java.lang.IllegalStateException {
  }

  @FlaggedApi("android.os.vibrator.vendor_vibration_effects") public static final class VibrationEffect.VendorEffect extends android.os.VibrationEffect {
    method @Nullable public long[] computeCreateWaveformOffOnTimingsOrNull();
    method public long getDuration();
    method public int getEffectStrength();
    method public float getLinearScale();
    method @NonNull public android.os.PersistableBundle getVendorData();
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.VendorEffect> CREATOR;
  }

  public static class VibrationEffect.VibrationParameter {
    method @NonNull public static android.os.VibrationEffect.VibrationParameter targetAmplitude(@FloatRange(from=0, to=1) float);
    method @NonNull public static android.os.VibrationEffect.VibrationParameter targetFrequency(@FloatRange(from=1) float);
+38 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package android.os;

import android.annotation.NonNull;
import android.annotation.TestApi;
import android.os.vibrator.Flags;
import android.util.SparseArray;

import com.android.internal.util.Preconditions;
@@ -152,6 +153,9 @@ public abstract class CombinedVibration implements Parcelable {
    /** @hide */
    public abstract boolean hasVibrator(int vibratorId);

    /** @hide */
    public abstract boolean hasVendorEffects();

    /**
     * Returns a compact version of the {@link #toString()} result for debugging purposes.
     *
@@ -424,6 +428,15 @@ public abstract class CombinedVibration implements Parcelable {
            return true;
        }

        /** @hide */
        @Override
        public boolean hasVendorEffects() {
            if (!Flags.vendorVibrationEffects()) {
                return false;
            }
            return mEffect instanceof VibrationEffect.VendorEffect;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) {
@@ -605,6 +618,20 @@ public abstract class CombinedVibration implements Parcelable {
            return mEffects.indexOfKey(vibratorId) >= 0;
        }

        /** @hide */
        @Override
        public boolean hasVendorEffects() {
            if (!Flags.vendorVibrationEffects()) {
                return false;
            }
            for (int i = 0; i < mEffects.size(); i++) {
                if (mEffects.get(i) instanceof VibrationEffect.VendorEffect) {
                    return true;
                }
            }
            return false;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) {
@@ -838,6 +865,17 @@ public abstract class CombinedVibration implements Parcelable {
            return false;
        }

        /** @hide */
        @Override
        public boolean hasVendorEffects() {
            for (int i = 0; i < mEffects.size(); i++) {
                if (mEffects.get(i).hasVendorEffects()) {
                    return true;
                }
            }
            return false;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) {
+329 −82

File changed.

Preview size limit exceeded, changes collapsed.

Loading