You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Android 15上androidx.media3.ui.PlayerView全屏按钮禁用问题求助

Android 15上androidx.media3.ui.PlayerView全屏按钮禁用问题求助

我来帮你排查这个问题,Android 15对系统全屏模式和UI交互逻辑做了不少调整,这大概率是导致Media3全屏按钮异常的原因。下面是几个可行的解决方向,你可以逐一尝试:

1. 升级Media3到适配Android 15的最新版本

旧版本的Media3库可能没有针对Android 15的新特性做适配,优先尝试更新你的依赖:

// 替换为当前最新的稳定版,比如1.4.0或更高
implementation "androidx.media3:media3-exoplayer:1.4.0"
implementation "androidx.media3:media3-ui:1.4.0"

2. 调整Android 15的窗口全屏配置

Android 15对窗口全屏的控制逻辑更严格,建议使用新的WindowInsetsControllerAPI来管理系统UI,而不是旧的SYSTEM_UI_FLAG。在你的全屏Activity的onCreate方法里添加:

val window = this.window
val insetsController = window.insetsController

// 隐藏状态栏和导航栏
insetsController?.hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
// 设置滑动显示系统栏的行为
insetsController?.systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE

// 可选:允许窗口延伸到刘海屏区域
window.attributes.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES

3. 手动强制启用全屏按钮并调整调用时机

有时候Media3的自动状态判断在Android 15上会出错,你可以尝试手动控制按钮的启用状态,并且确保setFullscreenButtonState(true)是在Player准备就绪后调用:

// 获取控制器实例,强制启用全屏按钮
fullScreenVideoPlayerView.controller?.setFullscreenButtonEnabled(true)

// 在Player准备就绪后设置全屏按钮状态
fullScreenVideoPlayerView.player?.addListener(object : Player.Listener {
    override fun onPlaybackStateChanged(playbackState: Int) {
        super.onPlaybackStateChanged(playbackState)
        if (playbackState == Player.STATE_READY) {
            fullScreenVideoPlayerView.setFullscreenButtonState(true)
        }
    }
})

4. 检查Activity的Manifest配置

确保你的全屏Activity的配置符合要求:

<activity
    android:name=".YourFullscreenVideoActivity"
    android:screenOrientation="landscape"
    android:resizeableActivity="true"
    android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout">
</activity>

另外,你可以打开Logcat,过滤Media3相关的日志,看看有没有关于全屏按钮状态的警告信息,这能帮你更快定位问题。

内容来源于stack exchange

火山引擎 最新活动