[Android] Accessibility: improve talkback for the video player delay UI

Nicolas Pomepuy git at videolan.org
Fri Jun 3 11:30:21 UTC 2022


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Tue May 24 09:28:32 2022 +0200| [ea99b7bbfe4883de9b6208bd77a391bd789cd9aa] | committer: Nicolas Pomepuy

Accessibility: improve talkback for the video player delay UI

> https://code.videolan.org/videolan/vlc-android/commit/ea99b7bbfe4883de9b6208bd77a391bd789cd9aa
---

 application/resources/src/main/res/values/strings.xml             | 2 ++
 application/vlc-android/res/layout/player_overlay_settings.xml    | 3 +++
 application/vlc-android/res/layout/player_overlay_track_item.xml  | 1 +
 .../src/org/videolan/vlc/gui/video/VideoDelayDelegate.kt          | 8 ++++----
 .../src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt  | 4 ++--
 5 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/application/resources/src/main/res/values/strings.xml b/application/resources/src/main/res/values/strings.xml
index 6503c00ad..29f282f48 100644
--- a/application/resources/src/main/res/values/strings.xml
+++ b/application/resources/src/main/res/values/strings.xml
@@ -1007,6 +1007,8 @@
     <string name="talkback_subtitle_tracks">Subtitle tracks</string>
     <string name="talkback_track" translatable="false">%s: %s. %s</string>
     <string name="selected">Selected</string>
+    <string name="talkback_increase_delay">Increase delay</string>
+    <string name="talkback_decrease_delay">Decrease delay</string>
 
 
 </resources>
diff --git a/application/vlc-android/res/layout/player_overlay_settings.xml b/application/vlc-android/res/layout/player_overlay_settings.xml
index c4b43b406..2f579d715 100644
--- a/application/vlc-android/res/layout/player_overlay_settings.xml
+++ b/application/vlc-android/res/layout/player_overlay_settings.xml
@@ -43,6 +43,7 @@
                 android:background="?attr/selectableItemBackgroundBorderless"
                 android:clickable="true"
                 android:elevation="2dp"
+                android:contentDescription="@string/close"
                 android:focusable="true"
                 android:padding="4dp"
                 android:visibility="invisible"
@@ -76,6 +77,7 @@
                 android:nextFocusUp="@+id/close"
                 android:padding="0dp"
                 android:visibility="invisible"
+                android:contentDescription="@string/talkback_decrease_delay"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toStartOf="@+id/delay_textinfo"
                 app:layout_constraintHorizontal_bias="0.5"
@@ -113,6 +115,7 @@
                 android:nextFocusUp="@+id/close"
                 android:padding="0dp"
                 android:visibility="invisible"
+                android:contentDescription="@string/talkback_increase_delay"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintHorizontal_bias="0.5"
diff --git a/application/vlc-android/res/layout/player_overlay_track_item.xml b/application/vlc-android/res/layout/player_overlay_track_item.xml
index c8a41d195..a1e83d101 100644
--- a/application/vlc-android/res/layout/player_overlay_track_item.xml
+++ b/application/vlc-android/res/layout/player_overlay_track_item.xml
@@ -71,6 +71,7 @@
                 android:layout_height="wrap_content"
                 android:padding="8dp"
                 android:focusable="true"
+                android:contentDescription="@string/more_actions"
                 android:background="?attr/selectableItemBackgroundBorderless"
                 app:layout_constraintBottom_toBottomOf="@id/track_title"
                 app:layout_constraintEnd_toEndOf="parent"
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoDelayDelegate.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoDelayDelegate.kt
index fe42130d0..3f7962f7c 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoDelayDelegate.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoDelayDelegate.kt
@@ -29,7 +29,6 @@ import android.annotation.SuppressLint
 import android.annotation.TargetApi
 import android.content.res.ColorStateList
 import android.os.Build
-import android.util.Log
 import android.view.View
 import android.view.animation.AccelerateDecelerateInterpolator
 import android.widget.ImageView
@@ -39,17 +38,16 @@ import androidx.core.animation.doOnEnd
 import androidx.core.content.ContextCompat
 import com.google.android.material.animation.ArgbEvaluatorCompat
 import com.google.android.material.button.MaterialButton
-import com.google.android.material.snackbar.Snackbar
 import org.videolan.tools.*
-import org.videolan.vlc.BuildConfig
 import org.videolan.vlc.PlaybackService
 import org.videolan.vlc.R
-import org.videolan.vlc.gui.helpers.OnRepeatListenerTouch
 import org.videolan.vlc.gui.helpers.OnRepeatListenerKey
+import org.videolan.vlc.gui.helpers.OnRepeatListenerTouch
 import org.videolan.vlc.gui.helpers.UiTools
 import org.videolan.vlc.gui.video.VideoPlayerActivity.Companion.KEY_BLUETOOTH_DELAY
 import org.videolan.vlc.interfaces.IPlaybackSettingsController
 import org.videolan.vlc.media.DelayValues
+import org.videolan.vlc.util.isTalkbackIsEnabled
 
 private const val DELAY_DEFAULT_VALUE = 50000L
 
@@ -124,6 +122,7 @@ class VideoDelayDelegate(private val player: VideoPlayerActivity) : View.OnClick
         playbackSettingPlus.requestFocus()
         initPlaybackSettingInfo()
         if (playbackSetting == IPlaybackSettingsController.DelayState.AUDIO) delayApplyAll.setVisible() else delayApplyAll.setGone()
+        player.overlayDelegate.hideOverlay(fromUser = true, forceTalkback = true)
     }
 
     /**
@@ -261,6 +260,7 @@ class VideoDelayDelegate(private val player: VideoPlayerActivity) : View.OnClick
             service.playlistManager.delayValue.value = DelayValues()
             player.overlayDelegate.focusPlayPause()
         }
+        if (player.isTalkbackIsEnabled()) player.overlayDelegate.showOverlay()
     }
 
     /**
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt
index 5c5f68b28..32b54be9a 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerOverlayDelegate.kt
@@ -841,8 +841,8 @@ class VideoPlayerOverlayDelegate (private val player: VideoPlayerActivity) {
     /**
      * hider overlay
      */
-    fun hideOverlay(fromUser: Boolean) {
-        if (!fromUser && player.isTalkbackIsEnabled()) return
+    fun hideOverlay(fromUser: Boolean, forceTalkback: Boolean = false) {
+        if (!fromUser && (player.isTalkbackIsEnabled() && !forceTalkback)) return
         if (player.isShowing) {
             if (isBookmarkShown()) hideBookmarks()
             player.handler.removeMessages(VideoPlayerActivity.FADE_OUT)



More information about the Android mailing list