第三方应用横屏显示

基于RK3399,Android11

屏幕方向旋转

当系统状态改变,需要重新更新方向时,就会调用
\frameworks\base\services\core\java\com\android\server\wm\WindowManagerService.java
会执行displayContent.updateRotationUnchecked()

    @Overridepublic void updateRotation(boolean alwaysSendConfiguration, boolean forceRelayout) {updateRotationUnchecked(alwaysSendConfiguration, forceRelayout);}private void updateRotationUnchecked(boolean alwaysSendConfiguration, boolean forceRelayout) {ProtoLog.v(WM_DEBUG_ORIENTATION, "updateRotationUnchecked:"+ " alwaysSendConfiguration=%b forceRelayout=%b",alwaysSendConfiguration, forceRelayout);Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "updateRotation");long origId = Binder.clearCallingIdentity();try {synchronized (mGlobalLock) {boolean layoutNeeded = false;final int displayCount = mRoot.mChildren.size();for (int i = 0; i < displayCount; ++i) {final DisplayContent displayContent = mRoot.mChildren.get(i);Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "updateRotation: display");final boolean rotationChanged = displayContent.updateRotationUnchecked();Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);

\frameworks\base\services\core\java\com\android\server\wm\DisplayContent.java

/*** Update rotation of the display.** @return {@code true} if the rotation has been changed.  In this case YOU MUST CALL*         {@link #sendNewConfiguration} TO UNFREEZE THE SCREEN.*/boolean updateRotationUnchecked() {return mDisplayRotation.updateRotationUnchecked(false /* forceUpdate */);}

强制横屏

\frameworks\base\services\core\java\com\android\server\wm\DisplayRotation.java
修改updateRotationUnchecked(),直接返回

    boolean updateRotationUnchecked(boolean forceUpdate) {if(true){return true;}final int displayId = mDisplayContent.getDisplayId();if (!forceUpdate) {if (mDeferredRotationPauseCount > 0) {// Rotation updates have been paused temporarily. Defer the update until updates// have been resumed.ProtoLog.v(WM_DEBUG_ORIENTATION, "Deferring rotation, rotation is paused.");return false;}......

\frameworks\base\services\core\java\com\android\server\wm\DisplayContent.java
修改 getOrientation(),直接返回横屏,无视activity的android:screenOrientation属性
否则可能会出现应用先竖屏再旋转为横屏的现象

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

Android 强制第三方应用横屏显示相关推荐

  1. RK3588-android12强制第三方app横屏显示

    需要修改两处地方: 1.frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java 2.framework ...

  2. android 悬浮窗口禁止横屏显示,悬浮窗强制设置屏幕方向|App开发交流区|研发交流|雨滴科技技术论坛 - Powered by Discuz!...

    最近在做平板上的一个程序,需要配合中通的app来控制扫描与分拣机的转动.然后中通的程序在平板上运行有一个问题, 就是app里设置了强制竖屏,不能跟随系统旋转应用屏幕方向,然后把系统里的屏幕方向写死,虽 ...

  3. Android 强制应用全局横屏或竖屏

    在Application的onCreate方法中添加以下代码,即可 registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks( ...

  4. Android 中屏幕进行横屏显示和竖屏显示的方法

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

  5. Android 11.0第三方app根据包名设置为横屏显示

    11.0由于在定制化平板项目中,默认都是横屏显示的,如果第三方app是竖屏显示显得非常不协调,所以根据客户要求修改 第三方app竖屏的也要修改成为横屏显示,由于没有源码 所以只有在PMS 解析app的 ...

  6. Android 强制设置横屏或竖屏 设置全屏

    Android 强制设置横屏或竖屏 设置全屏 全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 requestWindowFeatur ...

  7. Android屏幕控制一:强制竖屏横屏

      默认情况下,app会随着手机方向的改变进行屏幕切换,手机横向摆放的时候,app屏幕就会切换到横屏,反之切换到竖屏,但是app是一般都是根据竖屏设计的,一旦切换到横屏,布局就会乱掉,所以没有考虑横屏 ...

  8. Android强制设置横屏或竖屏

    全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 requestWindowFeature(Window.FEATURE_NO_TIT ...

  9. android 强制设置横屏 判断是横屏还是竖屏

    判断activity 是横屏还是竖屏  方法 1: //根据设备配置信息 Configuration cf= this.getResources().getConfiguration(); //获取设 ...

最新文章

  1. php导出excel(xls或xlsx)(解决长数字显示问题)
  2. R语言创建自定义颜色(分类变量与颜色形成稳定映射)实战:设置因子变量(分类变量)到可视化颜色的稳定映射
  3. 【三维深度学习】多视角立体视觉模型R-MVSNet
  4. MIDL2020赛事object-CXR(胸部X射线异物检测大赛)
  5. 建立你第一个 Outlook Add-in
  6. rsyslog收集nginx日志配置
  7. DirectX修复工具有什么用
  8. 阿里图标库iconfont下载和在旧有的iconfont中添加新的图标
  9. 配置和google浏览器版本一直的webdriver
  10. 如何存放青龙脚本文件(不用复制)
  11. C#-学生信息管理系统
  12. 注册Google账号
  13. android 添加字幕,手机视频加字幕app 怎样用安卓手机在视频画面加文字字幕
  14. Mysql主从同步报错解决:Fatal error: The slave I/O thread stops because master and slave have equal..
  15. 雷库兹韦尔量子计算机,人物 | 他说,再挺11年,送你长生不老,要不要?
  16. 水浒108将(按出场顺序)
  17. 精准准确的统一社会信用代码正则(js)
  18. 微信小程序如何获取用户绑定手机号
  19. HDU - 6070 Dirt Ratio (二分 + 线段树)
  20. 使用dockers在服务器操作redis,下载安装测试等

热门文章

  1. poweriso 红旗linux,下载PowerISO
  2. 一文看懂电磁波的波段命名
  3. Java 全功能开源办公软件O2OA V4.2698 稳定版发布
  4. 两次被百度k站两次恢复的亲身经历
  5. android程序设计魔方矩阵,【图片】【记录】零基础用c4droid写一个3D魔方软件_c4droid吧_百度贴吧...
  6. javaweb基于SSH开发健康档案管理系统+论文+开题报告 课程设计 大作业源码 毕业设计
  7. 换晶振导致stm32串口数据飞码的解决办法
  8. 数字人民币跨境支付测试不断推进,内地居民未来在港购物也可用
  9. FlexibleButton驱动移植
  10. Python基础总结及数据分析代码记录(一、环境准备及数据结构;二、数据采集与操作)