diff options
| -rw-r--r-- | core/java/android/view/SoundEffectConstants.java | 59 | ||||
| -rw-r--r-- | core/java/android/view/View.java | 4 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/AudioManager.java | 62 |
4 files changed, 71 insertions, 56 deletions
diff --git a/core/java/android/view/SoundEffectConstants.java b/core/java/android/view/SoundEffectConstants.java index f177451783dc..bd86a47f3918 100644 --- a/core/java/android/view/SoundEffectConstants.java +++ b/core/java/android/view/SoundEffectConstants.java @@ -16,11 +16,14 @@ package android.view; +import android.annotation.IntDef; import android.media.AudioManager; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting.Visibility; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; import java.util.Random; /** @@ -34,25 +37,55 @@ public class SoundEffectConstants { public static final int CLICK = 0; + /** Effect id for a navigation left */ public static final int NAVIGATION_LEFT = 1; + /** Effect id for a navigation up */ public static final int NAVIGATION_UP = 2; + /** Effect id for a navigation right */ public static final int NAVIGATION_RIGHT = 3; + /** Effect id for a navigation down */ public static final int NAVIGATION_DOWN = 4; - /** Sound effect for a repeatedly triggered navigation, e.g. due to long pressing a button */ + /** Effect id for a repeatedly triggered navigation left, e.g. due to long pressing a button */ public static final int NAVIGATION_REPEAT_LEFT = 5; - /** @see #NAVIGATION_REPEAT_LEFT */ + /** Effect id for a repeatedly triggered navigation up, e.g. due to long pressing a button */ public static final int NAVIGATION_REPEAT_UP = 6; - /** @see #NAVIGATION_REPEAT_LEFT */ + /** Effect id for a repeatedly triggered navigation right, e.g. due to long pressing a button */ public static final int NAVIGATION_REPEAT_RIGHT = 7; - /** @see #NAVIGATION_REPEAT_LEFT */ + /** Effect id for a repeatedly triggered navigation down, e.g. due to long pressing a button */ public static final int NAVIGATION_REPEAT_DOWN = 8; + /** @hide */ + @IntDef(value = { + CLICK, + NAVIGATION_LEFT, + NAVIGATION_UP, + NAVIGATION_RIGHT, + NAVIGATION_DOWN, + NAVIGATION_REPEAT_LEFT, + NAVIGATION_REPEAT_UP, + NAVIGATION_REPEAT_RIGHT, + NAVIGATION_REPEAT_DOWN + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SoundEffect {} + + /** @hide */ + @IntDef(prefix = { "NAVIGATION_" }, value = { + NAVIGATION_LEFT, + NAVIGATION_UP, + NAVIGATION_RIGHT, + NAVIGATION_DOWN, + NAVIGATION_REPEAT_LEFT, + NAVIGATION_REPEAT_UP, + NAVIGATION_REPEAT_RIGHT, + NAVIGATION_REPEAT_DOWN + }) + @Retention(RetentionPolicy.SOURCE) + public @interface NavigationSoundEffect {} + /** * Get the sonification constant for the focus directions. - * @param direction One of {@link View#FOCUS_UP}, {@link View#FOCUS_DOWN}, - * {@link View#FOCUS_LEFT}, {@link View#FOCUS_RIGHT}, {@link View#FOCUS_FORWARD} - * or {@link View#FOCUS_BACKWARD} - + * @param direction The direction of the focus. * @return The appropriate sonification constant. * @throws {@link IllegalArgumentException} when the passed direction is not one of the * documented values. @@ -76,16 +109,14 @@ public class SoundEffectConstants { /** * Get the sonification constant for the focus directions - * @param direction One of {@link View#FOCUS_UP}, {@link View#FOCUS_DOWN}, - * {@link View#FOCUS_LEFT}, {@link View#FOCUS_RIGHT}, {@link View#FOCUS_FORWARD} - * or {@link View#FOCUS_BACKWARD} + * @param direction The direction of the focus. * @param repeating True if the user long-presses a direction * @return The appropriate sonification constant * @throws IllegalArgumentException when the passed direction is not one of the * documented values. */ - public static int getConstantForFocusDirection(@View.FocusDirection int direction, - boolean repeating) { + public static @NavigationSoundEffect int getConstantForFocusDirection( + @View.FocusDirection int direction, boolean repeating) { if (repeating) { switch (direction) { case View.FOCUS_RIGHT: @@ -112,7 +143,7 @@ public class SoundEffectConstants { * @hide */ @VisibleForTesting(visibility = Visibility.PACKAGE) - public static boolean isNavigationRepeat(int effectId) { + public static boolean isNavigationRepeat(@NavigationSoundEffect int effectId) { return effectId == SoundEffectConstants.NAVIGATION_REPEAT_DOWN || effectId == SoundEffectConstants.NAVIGATION_REPEAT_LEFT || effectId == SoundEffectConstants.NAVIGATION_REPEAT_RIGHT diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index 7455b8bc3cf3..e573056ddbaa 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -26136,9 +26136,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * <p>The sound effect will only be played if sound effects are enabled by the user, and * {@link #isSoundEffectsEnabled()} is true. * - * @param soundConstant One of the constants defined in {@link SoundEffectConstants} + * @param soundConstant One of the constants defined in {@link SoundEffectConstants}. */ - public void playSoundEffect(int soundConstant) { + public void playSoundEffect(@SoundEffectConstants.SoundEffect int soundConstant) { if (mAttachInfo == null || mAttachInfo.mRootCallbacks == null || !isSoundEffectsEnabled()) { return; } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index dbccf10822cd..30ad987c27c3 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -7754,7 +7754,7 @@ public final class ViewRootImpl implements ViewParent, * {@inheritDoc} */ @Override - public void playSoundEffect(int effectId) { + public void playSoundEffect(@SoundEffectConstants.SoundEffect int effectId) { checkThread(); try { diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index f957a73144c8..bd33556bf284 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -3185,6 +3185,23 @@ public class AudioManager { @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) public static final int NUM_SOUND_EFFECTS = 16; + /** @hide */ + @IntDef(prefix = { "FX_" }, value = { + FX_KEY_CLICK, + FX_FOCUS_NAVIGATION_UP, + FX_FOCUS_NAVIGATION_DOWN, + FX_FOCUS_NAVIGATION_LEFT, + FX_FOCUS_NAVIGATION_RIGHT, + FX_KEYPRESS_STANDARD, + FX_KEYPRESS_SPACEBAR, + FX_KEYPRESS_DELETE, + FX_KEYPRESS_RETURN, + FX_KEYPRESS_INVALID, + FX_BACK + }) + @Retention(RetentionPolicy.SOURCE) + public @interface SystemSoundEffect {} + /** * @hide Number of FX_FOCUS_NAVIGATION_REPEAT_* sound effects */ @@ -3260,22 +3277,11 @@ public class AudioManager { /** * Plays a sound effect (Key clicks, lid open/close...) - * @param effectType The type of sound effect. One of - * {@link #FX_KEY_CLICK}, - * {@link #FX_FOCUS_NAVIGATION_UP}, - * {@link #FX_FOCUS_NAVIGATION_DOWN}, - * {@link #FX_FOCUS_NAVIGATION_LEFT}, - * {@link #FX_FOCUS_NAVIGATION_RIGHT}, - * {@link #FX_KEYPRESS_STANDARD}, - * {@link #FX_KEYPRESS_SPACEBAR}, - * {@link #FX_KEYPRESS_DELETE}, - * {@link #FX_KEYPRESS_RETURN}, - * {@link #FX_KEYPRESS_INVALID}, - * {@link #FX_BACK}, + * @param effectType The type of sound effect. * NOTE: This version uses the UI settings to determine * whether sounds are heard or not. */ - public void playSoundEffect(int effectType) { + public void playSoundEffect(@SystemSoundEffect int effectType) { if (effectType < 0 || effectType >= NUM_SOUND_EFFECTS) { return; } @@ -3294,24 +3300,13 @@ public class AudioManager { /** * Plays a sound effect (Key clicks, lid open/close...) - * @param effectType The type of sound effect. One of - * {@link #FX_KEY_CLICK}, - * {@link #FX_FOCUS_NAVIGATION_UP}, - * {@link #FX_FOCUS_NAVIGATION_DOWN}, - * {@link #FX_FOCUS_NAVIGATION_LEFT}, - * {@link #FX_FOCUS_NAVIGATION_RIGHT}, - * {@link #FX_KEYPRESS_STANDARD}, - * {@link #FX_KEYPRESS_SPACEBAR}, - * {@link #FX_KEYPRESS_DELETE}, - * {@link #FX_KEYPRESS_RETURN}, - * {@link #FX_KEYPRESS_INVALID}, - * {@link #FX_BACK}, + * @param effectType The type of sound effect. * @param userId The current user to pull sound settings from * NOTE: This version uses the UI settings to determine * whether sounds are heard or not. * @hide */ - public void playSoundEffect(int effectType, int userId) { + public void playSoundEffect(@SystemSoundEffect int effectType, int userId) { if (effectType < 0 || effectType >= NUM_SOUND_EFFECTS) { return; } @@ -3330,25 +3325,14 @@ public class AudioManager { /** * Plays a sound effect (Key clicks, lid open/close...) - * @param effectType The type of sound effect. One of - * {@link #FX_KEY_CLICK}, - * {@link #FX_FOCUS_NAVIGATION_UP}, - * {@link #FX_FOCUS_NAVIGATION_DOWN}, - * {@link #FX_FOCUS_NAVIGATION_LEFT}, - * {@link #FX_FOCUS_NAVIGATION_RIGHT}, - * {@link #FX_KEYPRESS_STANDARD}, - * {@link #FX_KEYPRESS_SPACEBAR}, - * {@link #FX_KEYPRESS_DELETE}, - * {@link #FX_KEYPRESS_RETURN}, - * {@link #FX_KEYPRESS_INVALID}, - * {@link #FX_BACK}, + * @param effectType The type of sound effect. * @param volume Sound effect volume. * The volume value is a raw scalar so UI controls should be scaled logarithmically. * If a volume of -1 is specified, the AudioManager.STREAM_MUSIC stream volume minus 3dB will be used. * NOTE: This version is for applications that have their own * settings panel for enabling and controlling volume. */ - public void playSoundEffect(int effectType, float volume) { + public void playSoundEffect(@SystemSoundEffect int effectType, float volume) { if (effectType < 0 || effectType >= NUM_SOUND_EFFECTS) { return; } |