mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 06:55:41 +00:00
If not displayed, make sure to pause the audio / video
This commit is contained in:
committed by
Benoit Marty
parent
ca5c06f20b
commit
8d6550bfdf
+3
@@ -27,6 +27,7 @@ fun LocalMediaView(
|
|||||||
bottomPaddingInPixels: Int,
|
bottomPaddingInPixels: Int,
|
||||||
onClick: () -> Unit,
|
onClick: () -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
isDisplayed: Boolean = true,
|
||||||
localMediaViewState: LocalMediaViewState = rememberLocalMediaViewState(),
|
localMediaViewState: LocalMediaViewState = rememberLocalMediaViewState(),
|
||||||
mediaInfo: MediaInfo? = localMedia?.info,
|
mediaInfo: MediaInfo? = localMedia?.info,
|
||||||
) {
|
) {
|
||||||
@@ -39,6 +40,7 @@ fun LocalMediaView(
|
|||||||
onClick = onClick,
|
onClick = onClick,
|
||||||
)
|
)
|
||||||
mimeType.isMimeTypeVideo() -> MediaVideoView(
|
mimeType.isMimeTypeVideo() -> MediaVideoView(
|
||||||
|
isDisplayed = isDisplayed,
|
||||||
localMediaViewState = localMediaViewState,
|
localMediaViewState = localMediaViewState,
|
||||||
bottomPaddingInPixels = bottomPaddingInPixels,
|
bottomPaddingInPixels = bottomPaddingInPixels,
|
||||||
localMedia = localMedia,
|
localMedia = localMedia,
|
||||||
@@ -51,6 +53,7 @@ fun LocalMediaView(
|
|||||||
onClick = onClick,
|
onClick = onClick,
|
||||||
)
|
)
|
||||||
mimeType.isMimeTypeAudio() -> MediaAudioView(
|
mimeType.isMimeTypeAudio() -> MediaAudioView(
|
||||||
|
isDisplayed = isDisplayed,
|
||||||
localMediaViewState = localMediaViewState,
|
localMediaViewState = localMediaViewState,
|
||||||
bottomPaddingInPixels = bottomPaddingInPixels,
|
bottomPaddingInPixels = bottomPaddingInPixels,
|
||||||
localMedia = localMedia,
|
localMedia = localMedia,
|
||||||
|
|||||||
+9
@@ -83,9 +83,11 @@ fun MediaAudioView(
|
|||||||
localMedia: LocalMedia?,
|
localMedia: LocalMedia?,
|
||||||
info: MediaInfo?,
|
info: MediaInfo?,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
|
isDisplayed: Boolean = true,
|
||||||
) {
|
) {
|
||||||
val exoPlayer = rememberExoPlayer()
|
val exoPlayer = rememberExoPlayer()
|
||||||
ExoPlayerMediaAudioView(
|
ExoPlayerMediaAudioView(
|
||||||
|
isDisplayed = isDisplayed,
|
||||||
localMediaViewState = localMediaViewState,
|
localMediaViewState = localMediaViewState,
|
||||||
bottomPaddingInPixels = bottomPaddingInPixels,
|
bottomPaddingInPixels = bottomPaddingInPixels,
|
||||||
exoPlayer = exoPlayer,
|
exoPlayer = exoPlayer,
|
||||||
@@ -98,6 +100,7 @@ fun MediaAudioView(
|
|||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
@Composable
|
@Composable
|
||||||
private fun ExoPlayerMediaAudioView(
|
private fun ExoPlayerMediaAudioView(
|
||||||
|
isDisplayed: Boolean,
|
||||||
localMediaViewState: LocalMediaViewState,
|
localMediaViewState: LocalMediaViewState,
|
||||||
bottomPaddingInPixels: Int,
|
bottomPaddingInPixels: Int,
|
||||||
exoPlayer: ExoPlayer,
|
exoPlayer: ExoPlayer,
|
||||||
@@ -176,6 +179,12 @@ private fun ExoPlayerMediaAudioView(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LaunchedEffect(isDisplayed) {
|
||||||
|
// If not displayed, make sure to pause the audio
|
||||||
|
if (!isDisplayed) {
|
||||||
|
exoPlayer.pause()
|
||||||
|
}
|
||||||
|
}
|
||||||
if (localMedia?.uri != null) {
|
if (localMedia?.uri != null) {
|
||||||
LaunchedEffect(localMedia.uri) {
|
LaunchedEffect(localMedia.uri) {
|
||||||
val mediaItem = MediaItem.fromUri(localMedia.uri)
|
val mediaItem = MediaItem.fromUri(localMedia.uri)
|
||||||
|
|||||||
+10
@@ -57,6 +57,7 @@ import kotlin.time.Duration.Companion.seconds
|
|||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
@Composable
|
@Composable
|
||||||
fun MediaVideoView(
|
fun MediaVideoView(
|
||||||
|
isDisplayed: Boolean,
|
||||||
localMediaViewState: LocalMediaViewState,
|
localMediaViewState: LocalMediaViewState,
|
||||||
bottomPaddingInPixels: Int,
|
bottomPaddingInPixels: Int,
|
||||||
localMedia: LocalMedia?,
|
localMedia: LocalMedia?,
|
||||||
@@ -64,6 +65,7 @@ fun MediaVideoView(
|
|||||||
) {
|
) {
|
||||||
val exoPlayer = rememberExoPlayer()
|
val exoPlayer = rememberExoPlayer()
|
||||||
ExoPlayerMediaVideoView(
|
ExoPlayerMediaVideoView(
|
||||||
|
isDisplayed = isDisplayed,
|
||||||
localMediaViewState = localMediaViewState,
|
localMediaViewState = localMediaViewState,
|
||||||
bottomPaddingInPixels = bottomPaddingInPixels,
|
bottomPaddingInPixels = bottomPaddingInPixels,
|
||||||
exoPlayer = exoPlayer,
|
exoPlayer = exoPlayer,
|
||||||
@@ -75,6 +77,7 @@ fun MediaVideoView(
|
|||||||
@SuppressLint("UnsafeOptInUsageError")
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
@Composable
|
@Composable
|
||||||
private fun ExoPlayerMediaVideoView(
|
private fun ExoPlayerMediaVideoView(
|
||||||
|
isDisplayed: Boolean,
|
||||||
localMediaViewState: LocalMediaViewState,
|
localMediaViewState: LocalMediaViewState,
|
||||||
bottomPaddingInPixels: Int,
|
bottomPaddingInPixels: Int,
|
||||||
exoPlayer: ExoPlayer,
|
exoPlayer: ExoPlayer,
|
||||||
@@ -161,6 +164,12 @@ private fun ExoPlayerMediaVideoView(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
LaunchedEffect(isDisplayed) {
|
||||||
|
// If not displayed, make sure to pause the video
|
||||||
|
if (!isDisplayed) {
|
||||||
|
exoPlayer.pause()
|
||||||
|
}
|
||||||
|
}
|
||||||
if (localMedia?.uri != null) {
|
if (localMedia?.uri != null) {
|
||||||
LaunchedEffect(localMedia.uri) {
|
LaunchedEffect(localMedia.uri) {
|
||||||
val mediaItem = MediaItem.fromUri(localMedia.uri)
|
val mediaItem = MediaItem.fromUri(localMedia.uri)
|
||||||
@@ -245,6 +254,7 @@ private fun ExoPlayerMediaVideoView(
|
|||||||
@Composable
|
@Composable
|
||||||
internal fun MediaVideoViewPreview() = ElementPreview {
|
internal fun MediaVideoViewPreview() = ElementPreview {
|
||||||
MediaVideoView(
|
MediaVideoView(
|
||||||
|
isDisplayed = true,
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
bottomPaddingInPixels = 0,
|
bottomPaddingInPixels = 0,
|
||||||
localMediaViewState = rememberLocalMediaViewState(),
|
localMediaViewState = rememberLocalMediaViewState(),
|
||||||
|
|||||||
+3
@@ -135,6 +135,7 @@ fun MediaViewerView(
|
|||||||
state.eventSink(MediaViewerEvents.LoadMedia(dataForPage))
|
state.eventSink(MediaViewerEvents.LoadMedia(dataForPage))
|
||||||
}
|
}
|
||||||
MediaViewerPage(
|
MediaViewerPage(
|
||||||
|
isDisplayed = page == pagerState.settledPage,
|
||||||
showOverlay = showOverlay,
|
showOverlay = showOverlay,
|
||||||
bottomPaddingInPixels = bottomPaddingInPixels,
|
bottomPaddingInPixels = bottomPaddingInPixels,
|
||||||
data = dataForPage,
|
data = dataForPage,
|
||||||
@@ -246,6 +247,7 @@ fun MediaViewerView(
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun MediaViewerPage(
|
private fun MediaViewerPage(
|
||||||
|
isDisplayed: Boolean,
|
||||||
showOverlay: Boolean,
|
showOverlay: Boolean,
|
||||||
bottomPaddingInPixels: Int,
|
bottomPaddingInPixels: Int,
|
||||||
state: MediaViewerState,
|
state: MediaViewerState,
|
||||||
@@ -307,6 +309,7 @@ private fun MediaViewerPage(
|
|||||||
|
|
||||||
LocalMediaView(
|
LocalMediaView(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier.fillMaxSize(),
|
||||||
|
isDisplayed = isDisplayed,
|
||||||
bottomPaddingInPixels = bottomPaddingInPixels,
|
bottomPaddingInPixels = bottomPaddingInPixels,
|
||||||
localMediaViewState = localMediaViewState,
|
localMediaViewState = localMediaViewState,
|
||||||
localMedia = data.downloadedMedia.dataOrNull(),
|
localMedia = data.downloadedMedia.dataOrNull(),
|
||||||
|
|||||||
Reference in New Issue
Block a user