android - SimpleExoPlayerView 是否有 Controller 可见性更改事件?

标签 android exoplayer2.x

我正在尝试使用 SimpleExoPlayerView 实现全屏模式。我主要使用 setSystemUiVisibility 来解决这个问题。

在 onCreate 期间,我添加了一个 OnSystemUiVisibilityChange 监听器以同步隐藏播放器控件与操作栏。

    @Override
public void onCreate(Bundle savedInstanceState) {

    View decorView = getWindow().getDecorView();
    decorView.setOnSystemUiVisibilityChangeListener
            (onSystemUiChange());

    hideSystemUI();
}

在 OnSystemUiVisibilityChangeListener 中,我还设置了一个与 simpleExoplayerViews 超时相匹配的超时,以便同时隐藏控件和操作栏。

    @NonNull
private View.OnSystemUiVisibilityChangeListener onSystemUiChange() {
    return new View.OnSystemUiVisibilityChangeListener() {
        @Override
        public void onSystemUiVisibilityChange(int visibility) {
            if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                mSimpleExoPlayerView.showController();
                final Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //sync the hide system ui with 
                        //simpleExoPlayerView's auto hide timeout
                        hideSystemUI();
                    }
                }, mSimpleExoPlayerView.getControllerShowTimeoutMs());

            } else {
                mSimpleExoPlayerView.hideController();
            }
        }
    };
}

private void hideSystemUI() {
    View rootView = findViewById(R.id.root);
    rootView.setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
                    | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
    );
}

除了在一种情况下,这工作得很好。如果您点击屏幕,然后在 SimpleExoPlayerView 控件超时之前再次点击它,SimpleExoPlayerView 将被隐藏,但系统 ui 直到超时才会设置。有没有我可以 Hook 的事件?

我已经尝试为我的根布局设置一个 onClick 和 onTouch 监听器,但这些事件没有被触发,我怀疑 SimpleExoPlayerView 可能吞下了它们?

最佳答案

ExoPlayer 2.10.4 有。

exoplayer PlayerView 有一个方法叫做

public void setControllerVisibilityListener(PlayerControlView.VisibilityListener listener) {
}

关于android - SimpleExoPlayerView 是否有 Controller 可见性更改事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45010082/

相关文章:

java - 如何修复 ExoPlayer 视频卡住 2.9.6

Android后台任务和生命周期

android - Play Integrity本地验证

Android-无法将支持库添加到项目

java - fragment 中的后退在主 Activity 中运行函数

android - 如何从 ExoPlayer Cast 扩展创建 CastPlayer?

android - 我如何为连接到 firebase 中的用户 ID 的新节点生成唯一 ID

android - exoplayer 中的 CacheDataSource 与 SimpleCache?

java - exoplayer 2.11.* 版本在 android 5.0/5.1(Lollipop) 设备中引发渲染器错误

Android Kotlin - 从今天开始如何使用 ExoPlayer SimpleCache