mirror of
https://github.com/samsonjs/media.git
synced 2026-04-27 15:07:40 +00:00
[demo-compose] Refactor MediaPlayerScreen() into ComposeDemoApp()
PiperOrigin-RevId: 712495147
This commit is contained in:
parent
871c15946b
commit
d01d10ce0e
1 changed files with 19 additions and 14 deletions
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package androidx.media3.demo.compose
|
package androidx.media3.demo.compose
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import androidx.activity.ComponentActivity
|
import androidx.activity.ComponentActivity
|
||||||
import androidx.activity.compose.setContent
|
import androidx.activity.compose.setContent
|
||||||
|
|
@ -32,6 +33,7 @@ import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.media3.common.MediaItem
|
import androidx.media3.common.MediaItem
|
||||||
import androidx.media3.common.Player
|
import androidx.media3.common.Player
|
||||||
import androidx.media3.demo.compose.buttons.ExtraControls
|
import androidx.media3.demo.compose.buttons.ExtraControls
|
||||||
|
|
@ -44,24 +46,26 @@ import androidx.media3.ui.compose.SURFACE_TYPE_SURFACE_VIEW
|
||||||
|
|
||||||
class MainActivity : ComponentActivity() {
|
class MainActivity : ComponentActivity() {
|
||||||
|
|
||||||
private lateinit var player: Player
|
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
enableEdgeToEdge()
|
enableEdgeToEdge()
|
||||||
player = initializePlayer()
|
setContent { ComposeDemoApp() }
|
||||||
setContent {
|
|
||||||
MediaPlayerScreen(player = player, modifier = Modifier.fillMaxSize().navigationBarsPadding())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun initializePlayer(): Player {
|
@Composable
|
||||||
return ExoPlayer.Builder(this).build().apply {
|
fun ComposeDemoApp(modifier: Modifier = Modifier) {
|
||||||
setMediaItems(videos.map { MediaItem.fromUri(it) })
|
val context = LocalContext.current
|
||||||
|
var player by remember { mutableStateOf<Player?>(null) }
|
||||||
|
player = initializePlayer(context)
|
||||||
|
player?.let { MediaPlayerScreen(player = it, modifier = modifier.fillMaxSize()) }
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun initializePlayer(context: Context): Player =
|
||||||
|
ExoPlayer.Builder(context).build().apply {
|
||||||
|
setMediaItems(videos.map(MediaItem::fromUri))
|
||||||
prepare()
|
prepare()
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun MediaPlayerScreen(player: Player, modifier: Modifier = Modifier) {
|
private fun MediaPlayerScreen(player: Player, modifier: Modifier = Modifier) {
|
||||||
|
|
@ -78,7 +82,8 @@ private fun MediaPlayerScreen(player: Player, modifier: Modifier = Modifier) {
|
||||||
player,
|
player,
|
||||||
Modifier.fillMaxWidth()
|
Modifier.fillMaxWidth()
|
||||||
.align(Alignment.BottomCenter)
|
.align(Alignment.BottomCenter)
|
||||||
.background(Color.Gray.copy(alpha = 0.4f)),
|
.background(Color.Gray.copy(alpha = 0.4f))
|
||||||
|
.navigationBarsPadding(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue