Код: Выделить всё
class MainActivity : ComponentActivity() {
@OptIn(UnstableApi::class)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
val context = LocalContext.current
val exoPlayer = ExoPlayer.Builder(context)
.setRenderersFactory(DefaultRenderersFactory(context))
.build().apply {
playWhenReady = true
}
TeleTheme {
Surface(
modifier = Modifier
.fillMaxSize()
.background(Color.Red),
) {
ExoPlayerView(exoPlayer)
}
}
}
}
< /code>
реализация игрока < /p>
@OptIn(UnstableApi::class)
@Composable
fun ExoPlayerView(exoPlayer: ExoPlayer) {
val mediaSource = remember {
MediaItem.fromUri("https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4")
}
LaunchedEffect(mediaSource) {
exoPlayer.setMediaItem(mediaSource)
exoPlayer.prepare()
}
DisposableEffect(Unit) {
onDispose {
exoPlayer.release()
}
}
Box(modifier = Modifier
.fillMaxSize()
.background(Color.Black), contentAlignment = Alignment.CenterStart) {
AndroidView(
modifier = Modifier.fillMaxSize(0.8f),
factory = { ctx ->
PlayerView(ctx).apply {
player = exoPlayer
useController = true
resizeMode = AspectRatioFrameLayout.RESIZE_MODE_FIT
}
},
)
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... ose-tv-app
Мобильная версия