leanback: add missing navigation sound when falling to smooth scroll
Test: build leanback-demos and tested on device
Change-Id: Ic5287ded119193b14fcb246af10cf0d6ee49f6a6
diff --git a/leanback/leanback-grid/src/main/java/androidx/leanback/widget/GridLayoutManager.java b/leanback/leanback-grid/src/main/java/androidx/leanback/widget/GridLayoutManager.java
index ca7116d..f31e65c 100644
--- a/leanback/leanback-grid/src/main/java/androidx/leanback/widget/GridLayoutManager.java
+++ b/leanback/leanback-grid/src/main/java/androidx/leanback/widget/GridLayoutManager.java
@@ -25,6 +25,7 @@
import android.content.Context;
import android.graphics.PointF;
import android.graphics.Rect;
+import android.media.AudioManager;
import android.os.Build;
import android.os.Bundle;
import android.os.Parcel;
@@ -461,6 +462,8 @@
final SparseIntArray mPositionToRowInPostLayout = new SparseIntArray();
int[] mDisappearingPositions;
+ AudioManager mAudioManager;
+
RecyclerView.Recycler mRecycler;
private static final Rect sTempRect = new Rect();
@@ -1238,6 +1241,14 @@
return p.getOpticalTop(v) + p.getAlignY();
}
+ AudioManager getAudioManager() {
+ if (mAudioManager == null) {
+ mAudioManager = (AudioManager) mBaseGridView.getContext()
+ .getSystemService(Context.AUDIO_SERVICE);
+ }
+ return mAudioManager;
+ }
+
/**
* Save Recycler and State for convenience. Must be paired with leaveContext().
*/
@@ -2861,6 +2872,21 @@
mPendingMoveSmoothScroller.decreasePendingMoves();
}
}
+ int soundEffect;
+ if (mOrientation == HORIZONTAL) {
+ boolean rtl = getLayoutDirection() == ViewCompat.LAYOUT_DIRECTION_RTL;
+ if (rtl) {
+ soundEffect = forward ? AudioManager.FX_FOCUS_NAVIGATION_LEFT :
+ AudioManager.FX_FOCUS_NAVIGATION_RIGHT;
+ } else {
+ soundEffect = forward ? AudioManager.FX_FOCUS_NAVIGATION_RIGHT :
+ AudioManager.FX_FOCUS_NAVIGATION_LEFT;
+ }
+ } else {
+ soundEffect = forward ? AudioManager.FX_FOCUS_NAVIGATION_DOWN :
+ AudioManager.FX_FOCUS_NAVIGATION_UP;
+ }
+ getAudioManager().playSoundEffect(soundEffect);
}
@Override