[feat] Player Logic

This commit is contained in:
acite
2025-10-01 02:37:40 +08:00
parent 614a0d591d
commit 7c99ea394b
2 changed files with 35 additions and 2 deletions

View File

@@ -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(

View File

@@ -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 -> {
}
}
}