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

Jiaozi Video Player屏幕旋转时自动切换全屏模式实现问询

实现Jiaozi Video Player竖屏切横屏自动全屏

我之前在项目里刚好实现过这个需求,分享给你具体的实现步骤和代码片段,亲测可行:

第一步:配置Activity的Manifest属性

首先要避免横竖屏切换时Activity重启,否则视频会中断重置。在你的视频Activity标签里添加以下配置:

<activity
    android:name=".YourVideoActivity"
    android:configChanges="orientation|screenSize|keyboardHidden"
    android:screenOrientation="sensor"> <!-- 允许屏幕自动旋转 -->
</activity>

第二步:在Activity中处理屏幕方向变化

重写onConfigurationChanged方法,监听屏幕方向切换事件,触发Jiaozi Player的全屏/退出全屏操作:

public class YourVideoActivity extends AppCompatActivity {
    private JZVideoPlayerStandard jzVideoPlayer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);
        
        // 初始化播放器
        jzVideoPlayer = findViewById(R.id.jz_video);
        jzVideoPlayer.setUp("你的视频播放URL", JZVideoPlayerStandard.SCREEN_WINDOW_NORMAL, "视频标题");
        // 可选:设置封面图
        // jzVideoPlayer.thumbImageView.setImageURI(Uri.parse("封面图URL"));
    }

    @Override
    public void onConfigurationChanged(@NonNull Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        
        // 判断当前屏幕方向
        if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            // 横屏时自动进入全屏,先判断是否已经处于全屏状态
            if (!jzVideoPlayer.isFullscreen()) {
                // 注意:不同版本的Jiaozi Player方法名可能有差异,比如部分版本是enterFullScreen()
                jzVideoPlayer.startFullscreen(this, JZVideoPlayerStandard.class, "你的视频播放URL", "视频标题");
            }
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
            // 竖屏时自动退出全屏(可选,根据你的需求调整)
            if (jzVideoPlayer.isFullscreen()) {
                jzVideoPlayer.exitFullscreen();
            }
        }
    }

    // 记得在生命周期方法中释放播放器资源,避免内存泄漏
    @Override
    protected void onPause() {
        super.onPause();
        JZVideoPlayer.releaseAllVideos();
    }

    @Override
    public void onBackPressed() {
        // 处理全屏状态下的返回键逻辑
        if (JZVideoPlayer.backPress()) {
            return;
        }
        super.onBackPressed();
    }
}

一些注意事项

  • 确保你的Jiaozi Video Player是最新版本,不同版本的API可能略有不同,如果startFullscreen方法不存在,可以尝试enterFullScreen()
  • 测试前要开启手机的自动旋转功能,否则不会触发屏幕方向变化事件;
  • 如果你的播放器是自定义的子类(比如继承JZVideoPlayerStandard),只需替换代码中的对应类名即可;
  • 若横屏后想保持全屏锁定,可以在进入全屏后调用jzVideoPlayer.setLocked(true)

内容的提问来源于stack exchange,提问作者Vikash Mishra

火山引擎 最新活动