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
