直播系统代码,强制点开全屏视频时横屏展示

直播系统代码,强制点开全屏视频时横屏展示实现的相关代码

屏幕方向旋转

当系统状态改变,需要重新更新方向时,就会调用

 

1
\frameworks\base\services\core\java\com\android\server\wm\WindowManagerService.java<br>会执行displayContent.updateRotationUnchecked()<br>    @Override<br>    public void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout) {<br>        updateRotationUnchecked(alwaysSendConfiguration, forceRelayout);<br>    }<br>    private void updateRotationUnchecked(boolean alwaysSendConfiguration, boolean forceRelayout) {<br>        ProtoLog.v(WM_DEBUG_ORIENTATION, "updateRotationUnchecked:"<br>                        + " alwaysSendConfiguration=%b forceRelayout=%b",<br>                alwaysSendConfiguration, forceRelayout);<br>        Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "updateRotation");<br>        long origId = Binder.clearCallingIdentity();<br>        try {<br>            synchronized (mGlobalLock) {<br>                boolean layoutNeeded = false;<br>                final int displayCount = mRoot.mChildren.size();<br>                for (int i = 0; i < displayCount; ++i) {<br>                    final DisplayContent displayContent = mRoot.mChildren.get(i);<br>                    Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "updateRotation: display");<br>                    final boolean rotationChanged = displayContent.updateRotationUnchecked();<br>                    Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);<br>\frameworks\base\services\core\java\com\android\server\wm\DisplayContent.java<br>/**<br>     * Update rotation of the display.<br>     *<br>     * @return {@code true} if the rotation has been changed.  In this case YOU MUST CALL<br>     *         {@link #sendNewConfiguration} TO UNFREEZE THE SCREEN.<br>     */<br>    boolean updateRotationUnchecked() {<br>        return mDisplayRotation.updateRotationUnchecked(false /* forceUpdate */);<br>    }

 

强制横屏

 

1
\frameworks\base\services\core\java\com\android\server\wm\DisplayRotation.java<br>修改updateRotationUnchecked(),直接返回<br>    boolean updateRotationUnchecked(boolean forceUpdate) {<br>        if(true){<br>            return true;<br>        }<br>        final int displayId = mDisplayContent.getDisplayId();<br>        if (!forceUpdate) {<br>            if (mDeferredRotationPauseCount > 0) {<br>                // Rotation updates have been paused temporarily. Defer the update until updates<br>                // have been resumed.<br>                ProtoLog.v(WM_DEBUG_ORIENTATION, "Deferring rotation, rotation is paused.");<br>                return false;<br>            }<br>   <br>\frameworks\base\services\core\java\com\android\server\wm\DisplayContent.java

 

修改 getOrientation(),直接返回横屏,无视activity的android:screenOrientation属性

否则可能会出现应用先竖屏再旋转为横屏的现象

 

1
<br>/**<br>     * In the general case, the orientation is computed from the above app windows first. If none of<br>     * the above app windows specify orientation, the orientation is computed from the child window<br>     * container, e.g. {@link ActivityRecord#getOrientation(int)}.<br>     */<br>    @ScreenOrientation<br>    @Override<br>    int getOrientation() {<br>        if(true){<br>            return ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;<br>        }<br>        mLastOrientationSource = null;<br>        if (mIgnoreRotationForApps) {<br>            return SCREEN_ORIENTATION_USER;<br>        }

 

以上就是直播系统代码,强制点开全屏视频时横屏展示实现的相关代码, 更多内容欢迎关注之后的文章

 

posted @   云豹科技-苏凌霄  阅读(296)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示