该修复程序已合并到 AOSP 主服务器中。不再需要修补源,只需同步您的存储库。然后,如下所述设置,它应该可以工作def_user_rotation
。frameworks/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_orient
为true
,但我的 Pixel 3a 不需要。