问题描述
通过修改BoardConfig.mk中的SF_PRIMARY_DISPLAY_ORIENTATION属性等于90,将画面旋转90度。可是开机进入系统桌面后,系统又强制变成了横屏。
我并没有在hardware或者frameworks上层部分有做任何强制横屏的修改操作。
(我将代码跟另外一份为修改过的SDK对比,frameworks和hardware并没有区别)
主板也并没有用到G-sensor,kernel和BoardConfig.mk的G-sensor相关配置都已经被我们关闭。
我也并未加入过任何第三方的应用,或者其他应用。
代码make installclean编译过,也make clean全部重新编译过。烧录后,都还是进入系统桌面后,系统又强制变成了横屏。
原因分析:
通过串口dumpsys window -a输出结果可以看到:
DisplayRotation
mCurrentAppOrientation=SCREEN_ORIENTATION_UNSPECIFIED
mLastOrientation=-1
mRotation=3 mDeferredRotationPauseCount=0
mLandscapeRotation=ROTATION_90 mSeascapeRotation=ROTATION_270
mPortraitRotation=ROTATION_0 mUpsideDownRotation=ROTATION_180
mSupportAutoRotation=true
WindowOrientationListener
mEnabled=false
mCurrentRotation=ROTATION_270
mSensorType=null
mSensor=null
mRate=2
然后出去掉HDMI后在看:
DisplayRotation
mCurrentAppOrientation=SCREEN_ORIENTATION_UNSPECIFIED
mLastOrientation=-1
mRotation=0 mDeferredRotationPauseCount=0
mLandscapeRotation=ROTATION_90 mSeascapeRotation=ROTATION_270
mPortraitRotation=ROTATION_0 mUpsideDownRotation=ROTATION_180
mSupportAutoRotation=true
WindowOrientationListener
mEnabled=false
mCurrentRotation=ROTATION_0
mSensorType=null
mSensor=null
mRate=2
这里对比可以看出,再接入HDMI时候,画面被强行改为 mRotation=3。变成了横屏。
说明HDMI的旋转被锁死了。
解决方案:
我们只需要修改device\rockchip\rk356x\rk3566_r\rk3566_r.mk下代码:
将PRODUCT_PROPERTY_OVERRIDES += ro.vendor.hdmirotationlock=true
改为PRODUCT_PROPERTY_OVERRIDES += ro.vendor.hdmirotationlock=false
就可以解除HDMI的旋转锁定