1+ package com.smarttoolfactory.composeimage.demo
2+
3+ import androidx.compose.runtime.Composable
4+ import androidx.compose.runtime.LaunchedEffect
5+ import androidx.compose.runtime.remember
6+ import androidx.compose.ui.Modifier
7+ import androidx.compose.ui.platform.LocalContext
8+ import androidx.compose.ui.viewinterop.AndroidView
9+ import com.google.android.exoplayer2.MediaItem
10+ import com.google.android.exoplayer2.Player
11+ import com.google.android.exoplayer2.SimpleExoPlayer
12+ import com.google.android.exoplayer2.ui.AspectRatioFrameLayout
13+ import com.google.android.exoplayer2.ui.PlayerView
14+
15+ @Composable
16+ fun MyPlayer (modifier : Modifier , uri : String ) {
17+ val context = LocalContext .current
18+ val player = SimpleExoPlayer .Builder (context).build()
19+ val playerView = remember {
20+ PlayerView (context)
21+ }
22+
23+
24+ println (" 🚀 MyPlayer URI $uri , player: $player , playerView: $playerView " )
25+
26+ LaunchedEffect (player, uri) {
27+ playerView.useController = false
28+ playerView.resizeMode = AspectRatioFrameLayout .RESIZE_MODE_FILL
29+ val mediaItem = MediaItem .fromUri(uri)
30+
31+ player.setMediaItem(mediaItem)
32+ playerView.player = player
33+ player.repeatMode = Player .REPEAT_MODE_ONE
34+ player.prepare()
35+ player.playWhenReady = true
36+ }
37+
38+ AndroidView (
39+ modifier = modifier,
40+ factory = {
41+ playerView
42+ }
43+ )
44+ }
0 commit comments