summaryrefslogtreecommitdiff
path: root/core/java/android/view/ViewRootImpl.java
diff options
context:
space:
mode:
authorPhilip Junker <philipjunker@google.com>2020-12-04 11:07:58 +0100
committerPhilip Junker <philipjunker@google.com>2021-02-23 08:48:34 +0000
commite3a12e85c4aa75988738c6df18ffdcd4d2b2efb1 (patch)
tree4ec5a7b6fee699faff09352452b51b29e6dfe186 /core/java/android/view/ViewRootImpl.java
parent891f69f44198c20e55823762e872dfe6ed60fcc6 (diff)
Add support for navigation repeat sound effects
NO_TYPO_CHECK=Existing typo in getContantForFocusDirection (e.g. b/3170596) Test: atest android.view.cts.SoundEffectConstantsTest Test: atest android.view.SoundEffectConstantsTest Bug: 157407957 Change-Id: I7377b1df6b151ea0d77476f0186b4bb21f1a55fe
Diffstat (limited to 'core/java/android/view/ViewRootImpl.java')
-rw-r--r--core/java/android/view/ViewRootImpl.java21
1 files changed, 19 insertions, 2 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 144691d3eaa0..1abcb15ca7a3 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -323,6 +323,8 @@ public final class ViewRootImpl implements ViewParent,
private boolean mForceDisableBLAST;
private boolean mEnableTripleBuffering;
+ private boolean mFastScrollSoundEffectsEnabled;
+
/**
* Signals that compatibility booleans have been initialized according to
* target SDK versions.
@@ -813,6 +815,8 @@ public final class ViewRootImpl implements ViewParent,
loadSystemProperties();
mImeFocusController = new ImeFocusController(this);
+ AudioManager audioManager = mContext.getSystemService(AudioManager.class);
+ mFastScrollSoundEffectsEnabled = audioManager.areNavigationRepeatSoundEffectsEnabled();
}
public static void addFirstDrawHandler(Runnable callback) {
@@ -6081,8 +6085,10 @@ public final class ViewRootImpl implements ViewParent,
v, mTempRect);
}
if (v.requestFocus(direction, mTempRect)) {
- playSoundEffect(SoundEffectConstants
- .getContantForFocusDirection(direction));
+ boolean isFastScrolling = event.getRepeatCount() > 0;
+ playSoundEffect(
+ SoundEffectConstants.getConstantForFocusDirection(direction,
+ isFastScrolling));
return true;
}
}
@@ -7743,20 +7749,31 @@ public final class ViewRootImpl implements ViewParent,
try {
final AudioManager audioManager = getAudioManager();
+ if (mFastScrollSoundEffectsEnabled
+ && SoundEffectConstants.isNavigationRepeat(effectId)) {
+ audioManager.playSoundEffect(
+ SoundEffectConstants.nextNavigationRepeatSoundEffectId());
+ return;
+ }
+
switch (effectId) {
case SoundEffectConstants.CLICK:
audioManager.playSoundEffect(AudioManager.FX_KEY_CLICK);
return;
case SoundEffectConstants.NAVIGATION_DOWN:
+ case SoundEffectConstants.NAVIGATION_REPEAT_DOWN:
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_DOWN);
return;
case SoundEffectConstants.NAVIGATION_LEFT:
+ case SoundEffectConstants.NAVIGATION_REPEAT_LEFT:
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_LEFT);
return;
case SoundEffectConstants.NAVIGATION_RIGHT:
+ case SoundEffectConstants.NAVIGATION_REPEAT_RIGHT:
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_RIGHT);
return;
case SoundEffectConstants.NAVIGATION_UP:
+ case SoundEffectConstants.NAVIGATION_REPEAT_UP:
audioManager.playSoundEffect(AudioManager.FX_FOCUS_NAVIGATION_UP);
return;
default: