TRTC 9.5 之前版本解决小众平板(蓝莓、希沃)角度问题

2022-08-16 11:18:32 浏览数 (1)

背景:教育类客户反馈学生使用市面上一些小众 Android 平板设备出现上课时摄像头角度偏移 90 度的问题

现象截图:

问题设备:蓝莓智学(型号:X-01)、希沃白板(型号:TC02A 、DT15PA)

问题原因:因硬件厂商未对系统 Camera1 做适配,TRTC 9.5 之前版本都是用的 Camera1 ,所以产生摄像头角度兼容问题(目前 TRTC 9.6 之后的重构版本已经支持 Camera2 ,可以升级到最新版解决此问题。如果短时间无法升级到最新版,可以参考以下解决方案)

解决方案:判断 Android WindowManager 的 Display 的角度来解决,经测试发现,这些问题设备 Display 角度和常规设备是不同的,可以根据此条件来做角度适配,此条件可以对这些问题设备都是通用的。

注意:此方案只能兼容 Activity 为横屏状态下的情况(以下兼容逻辑是针对横屏分辨率做的矫正,竖屏分辨率需要调整矫正角度) 兼容逻辑如下(进房前设置):

代码语言:javascript复制
WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
if(wm != null){
    Display display = wm.getDefaultDisplay();
    // rotation:
    // 0(Surface.ROTATION_0---竖屏正向)
    // 1(Surface.ROTATION_90---横屏正向)
    // 2(Surface.ROTATION_180---竖屏反向)
    // 3(Surface.ROTATION_270---横屏反向)
    int rotation = display.getRotation();
    if (Surface.ROTATION_0 == rotation) {
        // 定制机设备横屏下角度
        mTRTCCloud.setGSensorMode(TRTCCloudDef.TRTC_GSENSOR_MODE_DISABLE);         // 关闭重力感应
        TRTCCloudDef.TRTCRenderParams renderParams = new TRTCCloudDef.TRTCRenderParams();
        renderParams.rotation = TRTCCloudDef.TRTC_VIDEO_ROTATION_90;
        mTRTCCloud.setLocalRenderParams(renderParams);                             // 矫正本地旋转角度
        mTRTCCloud.setVideoEncoderRotation(TRTCCloudDef.TRTC_VIDEO_ROTATION_180);  // 矫正远端旋转角度
    } else if (Surface.ROTATION_90 == rotation) {
        // 常规设备横屏下角度,不做处理
    }
}

0 人点赞