Loading core/java/android/os/VibrationAttributes.java +4 −80 Original line number Diff line number Diff line Loading @@ -151,31 +151,6 @@ public final class VibrationAttributes implements Parcelable { */ public static final int USAGE_MEDIA = 0x10 | USAGE_CLASS_MEDIA; /** @hide */ @IntDef(prefix = { "CATEGORY_" }, value = { CATEGORY_UNKNOWN, CATEGORY_KEYBOARD, }) @Retention(RetentionPolicy.SOURCE) public @interface Category {} /** * Category value when the vibration category is unknown. * * @hide */ public static final int CATEGORY_UNKNOWN = 0x0; /** * Category value for keyboard vibrations. * * <p>Most typical keyboard vibrations are haptic feedback for virtual keyboard key * press/release, for example. * * @hide */ public static final int CATEGORY_KEYBOARD = 1; /** * @hide */ Loading Loading @@ -252,14 +227,12 @@ public final class VibrationAttributes implements Parcelable { private final int mUsage; private final int mFlags; private final int mOriginalAudioUsage; private final int mCategory; private VibrationAttributes(@Usage int usage, @AudioAttributes.AttributeUsage int audioUsage, @Flag int flags, @Category int category) { @Flag int flags) { mUsage = usage; mOriginalAudioUsage = audioUsage; mFlags = flags & FLAG_ALL_SUPPORTED; mCategory = category; } /** Loading Loading @@ -296,20 +269,6 @@ public final class VibrationAttributes implements Parcelable { return mFlags; } /** * Return the vibration category. * * <p>Vibration categories describe the source of the vibration, and it can be combined with * the vibration usage to best match to a user setting, e.g. a vibration with usage touch and * category keyboard can be used to control keyboard haptic feedback independently. * * @hide */ @Category public int getCategory() { return mCategory; } /** * Check whether a flag is set * @return true if a flag is set and false otherwise Loading Loading @@ -362,14 +321,12 @@ public final class VibrationAttributes implements Parcelable { dest.writeInt(mUsage); dest.writeInt(mOriginalAudioUsage); dest.writeInt(mFlags); dest.writeInt(mCategory); } private VibrationAttributes(Parcel src) { mUsage = src.readInt(); mOriginalAudioUsage = src.readInt(); mFlags = src.readInt(); mCategory = src.readInt(); } public static final @NonNull Parcelable.Creator<VibrationAttributes> Loading @@ -392,12 +349,12 @@ public final class VibrationAttributes implements Parcelable { } VibrationAttributes rhs = (VibrationAttributes) o; return mUsage == rhs.mUsage && mOriginalAudioUsage == rhs.mOriginalAudioUsage && mFlags == rhs.mFlags && mCategory == rhs.mCategory; && mFlags == rhs.mFlags; } @Override public int hashCode() { return Objects.hash(mUsage, mOriginalAudioUsage, mFlags, mCategory); return Objects.hash(mUsage, mOriginalAudioUsage, mFlags); } @Override Loading @@ -405,7 +362,6 @@ public final class VibrationAttributes implements Parcelable { return "VibrationAttributes{" + "mUsage=" + usageToString() + ", mAudioUsage= " + AudioAttributes.usageToString(mOriginalAudioUsage) + ", mCategory=" + categoryToString() + ", mFlags=" + mFlags + '}'; } Loading Loading @@ -445,23 +401,6 @@ public final class VibrationAttributes implements Parcelable { } } /** @hide */ public String categoryToString() { return categoryToString(mCategory); } /** @hide */ public static String categoryToString(@Category int category) { switch (category) { case CATEGORY_UNKNOWN: return "UNKNOWN"; case CATEGORY_KEYBOARD: return "KEYBOARD"; default: return "unknown category " + category; } } /** * Builder class for {@link VibrationAttributes} objects. * By default, all information is set to UNKNOWN. Loading @@ -471,7 +410,6 @@ public final class VibrationAttributes implements Parcelable { private int mUsage = USAGE_UNKNOWN; private int mOriginalAudioUsage = AudioAttributes.USAGE_UNKNOWN; private int mFlags = 0x0; private int mCategory = CATEGORY_UNKNOWN; /** * Constructs a new Builder with the defaults. Loading @@ -487,7 +425,6 @@ public final class VibrationAttributes implements Parcelable { mUsage = vib.mUsage; mOriginalAudioUsage = vib.mOriginalAudioUsage; mFlags = vib.mFlags; mCategory = vib.mCategory; } } Loading Loading @@ -554,7 +491,7 @@ public final class VibrationAttributes implements Parcelable { */ public @NonNull VibrationAttributes build() { VibrationAttributes ans = new VibrationAttributes( mUsage, mOriginalAudioUsage, mFlags, mCategory); mUsage, mOriginalAudioUsage, mFlags); return ans; } Loading @@ -569,19 +506,6 @@ public final class VibrationAttributes implements Parcelable { return this; } /** * Sets the attribute describing the category of the corresponding vibration. * * @param category The category for the vibration * @return the same Builder instance. * * @hide */ public @NonNull Builder setCategory(@Category int category) { mCategory = category; return this; } /** * Sets only the flags specified in the bitmask, leaving the other supported flag values * unchanged in the builder. Loading core/tests/coretests/src/android/os/VibrationAttributesTest.java +0 −2 Original line number Diff line number Diff line Loading @@ -28,11 +28,9 @@ public class VibrationAttributesTest { @Test public void testSimple() throws Exception { final VibrationAttributes attr = new VibrationAttributes.Builder() .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .setUsage(VibrationAttributes.USAGE_ALARM) .build(); assertEquals(VibrationAttributes.CATEGORY_KEYBOARD, attr.getCategory()); assertEquals(VibrationAttributes.USAGE_ALARM, attr.getUsage()); } } services/core/java/com/android/server/vibrator/HapticFeedbackVibrationProvider.java +1 −4 Original line number Diff line number Diff line Loading @@ -364,10 +364,7 @@ public final class HapticFeedbackVibrationProvider { if ((privFlags & HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS) == 0) { return TOUCH_VIBRATION_ATTRIBUTES; } return new VibrationAttributes.Builder(IME_FEEDBACK_VIBRATION_ATTRIBUTES) // TODO(b/332661766): Remove CATEGORY_KEYBOARD logic .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build(); return IME_FEEDBACK_VIBRATION_ATTRIBUTES; } @Nullable Loading services/core/java/com/android/server/vibrator/Vibration.java +1 −8 Original line number Diff line number Diff line Loading @@ -282,12 +282,6 @@ abstract class Vibration { VibrationScaler.scaleLevelToString(mScaleLevel), mAdaptiveScale, Long.toBinaryString(mCallerInfo.attrs.getFlags()), mCallerInfo.attrs.usageToString()); // Optional, most vibrations have category unknown so skip them to simplify the logs String categoryStr = mCallerInfo.attrs.getCategory() != VibrationAttributes.CATEGORY_UNKNOWN ? " | category=" + VibrationAttributes.categoryToString( mCallerInfo.attrs.getCategory()) : ""; // Optional, most vibrations should not be defined via AudioAttributes // so skip them to simplify the logs String audioUsageStr = Loading @@ -302,7 +296,7 @@ abstract class Vibration { " | played: %s | original: %s", mPlayedEffect == null ? null : mPlayedEffect.toDebugString(), mOriginalEffect == null ? null : mOriginalEffect.toDebugString()); pw.println(timingsStr + paramStr + categoryStr + audioUsageStr + callerStr + effectStr); pw.println(timingsStr + paramStr + audioUsageStr + callerStr + effectStr); } /** Write this info into given {@link PrintWriter}. */ Loading Loading @@ -335,7 +329,6 @@ abstract class Vibration { final VibrationAttributes attrs = mCallerInfo.attrs; proto.write(VibrationAttributesProto.USAGE, attrs.getUsage()); proto.write(VibrationAttributesProto.AUDIO_USAGE, attrs.getAudioUsage()); proto.write(VibrationAttributesProto.CATEGORY, attrs.getCategory()); proto.write(VibrationAttributesProto.FLAGS, attrs.getFlags()); proto.end(attrsToken); Loading services/tests/vibrator/src/com/android/server/vibrator/HapticFeedbackVibrationProviderTest.java +3 −9 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.server.vibrator; import static android.os.VibrationAttributes.CATEGORY_KEYBOARD; import static android.os.VibrationAttributes.CATEGORY_UNKNOWN; import static android.os.VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY; import static android.os.VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF; import static android.os.VibrationAttributes.USAGE_IME_FEEDBACK; Loading Loading @@ -255,7 +253,7 @@ public class HapticFeedbackVibrationProviderTest { } @Test public void testKeyboardHaptic_fixAmplitude_keyboardCategoryOn_keyboardVibrationReturned() { public void testKeyboardHaptic_fixAmplitude_keyboardVibrationReturned() { mockVibratorPrimitiveSupport(PRIMITIVE_CLICK, PRIMITIVE_TICK); mockKeyboardVibrationFixedAmplitude(KEYBOARD_VIBRATION_FIXED_AMPLITUDE); Loading Loading @@ -330,7 +328,7 @@ public class HapticFeedbackVibrationProviderTest { } @Test public void testVibrationAttribute_keyboardCategoryOn_notIme_useTouchUsage() { public void testVibrationAttribute_notIme_useTouchUsage() { HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations(); for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) { Loading @@ -338,13 +336,11 @@ public class HapticFeedbackVibrationProviderTest { effectId, /* flags */ 0, /* privFlags */ 0); assertWithMessage("Expected USAGE_TOUCH for effect " + effectId) .that(attrs.getUsage()).isEqualTo(USAGE_TOUCH); assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId) .that(attrs.getCategory()).isEqualTo(CATEGORY_UNKNOWN); } } @Test public void testVibrationAttribute_keyboardCategoryOn_isIme_useImeFeedbackUsage() { public void testVibrationAttribute_isIme_useImeFeedbackUsage() { HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations(); for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) { Loading @@ -353,8 +349,6 @@ public class HapticFeedbackVibrationProviderTest { HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS); assertWithMessage("Expected USAGE_IME_FEEDBACK for effect " + effectId) .that(attrs.getUsage()).isEqualTo(USAGE_IME_FEEDBACK); assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId) .that(attrs.getCategory()).isEqualTo(CATEGORY_KEYBOARD); } } Loading Loading
core/java/android/os/VibrationAttributes.java +4 −80 Original line number Diff line number Diff line Loading @@ -151,31 +151,6 @@ public final class VibrationAttributes implements Parcelable { */ public static final int USAGE_MEDIA = 0x10 | USAGE_CLASS_MEDIA; /** @hide */ @IntDef(prefix = { "CATEGORY_" }, value = { CATEGORY_UNKNOWN, CATEGORY_KEYBOARD, }) @Retention(RetentionPolicy.SOURCE) public @interface Category {} /** * Category value when the vibration category is unknown. * * @hide */ public static final int CATEGORY_UNKNOWN = 0x0; /** * Category value for keyboard vibrations. * * <p>Most typical keyboard vibrations are haptic feedback for virtual keyboard key * press/release, for example. * * @hide */ public static final int CATEGORY_KEYBOARD = 1; /** * @hide */ Loading Loading @@ -252,14 +227,12 @@ public final class VibrationAttributes implements Parcelable { private final int mUsage; private final int mFlags; private final int mOriginalAudioUsage; private final int mCategory; private VibrationAttributes(@Usage int usage, @AudioAttributes.AttributeUsage int audioUsage, @Flag int flags, @Category int category) { @Flag int flags) { mUsage = usage; mOriginalAudioUsage = audioUsage; mFlags = flags & FLAG_ALL_SUPPORTED; mCategory = category; } /** Loading Loading @@ -296,20 +269,6 @@ public final class VibrationAttributes implements Parcelable { return mFlags; } /** * Return the vibration category. * * <p>Vibration categories describe the source of the vibration, and it can be combined with * the vibration usage to best match to a user setting, e.g. a vibration with usage touch and * category keyboard can be used to control keyboard haptic feedback independently. * * @hide */ @Category public int getCategory() { return mCategory; } /** * Check whether a flag is set * @return true if a flag is set and false otherwise Loading Loading @@ -362,14 +321,12 @@ public final class VibrationAttributes implements Parcelable { dest.writeInt(mUsage); dest.writeInt(mOriginalAudioUsage); dest.writeInt(mFlags); dest.writeInt(mCategory); } private VibrationAttributes(Parcel src) { mUsage = src.readInt(); mOriginalAudioUsage = src.readInt(); mFlags = src.readInt(); mCategory = src.readInt(); } public static final @NonNull Parcelable.Creator<VibrationAttributes> Loading @@ -392,12 +349,12 @@ public final class VibrationAttributes implements Parcelable { } VibrationAttributes rhs = (VibrationAttributes) o; return mUsage == rhs.mUsage && mOriginalAudioUsage == rhs.mOriginalAudioUsage && mFlags == rhs.mFlags && mCategory == rhs.mCategory; && mFlags == rhs.mFlags; } @Override public int hashCode() { return Objects.hash(mUsage, mOriginalAudioUsage, mFlags, mCategory); return Objects.hash(mUsage, mOriginalAudioUsage, mFlags); } @Override Loading @@ -405,7 +362,6 @@ public final class VibrationAttributes implements Parcelable { return "VibrationAttributes{" + "mUsage=" + usageToString() + ", mAudioUsage= " + AudioAttributes.usageToString(mOriginalAudioUsage) + ", mCategory=" + categoryToString() + ", mFlags=" + mFlags + '}'; } Loading Loading @@ -445,23 +401,6 @@ public final class VibrationAttributes implements Parcelable { } } /** @hide */ public String categoryToString() { return categoryToString(mCategory); } /** @hide */ public static String categoryToString(@Category int category) { switch (category) { case CATEGORY_UNKNOWN: return "UNKNOWN"; case CATEGORY_KEYBOARD: return "KEYBOARD"; default: return "unknown category " + category; } } /** * Builder class for {@link VibrationAttributes} objects. * By default, all information is set to UNKNOWN. Loading @@ -471,7 +410,6 @@ public final class VibrationAttributes implements Parcelable { private int mUsage = USAGE_UNKNOWN; private int mOriginalAudioUsage = AudioAttributes.USAGE_UNKNOWN; private int mFlags = 0x0; private int mCategory = CATEGORY_UNKNOWN; /** * Constructs a new Builder with the defaults. Loading @@ -487,7 +425,6 @@ public final class VibrationAttributes implements Parcelable { mUsage = vib.mUsage; mOriginalAudioUsage = vib.mOriginalAudioUsage; mFlags = vib.mFlags; mCategory = vib.mCategory; } } Loading Loading @@ -554,7 +491,7 @@ public final class VibrationAttributes implements Parcelable { */ public @NonNull VibrationAttributes build() { VibrationAttributes ans = new VibrationAttributes( mUsage, mOriginalAudioUsage, mFlags, mCategory); mUsage, mOriginalAudioUsage, mFlags); return ans; } Loading @@ -569,19 +506,6 @@ public final class VibrationAttributes implements Parcelable { return this; } /** * Sets the attribute describing the category of the corresponding vibration. * * @param category The category for the vibration * @return the same Builder instance. * * @hide */ public @NonNull Builder setCategory(@Category int category) { mCategory = category; return this; } /** * Sets only the flags specified in the bitmask, leaving the other supported flag values * unchanged in the builder. Loading
core/tests/coretests/src/android/os/VibrationAttributesTest.java +0 −2 Original line number Diff line number Diff line Loading @@ -28,11 +28,9 @@ public class VibrationAttributesTest { @Test public void testSimple() throws Exception { final VibrationAttributes attr = new VibrationAttributes.Builder() .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .setUsage(VibrationAttributes.USAGE_ALARM) .build(); assertEquals(VibrationAttributes.CATEGORY_KEYBOARD, attr.getCategory()); assertEquals(VibrationAttributes.USAGE_ALARM, attr.getUsage()); } }
services/core/java/com/android/server/vibrator/HapticFeedbackVibrationProvider.java +1 −4 Original line number Diff line number Diff line Loading @@ -364,10 +364,7 @@ public final class HapticFeedbackVibrationProvider { if ((privFlags & HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS) == 0) { return TOUCH_VIBRATION_ATTRIBUTES; } return new VibrationAttributes.Builder(IME_FEEDBACK_VIBRATION_ATTRIBUTES) // TODO(b/332661766): Remove CATEGORY_KEYBOARD logic .setCategory(VibrationAttributes.CATEGORY_KEYBOARD) .build(); return IME_FEEDBACK_VIBRATION_ATTRIBUTES; } @Nullable Loading
services/core/java/com/android/server/vibrator/Vibration.java +1 −8 Original line number Diff line number Diff line Loading @@ -282,12 +282,6 @@ abstract class Vibration { VibrationScaler.scaleLevelToString(mScaleLevel), mAdaptiveScale, Long.toBinaryString(mCallerInfo.attrs.getFlags()), mCallerInfo.attrs.usageToString()); // Optional, most vibrations have category unknown so skip them to simplify the logs String categoryStr = mCallerInfo.attrs.getCategory() != VibrationAttributes.CATEGORY_UNKNOWN ? " | category=" + VibrationAttributes.categoryToString( mCallerInfo.attrs.getCategory()) : ""; // Optional, most vibrations should not be defined via AudioAttributes // so skip them to simplify the logs String audioUsageStr = Loading @@ -302,7 +296,7 @@ abstract class Vibration { " | played: %s | original: %s", mPlayedEffect == null ? null : mPlayedEffect.toDebugString(), mOriginalEffect == null ? null : mOriginalEffect.toDebugString()); pw.println(timingsStr + paramStr + categoryStr + audioUsageStr + callerStr + effectStr); pw.println(timingsStr + paramStr + audioUsageStr + callerStr + effectStr); } /** Write this info into given {@link PrintWriter}. */ Loading Loading @@ -335,7 +329,6 @@ abstract class Vibration { final VibrationAttributes attrs = mCallerInfo.attrs; proto.write(VibrationAttributesProto.USAGE, attrs.getUsage()); proto.write(VibrationAttributesProto.AUDIO_USAGE, attrs.getAudioUsage()); proto.write(VibrationAttributesProto.CATEGORY, attrs.getCategory()); proto.write(VibrationAttributesProto.FLAGS, attrs.getFlags()); proto.end(attrsToken); Loading
services/tests/vibrator/src/com/android/server/vibrator/HapticFeedbackVibrationProviderTest.java +3 −9 Original line number Diff line number Diff line Loading @@ -16,8 +16,6 @@ package com.android.server.vibrator; import static android.os.VibrationAttributes.CATEGORY_KEYBOARD; import static android.os.VibrationAttributes.CATEGORY_UNKNOWN; import static android.os.VibrationAttributes.FLAG_BYPASS_INTERRUPTION_POLICY; import static android.os.VibrationAttributes.FLAG_BYPASS_USER_VIBRATION_INTENSITY_OFF; import static android.os.VibrationAttributes.USAGE_IME_FEEDBACK; Loading Loading @@ -255,7 +253,7 @@ public class HapticFeedbackVibrationProviderTest { } @Test public void testKeyboardHaptic_fixAmplitude_keyboardCategoryOn_keyboardVibrationReturned() { public void testKeyboardHaptic_fixAmplitude_keyboardVibrationReturned() { mockVibratorPrimitiveSupport(PRIMITIVE_CLICK, PRIMITIVE_TICK); mockKeyboardVibrationFixedAmplitude(KEYBOARD_VIBRATION_FIXED_AMPLITUDE); Loading Loading @@ -330,7 +328,7 @@ public class HapticFeedbackVibrationProviderTest { } @Test public void testVibrationAttribute_keyboardCategoryOn_notIme_useTouchUsage() { public void testVibrationAttribute_notIme_useTouchUsage() { HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations(); for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) { Loading @@ -338,13 +336,11 @@ public class HapticFeedbackVibrationProviderTest { effectId, /* flags */ 0, /* privFlags */ 0); assertWithMessage("Expected USAGE_TOUCH for effect " + effectId) .that(attrs.getUsage()).isEqualTo(USAGE_TOUCH); assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId) .that(attrs.getCategory()).isEqualTo(CATEGORY_UNKNOWN); } } @Test public void testVibrationAttribute_keyboardCategoryOn_isIme_useImeFeedbackUsage() { public void testVibrationAttribute_isIme_useImeFeedbackUsage() { HapticFeedbackVibrationProvider hapticProvider = createProviderWithDefaultCustomizations(); for (int effectId : KEYBOARD_FEEDBACK_CONSTANTS) { Loading @@ -353,8 +349,6 @@ public class HapticFeedbackVibrationProviderTest { HapticFeedbackConstants.PRIVATE_FLAG_APPLY_INPUT_METHOD_SETTINGS); assertWithMessage("Expected USAGE_IME_FEEDBACK for effect " + effectId) .that(attrs.getUsage()).isEqualTo(USAGE_IME_FEEDBACK); assertWithMessage("Expected CATEGORY_KEYBOARD for effect " + effectId) .that(attrs.getCategory()).isEqualTo(CATEGORY_KEYBOARD); } } Loading