Media3 是 Google 推出的新一代媒体库,整合了 ExoPlayer、MediaSession 等组件。
一、基础视频播放器
val exoPlayer = remember {
ExoPlayer.Builder(context).build().apply {
setMediaItem(MediaItem.fromUri(videoUrl))
prepare()
}
}
AndroidView(
factory = { ctx ->
PlayerView(ctx).apply { player = exoPlayer }
}
)
二、自定义控制器
VideoControls(
isPlaying = playerState.isPlaying,
currentPosition = playerState.currentPosition,
duration = playerState.duration,
onPlayPause = { ... },
onSeek = { playerState.seekTo(it) }
)
三、最佳实践
- ✅ 使用 DisposableEffect 释放播放器
- ✅ 处理生命周期
- ✅ 缓存播放器实例
- ✅ 使用 MediaSession
- ✅ 处理音频焦点
总结
- ExoPlayer:媒体播放引擎
- PlayerView:通过 AndroidView 集成
- 自定义控制器:完全自定义 UI
- 全屏/画中画:完整播放体验