Android系统 开机启动默认旋转主屏幕方向问题 --(一)

平时在定制系统时,有的客户需要系统有不同的显示方向,这时候就需要对系统显示界面进行旋转操作,并希望每次开机启动默认显示旋转后的方向。


Android7.1

修改/device/rockchip/rk3288/system.prop文件下面的参数:
配置属性 ro.sf.hwrotation = 0/90/180/270

如上修改后会发现开机后, 开机画面方向是正确的,进入锁屏界面, 屏幕做了一次旋转操作, 这个时候窗口才真正的达到了我们想要的方向。

有没有觉得有点太粗糙了,体验有点太差, 那就需要进入锁屏前就把方向调整好。
可以在frameworks/base/services/core/java/com/android/server/wm/WindowManagerService.java里面修改WindowManagerService:

boolean updateOrientationFromAppTokensLocked(boolean inTransaction) {
         long ident = Binder.clearCallingIdentity();
         try {
             // int req = getOrientationLocked();
             /*SCREEN_ORIENTATION_LANDSCAPE :横屏显示,SCREEN_ORIENTATION_PORTRAIT : 竖屏显示*/
           	 int req = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; 
             if (req != mLastOrientation) {
                 mLastOrientation = req;

Android9.0

android_7.1之前旋转方向我们可以通过修改build.prop里的ro.sf.hwrotation=0属性实现,但是当应用到android_9.0时此属性设置无效。

查看device/rockchip/common/device.mk下的代码发现:

# ConfigStoreHAL, for HWRotation, set SF_PRIMARY_DISPLAY_ORIENTATION to change it.
PRODUCT_PACKAGES += \
    android.hardware.configstore@1.1-service

方法一:
按照说明使用SF_PRIMARY_DISPLAY_ORIENTATION可以设置HWRotation方向,那么在device/rockchip/common/BoardConfig.mk添加代码:

SF_PRIMARY_DISPLAY_ORIENTATION := 270 //可配置的参数:0,90,180,270

编译后实现旋转效果。

方法二:

  1. 在device/rockchip/common/BoardConfig.mk下,直接修改参数改变方向。
#rotate screen to 0, 90, 180, 270
#0:   ROTATION_NONE
#90:  ROTATION_RIGHT
#180: ROTATION_DOWN
#270: ROTATION_LEFT
TARGET_RECOVERY_DEFAULT_ROTATION ?= ROTATION_LEFT
  1. 在device/rockchip/rk3288/BoardConfig.mk下添加以下参数:
# 屏幕旋转270度
SF_PRIMARY_DISPLAY_ORIENTATION := 270 //可配置的参数:0,90,180,270

编译后实现旋转效果。


Android11

基本与Android9.0的方法差不多,代码稍微有点出入。

  1. 在device/rockchip/common/BoardConfig.mk下,直接修改参数改变方向。
#rotate screen to 0, 90, 180, 270
#0:   ROTATION_NONE      ORIENTATION_0  : 0
#90:  ROTATION_RIGHT     ORIENTATION_90 : 90
#180: ROTATION_DOWN    ORIENTATION_180: 180
#270: ROTATION_LEFT    ORIENTATION_270: 270
# For Recovery Rotation
TARGET_RECOVERY_DEFAULT_ROTATION ?= ROTATION_LEFT
# For Surface Flinger Rotation
SF_PRIMARY_DISPLAY_ORIENTATION ?= 270 //可配置的参数:0,90,180,270

2.在device/rockchip/rk356x/BoardConfig.mk下,修改参数:

SF_PRIMARY_DISPLAY_ORIENTATION := 270 //可配置的参数:0,90,180,270

注:此方法只针对开机动画到系统launch启动后界面的旋转显示;如果要系统整体实现旋转,kernel与uboot开机logo图片(bmp格式)可手动替换成相对应方向;这样整个系统从开机logo到系统界面就可以达到系统旋转的效果。

相关文章链接:
Android系统 开机启动默认旋转主屏幕方向问题 --(二)
Android系统 开机启动默认旋转主屏幕方向问题 --(三)

你可能感兴趣的:(Android相关知识学习,android,RK,屏幕旋转,主副屏,系统显示)