在android中如何在手机旋转从纵向到横向再回到纵向时保留sip视频通话

问题描述

我有一个使用片段来显示视频通话的活动。目前,我只以纵向模式显示视频,但我想让它更加用户友好,并希望在通话期间,如果用户旋转手机,则通话将以横向模式继续,如果按住手机,则观看屏幕将返回纵向模式。我阅读了屏幕方向活动,现在为活动添加以下配置以在屏幕旋转时停止重新创建它:

android:configChanges="orientation|screenSize|keyboardHidden"

一个片段中,我覆盖了一个 onConfigurationChanged 方法

private View mVideoView;
    private View mCaptureView;
    
    @Override
    public void onViewCreated(View view,Bundle savedInstanceState) {
        Log.i(TAG,"OnViewCreated");
        CallActivity callActivity = getCallActivity();
        if (callActivity != null) {
            callActivity.forceUpdate();
        }
        super.onViewCreated(view,savedInstanceState);
    }

  

    @SuppressLint("SourceLockedOrientationActivity")
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE){
            Log.e("On Config Change","LANDSCAPE");
            getActivity().setRequestedOrientation(
                    ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
        else{
            Log.e("On Config Change","PORTRAIT");
            getActivity().setRequestedOrientation(
                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
    }
    
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.video,container,false);
        final CallActivity callActivity = getCallActivity();

        mVideoView = view.findViewById(R.id.videoSurface);
        mCaptureView = view.findViewById(R.id.videoCaptureSurface);
        callActivity.setVideoWindow(mVideoView);
        callActivity.setPreviewWindow(mCaptureView);
        return view;
    }

这里是片段布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <TextureView
            android:visibility="visible"
            android:layout_height="match_parent"
            android:layout_width="match_parent"
            android:id="@+id/videoSurface" />

    <TextureView
            android:id="@+id/videoCaptureSurface"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentTop="true"
            android:layout_alignParentRight="true" />

因此,当在纵向模式下拿着手机开始通话时,屏幕上会显示视频,但当手机旋转时,只有视频丢失(可以听到通话中的音频)并且开始显示黑屏。就像我在横向模式下统计呼叫一样,它以横向模式显示视频,但在改变方向时我丢失了视频。

有人可以指出我在这里还缺少什么以及如何在屏幕方向改变的情况下保留视频吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)