[RK3328][Android10.0]Orientation:应用强制横屏显示

针对RK3328平台上Android 10.0系统无内置重力传感器导致部分App显示问题,本文提供了两种解决方案:1) 居中竖屏显示,通过修改build.prop添加属性设置并调整代码实现;2) 全屏显示,通过修改DisplayContent.java文件强制设置为横屏。详细步骤和代码差异已给出。
摘要由CSDN通过智能技术生成

测试平台

Platform: RK3328
OS: Android 10.0

现象

机器没有内置重力传感器,所以部分强制竖屏的App(例如360)在上面显示有问题,所以我们强制所有App都横屏显示。

解决方案

以抖音为例,修改方法及效果如下所示

1. 强制横屏,居中竖屏显示

屏幕保持横屏,app竖屏居中如图所示
在这里插入图片描述
修改方案:

1.build.prop添加属性设置
persist.sys.forced_orient=2
ro.target.product=box

2.代码强制
diff --git a/frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java b/frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java
index f2879ce..5a9c1ba 100644
--- a/frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/frameworks/base/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -245,10 +245,12 @@ public class DisplayRotation {
void configure(int width, int height, int shortSizeDp, int longSizeDp) {
			      ...
 				  ...
				  ...
                 // $ adb shell wm size reset
                 && !"true".equals(SystemProperties.get("config.override_forced_orient"));
 
-         if("2".equals(SystemProperties.get("persist.sys.forced_orient","0"))
+        if("2".equals(SystemProperties.get("persist.sys.forced_orient","0"))
             &&"box".equals(SystemProperties.get("ro.target.product","unknow"))){
                mDefaultFixedToUserRotation = true;
         }
+        mDefaultFixedToUserRotation = true;
+
     }

2. 强制横屏,全屏显示

屏幕保持横屏,app全屏如图所示
在这里插入图片描述
在这里插入图片描述
修改方案:

diff --git a/frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java b/frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java
index cb38bac..81e345d 100644
--- a/frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/frameworks/base/services/core/java/com/android/server/wm/DisplayContent.java
@@ -27,6 +27,7 @@ import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
 import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_USER;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
 import static android.content.res.Configuration.ORIENTATION_LANDSCAPE;
 import static android.content.res.Configuration.ORIENTATION_PORTRAIT;
 import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
@@ -1323,7 +1324,8 @@ class DisplayContent extends WindowContainer<DisplayContent.DisplayChildWindowCo
 
 
     private boolean updateOrientationFromAppTokens(boolean forceUpdate) {
-        final int req = getOrientation();
+        int req = getOrientation();
+        req = SCREEN_ORIENTATION_LANDSCAPE;
         if (req != mLastOrientation || forceUpdate) {
             mLastOrientation = req;
             mDisplayRotation.setCurrentOrientation(req);

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值