旧版 ExoPlayer 2 集成
viewcompose-exoplayer2-android 使用 StyledPlayerView 托管调用方持有的旧版
com.google.android.exoplayer2.Player。它是冻结兼容模块,不是 Media3 别名。
产物
dependencies {
implementation("com.viewcompose:viewcompose-exoplayer2-android:0.1.0-alpha01")
}
Alpha:ExoPlayerView Q3、配置 Q2、枚举 Q1;API 24+;已停止维护的 SDK 2.19.1。Core 对 API
可见,UI/Lifecycle 仅用于实现。可选产物不进入聚合,不依赖或别名化 Media3;Apache-2.0 记录在
THIRD_PARTY_NOTICES.md。新开发优先使用 Media3。
使用与契约
fun UiTreeBuilder.exoPlayerViewSample(player: Player) {
ExoPlayerView(
player = player,
surfaceType = ExoPlayerSurfaceType.SurfaceView,
configuration = ExoPlayerViewConfiguration(
showBuffering = ExoPlayerShowBuffering.WhenPlaying,
contentDescription = "Legacy episode video",
),
)
}
调用方拥有 Player 的命令、状态和释放。必须提供最近的 LocalLifecycleOwner;挂载始于 ON_START,
跟随 resume/pause,并在 stop、Owner 变化、reset 或 release 时结束。解除挂载后再释放;后台音频
由应用决定。
surfaceType 是构造标识(SurfaceView、TextureView、None)。Surface 不变时替换 Player 会
清除旧输出并复用 View,其他状态可重放。不伪造旧 SDK 不支持的 Media3 控制器动画开关;首帧代际
在清理前失效。
验证与迁移
Media3/旧版可共存,隔离测试拒绝跨命名空间运行时类。2026-08-24,6 个模块测试与 46 个 Demo 测试 通过;1 个 API 31 真机测试在 2.016 秒内通过,替换 Player/Surface、切后台并返回后画面仍可见。 相比没有适配器,结论为 improved;证据仅覆盖一台设备的一份静音本地 H.264/AAC 样片,不对 编解码、特性、性能或功耗作结论。下一步:Maps。
先使用上游迁移指南,再以
Media3PlayerView 替换 ExoPlayerView;ViewCompose 不做转换。完整参考:
viewcompose-exoplayer2-android API。