parent
656c9cb4ae
commit
d7e40b049f
@ -1,59 +1,44 @@
|
|||||||
package com.example.veraxapplication.ui.article
|
|
||||||
|
|
||||||
import android.graphics.drawable.Icon
|
import android.view.ViewGroup
|
||||||
import android.media.browse.MediaBrowser
|
|
||||||
import android.net.Uri // pas sur de l'import
|
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.padding
|
|
||||||
import androidx.compose.material3.Icon
|
|
||||||
import androidx.compose.material3.IconButton
|
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.remember
|
|
||||||
import androidx.compose.ui.Alignment
|
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.platform.LocalLifecycleOwner
|
||||||
import androidx.compose.ui.viewinterop.AndroidView
|
import androidx.compose.ui.viewinterop.AndroidView
|
||||||
import com.google.android.exoplayer2.SimpleExoPlayer
|
import com.google.android.exoplayer2.ExoPlayer
|
||||||
|
import com.google.android.exoplayer2.MediaItem
|
||||||
import com.google.android.exoplayer2.ui.PlayerView
|
import com.google.android.exoplayer2.ui.PlayerView
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun VideoPlayer(videoUri : Uri){
|
fun VideoPlayer(videoUrl : String){
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val exoPlayer = remember {
|
val lifecycleOwner = LocalLifecycleOwner.current
|
||||||
SimpleExoPlayer.Builder(context).build().apply {
|
|
||||||
setMediaItem(MediaBrowser.MediaItem.fromUri(videoUri))
|
val player = ExoPlayer.Builder(context).build()
|
||||||
prepare()
|
|
||||||
}
|
val playerView = PlayerView(context).apply {
|
||||||
|
layoutParams = ViewGroup.LayoutParams(
|
||||||
|
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||||
|
ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
|
)
|
||||||
}
|
}
|
||||||
val playbackState by exoPlayer.rememberPlaybackState()
|
|
||||||
val isPlaying = playbackState?.isPlaying ?: false
|
val mediaItem = MediaItem.Builder()
|
||||||
|
.setUri(videoUrl)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
player.setMediaItem(mediaItem)
|
||||||
|
player.prepare()
|
||||||
|
player.play()
|
||||||
|
|
||||||
AndroidView(
|
AndroidView(
|
||||||
factory = { context ->
|
factory = { context -> playerView },
|
||||||
PlayerView(context).apply {
|
modifier = Modifier.fillMaxSize(),
|
||||||
player = exoPlayer
|
update = { view ->
|
||||||
|
view.player = player
|
||||||
}
|
}
|
||||||
},
|
|
||||||
modifier = Modifier.fillMaxSize()
|
|
||||||
)
|
)
|
||||||
|
|
||||||
IconButton(
|
|
||||||
onClick = {
|
|
||||||
if (isPlaying) {
|
|
||||||
exoPlayer.pause()
|
|
||||||
} else {
|
|
||||||
exoPlayer.play()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
modifier = Modifier
|
|
||||||
.padding(16.dp)
|
|
||||||
) {
|
|
||||||
/*Icon(
|
|
||||||
imageVector = if (isPlaying) Icons.Filled.Pause else Icons.Filled.PlayArrow,
|
|
||||||
contentDescription = if (isPlaying) "Pause" else "Play",
|
|
||||||
tint = Color.White,
|
|
||||||
modifier = Modifier.size(48.dp)
|
|
||||||
)*/
|
|
||||||
}
|
|
||||||
}
|
}
|
Loading…
Reference in new issue