MCV2: Add contentDescriptions to buttons
Bug: 74501732
Test: Checked using Accessibility Scanner app
Change-Id: Id194637dfb49a8a41fc8e32ddf1e99d66a8f3ab6
diff --git a/packages/MediaComponents/res/layout/full_transport_controls.xml b/packages/MediaComponents/res/layout/full_transport_controls.xml
index dd41a1f..0914785 100644
--- a/packages/MediaComponents/res/layout/full_transport_controls.xml
+++ b/packages/MediaComponents/res/layout/full_transport_controls.xml
@@ -28,4 +28,4 @@
<ImageButton android:id="@+id/pause" style="@style/FullTransportControlsButton.Pause" />
<ImageButton android:id="@+id/ffwd" style="@style/FullTransportControlsButton.Ffwd" />
<ImageButton android:id="@+id/next" style="@style/FullTransportControlsButton.Next" />
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/packages/MediaComponents/res/layout/media_controller.xml b/packages/MediaComponents/res/layout/media_controller.xml
index c5fbee8..dfda840 100644
--- a/packages/MediaComponents/res/layout/media_controller.xml
+++ b/packages/MediaComponents/res/layout/media_controller.xml
@@ -105,6 +105,7 @@
android:id="@+id/cast"
android:layout_centerVertical="true"
android:visibility="gone"
+ android:contentDescription="@string/mr_button_content_description"
style="@style/TitleBarButton" />
</LinearLayout>
@@ -120,6 +121,7 @@
<SeekBar
android:id="@+id/mediacontroller_progress"
+ android:contentDescription="@string/mcv2_seek_bar_desc"
android:layout_width="match_parent"
android:layout_height="12dp"
android:maxHeight="2dp"
@@ -233,4 +235,4 @@
</LinearLayout>
</LinearLayout>
</RelativeLayout>
-</LinearLayout>
\ No newline at end of file
+</LinearLayout>
diff --git a/packages/MediaComponents/res/values/strings.xml b/packages/MediaComponents/res/values/strings.xml
index 69e9dff..aaceac8 100644
--- a/packages/MediaComponents/res/values/strings.xml
+++ b/packages/MediaComponents/res/values/strings.xml
@@ -84,10 +84,6 @@
<!-- Placeholder text indicating that the user is currently casting screen. [CHAR LIMIT=50] -->
<string name="mr_controller_casting_screen">Casting screen</string>
- <string name="lockscreen_pause_button_content_description">Pause</string>
- <string name="lockscreen_play_button_content_description">Play</string>
- <string name="lockscreen_replay_button_content_description">Replay</string>
-
<!-- Text for error alert when a video container is not valid for progressive download/playback. -->
<string name="VideoView2_error_text_invalid_progressive_playback">This video isn\'t valid for streaming to this device.</string>
<!-- Text for error alert when a video cannot be played. It can be used by any app. -->
@@ -133,4 +129,25 @@
<string name="MediaControlView2_audio_track_number_text">
Track <xliff:g id="audio_number" example="1">%1$s</xliff:g>
</string>
+
+ <!--Content Descriptions -->
+ <string name="mcv2_back_button_desc">Back</string>
+ <string name="mcv2_overflow_left_button_desc">See more buttons</string>
+ <string name="mcv2_overflow_right_button_desc">Back to previous button list</string>
+ <string name="mcv2_seek_bar_desc">Playback progress</string>
+ <string name="mcv2_settings_button_desc">Settings</string>
+ <string name="mcv2_video_quality_button_desc">Video Quality Selection</string>
+ <string name="mcv2_cc_is_on">Subtitle is on. Click to hide it.</string>
+ <string name="mcv2_cc_is_off">Subtitle is off. Click to show it.</string>
+ <string name="mcv2_replay_button_desc">Replay</string>
+ <string name="mcv2_play_button_desc">Play</string>
+ <string name="mcv2_pause_button_desc">Pause</string>
+ <string name="mcv2_previous_button_desc">Previous media</string>
+ <string name="mcv2_next_button_desc">Next media</string>
+ <string name="mcv2_rewind_button_desc">Rewind by 10 seconds</string>
+ <string name="mcv2_ffwd_button_desc">Go forward by 30 seconds</string>
+ <string name="mcv2_launch_button_desc">Launch Link</string>
+ <string name="mcv2_muted_button_desc">Muted. Click to unmute</string>
+ <string name="mcv2_unmuted_button_desc">Click to Mute</string>
+ <string name="mcv2_full_screen_button_desc">Full screen</string>
</resources>
diff --git a/packages/MediaComponents/res/values/style.xml b/packages/MediaComponents/res/values/style.xml
index b1da137..0be04e6 100644
--- a/packages/MediaComponents/res/values/style.xml
+++ b/packages/MediaComponents/res/values/style.xml
@@ -10,30 +10,35 @@
<item name="android:src">@drawable/ic_skip_previous</item>
<item name="android:layout_width">@dimen/mcv2_full_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_full_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_previous_button_desc</item>
</style>
<style name="FullTransportControlsButton.Next">
<item name="android:src">@drawable/ic_skip_next</item>
<item name="android:layout_width">@dimen/mcv2_full_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_full_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_next_button_desc</item>
</style>
<style name="FullTransportControlsButton.Pause">
<item name="android:src">@drawable/ic_pause_circle_filled</item>
<item name="android:layout_width">@dimen/mcv2_pause_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_pause_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_pause_button_desc</item>
</style>
<style name="FullTransportControlsButton.Ffwd">
<item name="android:src">@drawable/ic_forward_30</item>
<item name="android:layout_width">@dimen/mcv2_full_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_full_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_ffwd_button_desc</item>
</style>
<style name="FullTransportControlsButton.Rew">
<item name="android:src">@drawable/ic_rewind_10</item>
<item name="android:layout_width">@dimen/mcv2_full_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_full_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_rewind_button_desc</item>
</style>
<style name="EmbeddedTransportControlsButton">
@@ -46,30 +51,35 @@
<item name="android:src">@drawable/ic_skip_previous</item>
<item name="android:layout_width">@dimen/mcv2_embedded_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_embedded_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_previous_button_desc</item>
</style>
<style name="EmbeddedTransportControlsButton.Next">
<item name="android:src">@drawable/ic_skip_next</item>
<item name="android:layout_width">@dimen/mcv2_embedded_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_embedded_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_next_button_desc</item>
</style>
<style name="EmbeddedTransportControlsButton.Pause">
<item name="android:src">@drawable/ic_pause_circle_filled</item>
<item name="android:layout_width">@dimen/mcv2_pause_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_pause_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_pause_button_desc</item>
</style>
<style name="EmbeddedTransportControlsButton.Ffwd">
<item name="android:src">@drawable/ic_forward_30</item>
<item name="android:layout_width">@dimen/mcv2_embedded_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_embedded_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_ffwd_button_desc</item>
</style>
<style name="EmbeddedTransportControlsButton.Rew">
<item name="android:src">@drawable/ic_rewind_10</item>
<item name="android:layout_width">@dimen/mcv2_embedded_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_embedded_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_rewind_button_desc</item>
</style>
<style name="MinimalTransportControlsButton">
@@ -81,6 +91,7 @@
<item name="android:src">@drawable/ic_pause_circle_filled</item>
<item name="android:layout_width">@dimen/mcv2_minimal_icon_size</item>
<item name="android:layout_height">@dimen/mcv2_minimal_icon_size</item>
+ <item name="android:contentDescription">@string/mcv2_pause_button_desc</item>
</style>
<style name="TitleBar">
@@ -95,10 +106,12 @@
<style name="TitleBarButton.Back">
<item name="android:src">@drawable/ic_arrow_back</item>
+ <item name="android:contentDescription">@string/mcv2_back_button_desc</item>
</style>
<style name="TitleBarButton.Launch">
<item name="android:src">@drawable/ic_launch</item>
+ <item name="android:contentDescription">@string/mcv2_launch_button_desc</item>
</style>
<style name="TimeText">
@@ -137,29 +150,36 @@
<style name="BottomBarButton.CC">
<item name="android:src">@drawable/ic_subtitle_off</item>
+ <item name="android:contentDescription">@string/mcv2_cc_is_off</item>
</style>
<style name="BottomBarButton.FullScreen">
<item name="android:src">@drawable/ic_fullscreen</item>
+ <item name="android:contentDescription">@string/mcv2_full_screen_button_desc</item>
</style>
<style name="BottomBarButton.OverflowRight">
<item name="android:src">@drawable/ic_chevron_right</item>
+ <item name="android:contentDescription">@string/mcv2_overflow_right_button_desc</item>
</style>
<style name="BottomBarButton.OverflowLeft">
<item name="android:src">@drawable/ic_chevron_left</item>
+ <item name="android:contentDescription">@string/mcv2_overflow_left_button_desc</item>
</style>
<style name="BottomBarButton.Settings">
<item name="android:src">@drawable/ic_settings</item>
+ <item name="android:contentDescription">@string/mcv2_settings_button_desc</item>
</style>
<style name="BottomBarButton.Mute">
<item name="android:src">@drawable/ic_unmute</item>
+ <item name="android:contentDescription">@string/mcv2_unmuted_button_desc</item>
</style>
<style name="BottomBarButton.VideoQuality">
- <item name="android:src">@drawable/ic_high_quality</item>
+ <item name="android:src">@drawable/ic_high_quality</item>
+ <item name="android:contentDescription">@string/mcv2_video_quality_button_desc</item>
</style>
</resources>
diff --git a/packages/MediaComponents/src/com/android/widget/MediaControlView2Impl.java b/packages/MediaComponents/src/com/android/widget/MediaControlView2Impl.java
index 9ae75b0..4cdc41d 100644
--- a/packages/MediaComponents/src/com/android/widget/MediaControlView2Impl.java
+++ b/packages/MediaComponents/src/com/android/widget/MediaControlView2Impl.java
@@ -207,10 +207,6 @@
private List<String> mPlaybackSpeedTextList;
private List<Float> mPlaybackSpeedList;
- private CharSequence mPlayDescription;
- private CharSequence mPauseDescription;
- private CharSequence mReplayDescription;
-
public MediaControlView2Impl(MediaControlView2 instance,
ViewGroupProvider superProvider, ViewGroupProvider privateProvider) {
super(instance, superProvider, privateProvider);
@@ -479,12 +475,6 @@
}
private void initControllerView(View v) {
- mPlayDescription = mResources.getText(R.string.lockscreen_play_button_content_description);
- mPauseDescription =
- mResources.getText(R.string.lockscreen_pause_button_content_description);
- mReplayDescription =
- mResources.getText(R.string.lockscreen_replay_button_content_description);
-
// Relating to Title Bar View
mTitleBar = v.findViewById(R.id.title_bar);
mTitleView = v.findViewById(R.id.title_text);
@@ -707,12 +697,14 @@
mControls.pause();
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_play_circle_filled, null));
- mPlayPauseButton.setContentDescription(mPlayDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_play_button_desc));
} else {
mControls.play();
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_pause_circle_filled, null));
- mPlayPauseButton.setContentDescription(mPauseDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_pause_button_desc));
}
}
@@ -748,7 +740,8 @@
if (mIsStopped) {
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_play_circle_filled, null));
- mPlayPauseButton.setContentDescription(mPlayDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_play_button_desc));
mIsStopped = false;
}
}
@@ -897,11 +890,15 @@
if (!mIsMute) {
mMuteButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_mute, null));
+ mMuteButton.setContentDescription(
+ mResources.getString(R.string.mcv2_muted_button_desc));
mIsMute = true;
mController.sendCommand(COMMAND_MUTE, null, null);
} else {
mMuteButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_unmute, null));
+ mMuteButton.setContentDescription(
+ mResources.getString(R.string.mcv2_unmuted_button_desc));
mIsMute = false;
mController.sendCommand(COMMAND_UNMUTE, null, null);
}
@@ -975,12 +972,16 @@
MediaControlView2Impl.COMMAND_SHOW_SUBTITLE, extra, null);
mSubtitleButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_subtitle_on, null));
+ mSubtitleButton.setContentDescription(
+ mResources.getString(R.string.mcv2_cc_is_on));
mSubtitleIsEnabled = true;
} else {
mController.sendCommand(
MediaControlView2Impl.COMMAND_HIDE_SUBTITLE, null, null);
mSubtitleButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_subtitle_off, null));
+ mSubtitleButton.setContentDescription(
+ mResources.getString(R.string.mcv2_cc_is_off));
mSubtitleIsEnabled = false;
}
@@ -1106,11 +1107,13 @@
if (isPlaying()) {
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_pause_circle_filled, null));
- mPlayPauseButton.setContentDescription(mPauseDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_pause_button_desc));
} else {
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_play_circle_filled, null));
- mPlayPauseButton.setContentDescription(mPlayDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_play_button_desc));
}
}
@@ -1218,19 +1221,22 @@
case PlaybackState.STATE_PLAYING:
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_pause_circle_filled, null));
- mPlayPauseButton.setContentDescription(mPauseDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_pause_button_desc));
mInstance.removeCallbacks(mUpdateProgress);
mInstance.post(mUpdateProgress);
break;
case PlaybackState.STATE_PAUSED:
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_play_circle_filled, null));
- mPlayPauseButton.setContentDescription(mPlayDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_play_button_desc));
break;
case PlaybackState.STATE_STOPPED:
mPlayPauseButton.setImageDrawable(
mResources.getDrawable(R.drawable.ic_replay_circle_filled, null));
- mPlayPauseButton.setContentDescription(mReplayDescription);
+ mPlayPauseButton.setContentDescription(
+ mResources.getString(R.string.mcv2_replay_button_desc));
mIsStopped = true;
break;
default: