[a11y] Ensure that video overlay with controls is never hidden when screen reader is enabled.
This commit is contained in:
parent
20c55bdf4f
commit
d002597c0d
2 changed files with 14 additions and 4 deletions
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue