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

Commit 0447a404 authored by Lais Andrade's avatar Lais Andrade Committed by Android (Google) Code Review
Browse files

Merge "Introduce media and accessibility vibration usages."

parents 5ee2aa29 14dd35d2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -32427,13 +32427,16 @@ package android.os {
    method public void writeToParcel(@NonNull android.os.Parcel, int);
    field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationAttributes> CREATOR;
    field public static final int FLAG_BYPASS_INTERRUPTION_POLICY = 1; // 0x1
    field public static final int USAGE_ACCESSIBILITY = 66; // 0x42
    field public static final int USAGE_ALARM = 17; // 0x11
    field public static final int USAGE_CLASS_ALARM = 1; // 0x1
    field public static final int USAGE_CLASS_FEEDBACK = 2; // 0x2
    field public static final int USAGE_CLASS_MASK = 15; // 0xf
    field public static final int USAGE_CLASS_MEDIA = 3; // 0x3
    field public static final int USAGE_CLASS_UNKNOWN = 0; // 0x0
    field public static final int USAGE_COMMUNICATION_REQUEST = 65; // 0x41
    field public static final int USAGE_HARDWARE_FEEDBACK = 50; // 0x32
    field public static final int USAGE_MEDIA = 19; // 0x13
    field public static final int USAGE_NOTIFICATION = 49; // 0x31
    field public static final int USAGE_PHYSICAL_EMULATION = 34; // 0x22
    field public static final int USAGE_RINGTONE = 33; // 0x21
+37 −3
Original line number Diff line number Diff line
@@ -81,6 +81,11 @@ public final class VibrationAttributes implements Parcelable {
     * actions, such as emulation of physical effects, and texting feedback vibration.
     */
    public static final int USAGE_CLASS_FEEDBACK = 0x2;
    /**
     * Vibration usage class value to use when the vibration is part of media, such as music, movie,
     * soundtrack, game or animations.
     */
    public static final int USAGE_CLASS_MEDIA = 0x3;

    /**
     * Mask for vibration usage class value.
@@ -121,6 +126,15 @@ public final class VibrationAttributes implements Parcelable {
     * such as a fingerprint sensor.
     */
    public static final int USAGE_HARDWARE_FEEDBACK = 0x30 | USAGE_CLASS_FEEDBACK;
    /**
     * Usage value to use for accessibility vibrations, such as with a screen reader.
     */
    public static final int USAGE_ACCESSIBILITY = 0x40 | USAGE_CLASS_FEEDBACK;
    /**
     * Usage value to use for media vibrations, such as music, movie, soundtrack, animations, games,
     * or any interactive media that isn't for touch feedback specifically.
     */
    public static final int USAGE_MEDIA = 0x10 | USAGE_CLASS_MEDIA;

    /**
     * @hide
@@ -208,13 +222,17 @@ public final class VibrationAttributes implements Parcelable {
            case USAGE_NOTIFICATION:
                return AudioAttributes.USAGE_NOTIFICATION;
            case USAGE_COMMUNICATION_REQUEST:
                return AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST;
                return AudioAttributes.USAGE_VOICE_COMMUNICATION;
            case USAGE_RINGTONE:
                return AudioAttributes.USAGE_NOTIFICATION_RINGTONE;
            case USAGE_TOUCH:
                return AudioAttributes.USAGE_ASSISTANCE_SONIFICATION;
            case USAGE_ALARM:
                return AudioAttributes.USAGE_ALARM;
            case USAGE_ACCESSIBILITY:
                return AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY;
            case USAGE_MEDIA:
                return AudioAttributes.USAGE_MEDIA;
            default:
                return AudioAttributes.USAGE_UNKNOWN;
        }
@@ -286,12 +304,16 @@ public final class VibrationAttributes implements Parcelable {
                return "UNKNOWN";
            case USAGE_ALARM:
                return "ALARM";
            case USAGE_ACCESSIBILITY:
                return "ACCESSIBILITY";
            case USAGE_RINGTONE:
                return "RINGTONE";
            case USAGE_NOTIFICATION:
                return "NOTIFICATION";
            case USAGE_COMMUNICATION_REQUEST:
                return "COMMUNICATION_REQUEST";
            case USAGE_MEDIA:
                return "MEDIA";
            case USAGE_TOUCH:
                return "TOUCH";
            case USAGE_PHYSICAL_EMULATION:
@@ -405,21 +427,31 @@ public final class VibrationAttributes implements Parcelable {
                case AudioAttributes.USAGE_NOTIFICATION_EVENT:
                case AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_DELAYED:
                case AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_INSTANT:
                case AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST:
                    mUsage = USAGE_NOTIFICATION;
                    break;
                case AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST:
                case AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY:
                case AudioAttributes.USAGE_VOICE_COMMUNICATION:
                case AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING:
                case AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE:
                case AudioAttributes.USAGE_ASSISTANT:
                    mUsage = USAGE_COMMUNICATION_REQUEST;
                    break;
                case AudioAttributes.USAGE_NOTIFICATION_RINGTONE:
                    mUsage = USAGE_RINGTONE;
                    break;
                case AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY:
                    mUsage = USAGE_ACCESSIBILITY;
                    break;
                case AudioAttributes.USAGE_ASSISTANCE_SONIFICATION:
                    mUsage = USAGE_TOUCH;
                    break;
                case AudioAttributes.USAGE_ALARM:
                    mUsage = USAGE_ALARM;
                    break;
                case AudioAttributes.USAGE_MEDIA:
                case AudioAttributes.USAGE_GAME:
                    mUsage = USAGE_MEDIA;
                    break;
                default:
                    mUsage = USAGE_UNKNOWN;
            }
@@ -450,6 +482,8 @@ public final class VibrationAttributes implements Parcelable {
         * {@link VibrationAttributes#USAGE_TOUCH},
         * {@link VibrationAttributes#USAGE_PHYSICAL_EMULATION},
         * {@link VibrationAttributes#USAGE_HARDWARE_FEEDBACK}.
         * {@link VibrationAttributes#USAGE_ACCESSIBILITY}.
         * {@link VibrationAttributes#USAGE_MEDIA}.
         * @return the same Builder instance.
         */
        public @NonNull Builder setUsage(int usage) {
+2 −2
Original line number Diff line number Diff line
@@ -223,7 +223,7 @@ public class VibratorTest {
    public void vibrate_withAudioAttributes_createsVibrationAttributesWithSameUsage() {
        VibrationEffect effect = VibrationEffect.get(VibrationEffect.EFFECT_CLICK);
        AudioAttributes audioAttributes = new AudioAttributes.Builder().setUsage(
                AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY).build();
                AudioAttributes.USAGE_VOICE_COMMUNICATION).build();

        mVibratorSpy.vibrate(effect, audioAttributes);

@@ -235,7 +235,7 @@ public class VibratorTest {
        assertEquals(VibrationAttributes.USAGE_COMMUNICATION_REQUEST,
                vibrationAttributes.getUsage());
        // Keeps original AudioAttributes usage to be used by the VibratorService.
        assertEquals(AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY,
        assertEquals(AudioAttributes.USAGE_VOICE_COMMUNICATION,
                vibrationAttributes.getAudioUsage());
    }

+1 −1
Original line number Diff line number Diff line
@@ -635,7 +635,7 @@ public class VibratorManagerServiceTest {
        inOrderVerifier.verify(mAppOpsManagerMock).checkAudioOpNoThrow(eq(AppOpsManager.OP_VIBRATE),
                eq(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION), anyInt(), anyString());
        inOrderVerifier.verify(mAppOpsManagerMock).checkAudioOpNoThrow(eq(AppOpsManager.OP_VIBRATE),
                eq(AudioAttributes.USAGE_NOTIFICATION_COMMUNICATION_REQUEST),
                eq(AudioAttributes.USAGE_VOICE_COMMUNICATION),
                anyInt(), anyString());
        inOrderVerifier.verify(mAppOpsManagerMock).checkAudioOpNoThrow(eq(AppOpsManager.OP_VIBRATE),
                eq(AudioAttributes.USAGE_UNKNOWN), anyInt(), anyString());