产品百科 |集成 RTC Android SDK 后如何实现切换横竖屏?

简介: 当您成功集成 SDK,并想实现移动端切换横竖屏进行实时音视频通信。您可以阅读本文,了解实现本地切换横竖屏的代码方法,帮助您更好的体验阿里云音视频通信服务。

音视频通信 RTC(Real-Time Communication)是阿里云覆盖全球的实时音视频开发平台,依托核心音视频编解码、信道传输、网络调度技术,提供高可用、高品质、超低延时的音视频通信服务,让用户快速搭建多端实时应用,适用于在线教育、视频会议、互动娱乐、音视频社交等场景。


产品链接:https://www.aliyun.com/product/rtc


当您成功集成 SDK,并想实现移动端切换横竖屏进行实时音视频通信。您可以阅读本文,了解实现本地切换横竖屏的代码方法,帮助您更好的体验阿里云音视频通信服务。

横竖屏模式切换

正常情况下竖屏模式推流分辨率宽 <高,例如:480*640;横屏模式推流分辨率宽> 高,例如:640*480。

调用 setDeviceOrientationMode 方法,进行切换横竖屏:

//接口方法
public abstract void setDeviceOrientationMode(AliRtcEngine.AliRtcOrientationMode mode);
//示例方法
mAliRtcEngine.setDeviceOrientationMode(AliRtcOrientationModePortrait);
参数 类型 描述
mode AliRtcOrientationMode 设备方向。取值:
  • AliRtcOrientationModePortrait(默认值):固定竖屏模式。
  • AliRtcOrientationModeLandscapeLeft:固定左横屏模式。
  • AliRtcOrientationModeLandscapeRight:固定右横屏模式。
  • AliRtcOrientationModeAuto:自适应模式。

说明

  • 当应用切换横竖屏时,调用此接口进行设备方向切换,摄像头采集会随机进行切换。
  • 竖屏模式时不需要调用此接口。
  • 1.17 之前版本仅支持固定竖屏模横式,即只要当前未打开摄像头采集(未开启预览并且未开始视频推流),设置可生效。打开摄像头后再调用该接口不会生效,不支持动态横竖屏切换。

如果您的手机不支持自适应模式,而您想要设置自适应模式,您需要监听旋转的方向,然后根据角度设置当前的横竖屏。具体操作如下:

  1. 设置自适应模式。
//设置横屏竖屏自适应模式。
 mAliRtcEngine.setDeviceOrientationMode(AliRtcOrientationModeAuto);
 setRequestedOrientation(SCREEN_ORIENTATION_UNSPECIFIED);
  1. 设置 setRequestedOrientation 监听旋转角度。
/**
  * 监听旋转角度
  */
private OrientationEventListener mOrientationEventListener;
    @Override
    protected void onResume() {
        if (null==mOrientationEventListener) {
            mOrientationEventListener = new OrientationEventListener(this) {
                @Override
                public void onOrientationChanged(int orientation) {
                    if (orientation == OrientationEventListener.ORIENTATION_UNKNOWN) {
                        return;  //手机平放时,检测不到有效的角度。
                    }
                    //备注:如果您的应用有固定横竖屏模式和自适应模式切换。请添加判断语句,只有自适应模式才根据角度设置横竖屏方向。
                    //只检测是否有四个角度的改变,设置自适应模式后,只需要修改setRequestedOrientation即可。
                    if (orientation > 350 || orientation < 10) { //0度,竖直。
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    } else if (orientation > 80 && orientation < 100) { //90度,右横屏。
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
                    } else if (orientation > 170 && orientation < 190) { //180度,倒立。
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    } else if (orientation > 260 && orientation < 280) { //270度,左横屏。
                        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    } else {
                        return;
                    }
                }
            };
            mOrientationEventListener.enable();
        }
    }
    @Override
    protected void onPause() {
        super.onPause();
        //停止监听。
        if (null != mOrientationEventListener) {
            mOrientationEventListener.disable();
            mOrientationEventListener = null;
        }
    }


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

image.png

相关文章
|
7月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
757 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
874 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
程序员 开发工具 Android开发
Android|使用阿里云推流 SDK 实现双路推流不同画面
本文记录了一种使用没有原生支持多路推流的阿里云推流 Android SDK,实现同时推送两路不同画面的流的方法。
383 7
|
Java Linux API
Android SDK
【10月更文挑战第21天】
489 1
|
JavaScript Java Maven
云效产品使用常见问题之android sdk 构建出aar后,上传到私有maven仓库失败如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
安全 开发工具 Android开发
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
几个Flutter常见诊断错误与解决Android toolchain - develop for Android devices X Unable to locate Android SDK
5032 0
|
JavaScript 前端开发 Java
[Android][Framework]系统jar包,sdk的制作及引用
[Android][Framework]系统jar包,sdk的制作及引用
558 0
|
开发工具 Android开发
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
1560 4
解决Android运行出现NDK at /Library/Android/sdk/ndk-bundle did not have a source.properties file
|
Dart 开发工具 Android开发
Android Studio导入Flutter项目提示Dart SDK is not configured
Android Studio导入Flutter项目提示Dart SDK is not configured
2087 4
|
开发工具 Android开发
Flutter: Android SDK not found at this location,Android Studio not found at xxx
Flutter: Android SDK not found at this location,Android Studio not found at xxx
836 2

热门文章

最新文章