diff --git a/src/com/android/settings/widget/LabeledSeekBar.java b/src/com/android/settings/widget/LabeledSeekBar.java
index 9463bf7..35a7d1b 100644
--- a/src/com/android/settings/widget/LabeledSeekBar.java
+++ b/src/com/android/settings/widget/LabeledSeekBar.java
@@ -29,6 +29,7 @@
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
 import android.widget.SeekBar;
+import android.widget.SeekBar.OnSeekBarChangeListener;
 
 import java.util.List;
 
@@ -148,6 +149,22 @@
 
     public LabeledSeekBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
         super(context, attrs, defStyleAttr, defStyleRes);
+        super.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
+            @Override
+            public void onStopTrackingTouch(SeekBar seekBar) {
+                // Do nothing
+            }
+
+            @Override
+            public void onStartTrackingTouch(SeekBar seekBar) {
+                // Do nothing
+            }
+
+            @Override
+            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+                sendClickEventForAccessibility(progress);
+            }
+        });
     }
 
     @Override
@@ -164,6 +181,30 @@
     }
 
     @Override
+    public void setOnSeekBarChangeListener(final OnSeekBarChangeListener l) {
+        // Tweak the listener to send accessibility event on progress changed.
+        OnSeekBarChangeListener l2 = new OnSeekBarChangeListener() {
+            @Override
+            public void onStopTrackingTouch(SeekBar seekBar) {
+                l.onStopTrackingTouch(seekBar);
+            }
+
+            @Override
+            public void onStartTrackingTouch(SeekBar seekBar) {
+                l.onStartTrackingTouch(seekBar);
+            }
+
+            @Override
+            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
+                l.onProgressChanged(seekBar, progress, fromUser);
+                sendClickEventForAccessibility(progress);
+            }
+        };
+
+        super.setOnSeekBarChangeListener(l2);
+    }
+
+    @Override
     protected void onAttachedToWindow() {
         super.onAttachedToWindow();
         mAccessHelper = new LabeledSeekBarExploreByTouchHelper(this);
@@ -185,4 +226,11 @@
 
         return super.dispatchHoverEvent(event);
     }
+
+    private void sendClickEventForAccessibility(int progress) {
+        if (mAccessHelper != null) {
+            mAccessHelper.invalidateRoot();
+            mAccessHelper.sendEventForVirtualView(progress, AccessibilityEvent.TYPE_VIEW_CLICKED);
+        }
+    }
 }
