首页 > 解决方案 > Pixel 3 XL 上的 AOSP Automotive,更改默认屏幕方向

问题描述

我刚刚使用本手册在 Google Pixel 3 XL 上构建并刷新了 AOSP Automotive:https ://source.android.com/devices/automotive/start/pixelxl

它工作正常,但默认以纵向模式启动。不过,对于我的自定义启动器,我需要将它放在风景中。

我试图更改 core/res/res/values/config.xml 中的以下设置

-    <bool name="config_allowAllRotations">false</bool>
+    <bool name="config_allowAllRotations">true</bool>

-    <integer name="config_carDockRotation">-1</integer>
+    <integer name="config_carDockRotation">2</integer>

但是重新刷系统后没有任何效果.img

我还尝试在 init.rc 中应用以下属性而没有任何效果

# screen rotation attempt
setprop ro.sf.hwrotation 0
setprop config.override_forced_orient flase

我在 Android 10 上,构建 QQ3A.200705.002。

任何提示将不胜感激..谢谢!

标签: androidandroid-sourceautomotive

解决方案


该修复程序已合并到 AOSP 主服务器中。不再需要修补源,只需同步您的存储库。然后,如下所述设置,它应该可以工作def_user_rotationframeworks/base/packages/SettingsProvider/res/values/defaults.xml

上一个答案

有一对默认方向的配置设置frameworks/base/packages/SettingsProvider/res/values/defaults.xml

  • def_accelerometer_rotation- 从另一个线程确定默认值accelerometer_rotation(默认设置为 false,所以你应该没问题)
  • def_user_rotation- 应该确定默认值user_rotation(因此您可以将其设置为值 1-4)

问题是……后者似乎不被支持!好的部分是 AOSP 是开源的,您可以修复它(准确地说,修复DatabaseHelper.java)。这是我为您准备的补丁(适用于框架/基础):

--- a/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -846,8 +846,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
             try {
                 stmt = db.compileStatement("INSERT INTO system(name,value)"
                         + " VALUES(?,?);");
-                loadBooleanSetting(stmt, Settings.System.USER_ROTATION,
-                        R.integer.def_user_rotation); // should be zero degrees
+                loadIntegerSetting(stmt, Settings.System.USER_ROTATION,
+                        R.integer.def_user_rotation);
                 db.setTransactionSuccessful();
             } finally {
                 db.endTransaction();
@@ -2265,6 +2265,8 @@ class DatabaseHelper extends SQLiteOpenHelper {
             loadBooleanSetting(stmt, Settings.System.ACCELEROMETER_ROTATION,
                     R.bool.def_accelerometer_rotation);
 
+            loadIntegerSetting(stmt, Settings.System.USER_ROTATION, R.integer.def_user_rotation);
+
             loadDefaultHapticSettings(stmt);
 
             loadBooleanSetting(stmt, Settings.System.NOTIFICATION_LIGHT_PULSE,

在构建和刷写补丁后的系统映像(上面的补丁和defaults.xml更改)后,您可以验证设置是否正确初始化:

  • adb shell settings get system user_rotation(不应该null
  • adb shell settings get system accelerometer_rotation(应该是0

如果它对您的设备有帮助,请告诉我 - 它对我的设备有帮助。您可能还需要设置config.override_forced_orienttrue,但我的 Pixel 3a 不需要。


推荐阅读