diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index 444cabfcc50e0..f121c8ec5de0e 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -1331,6 +1331,14 @@ Close captions tip + + Captions overlay + + + enable + + disable + Switch output device diff --git a/packages/SystemUI/src/com/android/systemui/volume/CaptionsToggleImageButton.java b/packages/SystemUI/src/com/android/systemui/volume/CaptionsToggleImageButton.java index 45fc7563a5c38..1862ed3a4de8e 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/CaptionsToggleImageButton.java +++ b/packages/SystemUI/src/com/android/systemui/volume/CaptionsToggleImageButton.java @@ -22,6 +22,9 @@ import android.util.AttributeSet; import android.view.GestureDetector; import android.view.MotionEvent; +import androidx.core.view.ViewCompat; +import androidx.core.view.accessibility.AccessibilityNodeInfoCompat.AccessibilityActionCompat; + import com.android.keyguard.AlphaOptimizedImageButton; import com.android.systemui.R; @@ -31,7 +34,7 @@ public class CaptionsToggleImageButton extends AlphaOptimizedImageButton { private static final int[] OPTED_OUT_STATE = new int[] { R.attr.optedOut }; private ConfirmedTapListener mConfirmedTapListener; - private boolean mComponentEnabled = false; + private boolean mCaptionsEnabled = false; private boolean mOptedOut = false; private GestureDetector mGestureDetector; @@ -39,16 +42,14 @@ public class CaptionsToggleImageButton extends AlphaOptimizedImageButton { new GestureDetector.SimpleOnGestureListener() { @Override public boolean onSingleTapConfirmed(MotionEvent e) { - if (mConfirmedTapListener != null) { - mConfirmedTapListener.onConfirmedTap(); - return true; - } - return false; + return tryToSendTapConfirmedEvent(); } }; public CaptionsToggleImageButton(Context context, AttributeSet attrs) { super(context, attrs); + this.setContentDescription( + getContext().getString(R.string.volume_odi_captions_content_description)); } @Override @@ -66,16 +67,32 @@ public class CaptionsToggleImageButton extends AlphaOptimizedImageButton { return state; } - Runnable setComponentEnabled(boolean isComponentEnabled) { - this.mComponentEnabled = isComponentEnabled; + Runnable setCaptionsEnabled(boolean areCaptionsEnabled) { + this.mCaptionsEnabled = areCaptionsEnabled; - return this.setImageResourceAsync(this.mComponentEnabled + ViewCompat.replaceAccessibilityAction( + this, + AccessibilityActionCompat.ACTION_CLICK, + mCaptionsEnabled + ? getContext().getString(R.string.volume_odi_captions_hint_disable) + : getContext().getString(R.string.volume_odi_captions_hint_enable), + (view, commandArguments) -> tryToSendTapConfirmedEvent()); + + return this.setImageResourceAsync(mCaptionsEnabled ? R.drawable.ic_volume_odi_captions : R.drawable.ic_volume_odi_captions_disabled); } - boolean getComponentEnabled() { - return this.mComponentEnabled; + private boolean tryToSendTapConfirmedEvent() { + if (mConfirmedTapListener != null) { + mConfirmedTapListener.onConfirmedTap(); + return true; + } + return false; + } + + boolean getCaptionsEnabled() { + return this.mCaptionsEnabled; } /** Sets whether or not the current stream has opted out of captions */ diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index 509537089bf85..8d9c5a3740b2e 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -596,9 +596,9 @@ public class VolumeDialogImpl implements VolumeDialog, } private void updateCaptionsIcon() { - boolean componentEnabled = mController.areCaptionsEnabled(); - if (mODICaptionsIcon.getComponentEnabled() != componentEnabled) { - mHandler.post(mODICaptionsIcon.setComponentEnabled(componentEnabled)); + boolean captionsEnabled = mController.areCaptionsEnabled(); + if (mODICaptionsIcon.getCaptionsEnabled() != captionsEnabled) { + mHandler.post(mODICaptionsIcon.setCaptionsEnabled(captionsEnabled)); } boolean isOptedOut = mController.isCaptionStreamOptedOut(); @@ -878,7 +878,6 @@ public class VolumeDialogImpl implements VolumeDialog, } view.setContentDescription(mContext.getString(currStateResId)); - view.setAccessibilityDelegate(new AccessibilityDelegate() { public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(host, info);