mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 16:10:00 +00:00
[a11y] Ensure that video overlay with controls is never hidden when screen reader is enabled.
This commit is contained in:
@@ -50,6 +50,7 @@ dependencies {
|
|||||||
implementation(projects.libraries.matrix.api)
|
implementation(projects.libraries.matrix.api)
|
||||||
implementation(projects.libraries.matrixmedia.api)
|
implementation(projects.libraries.matrixmedia.api)
|
||||||
implementation(projects.libraries.uiStrings)
|
implementation(projects.libraries.uiStrings)
|
||||||
|
implementation(projects.libraries.uiUtils)
|
||||||
implementation(projects.libraries.voiceplayer.api)
|
implementation(projects.libraries.voiceplayer.api)
|
||||||
implementation(projects.services.toolbox.api)
|
implementation(projects.services.toolbox.api)
|
||||||
|
|
||||||
|
|||||||
+13
-4
@@ -57,6 +57,7 @@ import io.element.android.libraries.mediaviewer.impl.local.player.rememberExoPla
|
|||||||
import io.element.android.libraries.mediaviewer.impl.local.player.seekToEnsurePlaying
|
import io.element.android.libraries.mediaviewer.impl.local.player.seekToEnsurePlaying
|
||||||
import io.element.android.libraries.mediaviewer.impl.local.player.togglePlay
|
import io.element.android.libraries.mediaviewer.impl.local.player.togglePlay
|
||||||
import io.element.android.libraries.mediaviewer.impl.local.rememberLocalMediaViewState
|
import io.element.android.libraries.mediaviewer.impl.local.rememberLocalMediaViewState
|
||||||
|
import io.element.android.libraries.ui.utils.a11y.isTalkbackActive
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import me.saket.telephoto.zoomable.zoomable
|
import me.saket.telephoto.zoomable.zoomable
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
@@ -162,12 +163,20 @@ private fun ExoPlayerMediaVideoView(
|
|||||||
|
|
||||||
var autoHideController by remember { mutableIntStateOf(0) }
|
var autoHideController by remember { mutableIntStateOf(0) }
|
||||||
|
|
||||||
LaunchedEffect(autoHideController) {
|
val isTalkbackActive = isTalkbackActive()
|
||||||
delay(5.seconds)
|
LaunchedEffect(autoHideController, isTalkbackActive) {
|
||||||
if (exoPlayer.isPlaying) {
|
if (isTalkbackActive) {
|
||||||
|
// Ensure that the controller is always visible when talkback is active
|
||||||
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
||||||
isVisible = false,
|
isVisible = true,
|
||||||
)
|
)
|
||||||
|
} else {
|
||||||
|
delay(5.seconds)
|
||||||
|
if (exoPlayer.isPlaying) {
|
||||||
|
mediaPlayerControllerState = mediaPlayerControllerState.copy(
|
||||||
|
isVisible = false,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user