From 7c99ea394bb49cbcd36fdd260f3d8f6f22cb619d Mon Sep 17 00:00:00 2001 From: acite <1498045907@qq.com> Date: Wed, 1 Oct 2025 02:37:40 +0800 Subject: [PATCH] [feat] Player Logic --- .../view/components/VideoPlayerLandscape.kt | 22 +++++++++++++++++++ .../aether/viewModel/VideoPlayerViewModel.kt | 15 +++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/acitelight/aether/view/components/VideoPlayerLandscape.kt b/app/src/main/java/com/acitelight/aether/view/components/VideoPlayerLandscape.kt index a269c20..c5bd56e 100644 --- a/app/src/main/java/com/acitelight/aether/view/components/VideoPlayerLandscape.kt +++ b/app/src/main/java/com/acitelight/aether/view/components/VideoPlayerLandscape.kt @@ -43,6 +43,7 @@ import androidx.compose.material.icons.filled.Lock import androidx.compose.material.icons.filled.LockOpen import androidx.compose.material.icons.filled.Pause import androidx.compose.material.icons.filled.PlayArrow +import androidx.compose.material.icons.filled.SkipNext import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.Icon @@ -472,6 +473,27 @@ fun VideoPlayerLandscape(videoPlayerViewModel: VideoPlayerViewModel) { ) } + IconButton( + onClick = { + videoPlayerViewModel.viewModelScope.launch { + videoPlayerViewModel.startPlay( + videoPlayerViewModel.videos.getOrNull(videoPlayerViewModel.videos.indexOf( + videoPlayerViewModel.videos.first { + it.id == videoPlayerViewModel.currentId.value + }) + 1) ?: videoPlayerViewModel.videos.first() + ) + } + }, + Modifier.size(42.dp) + ) { + Icon( + imageVector = Icons.Default.SkipNext, + contentDescription = "Next", + tint = Color.White, + modifier = Modifier.size(42.dp) + ) + } + Spacer(Modifier.weight(1f)) IconButton( diff --git a/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt b/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt index e0eb4ad..1922946 100644 --- a/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt +++ b/app/src/main/java/com/acitelight/aether/viewModel/VideoPlayerViewModel.kt @@ -16,6 +16,7 @@ import androidx.lifecycle.viewModelScope import androidx.media3.common.MediaItem import androidx.media3.common.PlaybackException import androidx.media3.common.Player +import androidx.media3.common.Player.STATE_ENDED import androidx.media3.common.Player.STATE_READY import androidx.media3.common.Tracks import androidx.media3.common.text.Cue @@ -268,8 +269,18 @@ class VideoPlayerViewModel @Inject constructor( } override fun onPlaybackStateChanged(playbackState: Int) { - if (playbackState == STATE_READY) { - startPlaying = true + when(playbackState) + { + STATE_READY -> { + startPlaying = true + } + STATE_ENDED -> { + player?.seekTo(0) + player?.pause() + } + else -> { + + } } }