Android GMS 开机向导横竖屏切换配置总结
Android GMS 开机向导横竖屏切换配置总结文章目录Android GMS 开机向导横竖屏切换配置总结一、前言二、相关分析总结1、相关属性 ro.setupwizard.rotation_locked2、系统设置可旋转属性 Settings system accelerometer_rotation3、adb调试旋转功能三、其他1、小结2、编译固化只读 ro 属性整机默认显示方向底层硬件 / 显示层1 ro.sf.hwrotation SurfaceFlinger 硬件物理旋转2 ro.primary_display.user_rotation3 ro.config.disable_auto_rotate3、折叠屏扩展属性Android124、各属性优先级层级从高到低一、前言Android Google GMS 源码的开机向导 SetupWizard应用 默认值不会横竖屏旋转的。正常设备是没啥影响的开机后设置可以旋转就可以了但是目前开发的是小的旋转屏要求开机向导也要旋转显示。并且GMS里面的应用目前Google是不开放的。需要如何解决研究发现系统默认的旋转属性对Google开机向导应用是没有作用的。只有修改一个gms关于 SetupWizard 应用的属性就可以设置Google的开机向导也默认可以要旋转。二、相关分析总结1、相关属性 ro.setupwizard.rotation_lockedwrelease/vendor$ grep -nr ro.setupwizard.rotation_locked Binary file partner_gms/apps/SetupWizard/SetupWizard_arm64.apk matches Binary file partner_gms/apps/SetupWizard/SetupWizard_arm.apk matches partner_gms/products/gms_base.mk:68: ro.setupwizard.rotation_lockedtrue \默认为true 表示锁定屏幕。如果需要开机向导应用也横竖屏旋转就需要把这个属性设置成false。同时系统的旋转属性也要设置为可旋转。2、系统设置可旋转属性 Settings system accelerometer_rotationconsole:/ # settings list system | grep rota accelerometer_rotation1 //屏幕旋转1开启0关闭 user_rotation0 //屏幕旋转方向值0-30横屏 console:/ #3、adb调试旋转功能Settings属性设置console:/ # settings put system user_rotation 0 //横屏 console:/ # settings put system user_rotation 3 //竖屏 console:/ # settings put system accelerometer_rotation 1 设置屏幕可旋转 console:/ # settings put system accelerometer_rotation 0 设置屏幕锁定测试发现accelerometer_rotation 0 设置屏幕锁定set user_rotation 屏幕才会旋转这个是比较奇怪的。wm命令控制屏幕# 强制横屏90度 adb shell wm user-rotation lock 0 # 强制反向横屏270度 adb shell wm user-rotation lock 3 //这个值只有0、1、2、3 //获取当前屏幕方向 adb shell wm user-rotation //比如lock 0 //下面两个命令好像没啥用 adb shell wm fixed-to-user-rotation enabled adb shell wm fixed-to-user-rotation disabled上面这个值是用来调试的直接操控wm的显示即使下拉栏显示锁定选择也是会旋转界面。Google GMS 的开机向导例外因为它在应用里面有额外判断控制。三、其他1、小结如果需要Google GMS开机向导默认旋转可以设置属性ro.setupwizard.rotation_lockedfalse并未设置系统默认旋转值ro.config.disable_auto_rotate false 或者 settings system accelerometer_rotation 1 设置屏幕可旋转2、编译固化只读 ro 属性整机默认显示方向底层硬件 / 显示层默认值仅供参考需要自行验证。1ro.sf.hwrotationSurfaceFlinger 硬件物理旋转控制屏幕硬件输出层旋转内核 / LCM 物理屏旋转所有界面全局生效优先级最高取值0 / 90 / 180 / 270场景屏幕硬件模组本身是横屏整机默认输出竖屏画面出厂固化写入 mkPRODUCT_PROPERTY_OVERRIDES ro.sf.hwrotation902ro.primary_display.user_rotation系统开机默认用户锁定方向初始化user_rotation数据库默认值设备首次开机生效# 出厂默认锁定横屏 PRODUCT_PROPERTY_OVERRIDES ro.primary_display.user_rotation13ro.config.disable_auto_rotate全局禁用整机自动旋转功能状态栏自动旋转开关直接隐藏设备永久锁定默认方向true整机无自动旋转功能所有 App 强制固定默认方向false正常提供自动旋转开关3、折叠屏扩展属性Android12Settings.Secure.DEVICE_STATE_ROTATION_LOCK分折叠 / 展开两种形态保存独立自动旋转开关多形态设备专用普通平板手机无需关注4、各属性优先级层级从高到低仅供参考ro.sf.hwrotation硬件物理旋转底层输出全局强制App 自身 ManifestscreenOrientation应用内锁定无视系统设置ro.setupwizard.rotation_locked仅针对开机向导独立拦截WMS 窗口策略黑名单Framework 强制指定包名方向Settings.System.ACCELEROMETER_ROTATIONUSER_ROTATION用户全局旋转开关ro.primary_display.user_rotation开机默认方向