天天看點

産品百科 |內建 RTC Android 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;
        }
    }      
「視訊雲技術」你最值得關注的音視訊技術公衆号,每周推送來自阿裡雲一線的實踐技術文章,在這裡與音視訊領域一流工程師交流切磋。
産品百科 |內建 RTC Android SDK 後如何實作切換橫豎屏?