android8.1系统永久不灭屏的方法

设置Android系统永不休眠灭屏(Android 8.1源码修改)
1、修改:frameworks/base/api/current.txt 文件

diff --git a/ap/frameworks/base/api/current.txt b/ap/frameworks/base/api/current.txt
old mode 100644
new mode 100755
index 25e998c..d4eb2a6
--- a/ap/frameworks/base/api/current.txt
+++ b/ap/frameworks/base/api/current.txt
@@ -34940,6 +34940,7 @@ package android.provider {
     field public static final java.lang.String RADIO_CELL = "cell";
     field public static final java.lang.String RADIO_NFC = "nfc";
     field public static final java.lang.String RADIO_WIFI = "wifi";
+    field public static final java.lang.String SCREEN_STAY_ON_ANYWAY = "screen_stay_on_anyway";
     field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";

2、修改:frameworks/base/api/system-current.txt 文件

diff --git a/ap/frameworks/base/api/system-current.txt b/ap/frameworks/base/api/system-current.txt
old mode 100644
new mode 100755
index 2bc8a92..91b86c7
--- a/ap/frameworks/base/api/system-current.txt
+++ b/ap/frameworks/base/api/system-current.txt
@@ -37994,6 +37994,7 @@ package android.provider {
     field public static final java.lang.String RADIO_CELL = "cell";
     field public static final java.lang.String RADIO_NFC = "nfc";
     field public static final java.lang.String RADIO_WIFI = "wifi";
+    field public static final java.lang.String SCREEN_STAY_ON_ANYWAY = "screen_stay_on_anyway";
     field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
     field public static final java.lang.String THEATER_MODE_ON = "theater_mode_on";

3、修改:frameworks/base/api/test-current.txt文件

diff --git a/ap/frameworks/base/api/test-current.txt b/ap/frameworks/base/api/test-current.txt
old mode 100644
new mode 100755
index bbaf021..34eb6fe
--- a/ap/frameworks/base/api/test-current.txt
+++ b/ap/frameworks/base/api/test-current.txt
@@ -35130,6 +35130,7 @@ package android.provider {
     field public static final java.lang.String RADIO_CELL = "cell";
     field public static final java.lang.String RADIO_NFC = "nfc";
     field public static final java.lang.String RADIO_WIFI = "wifi";
+    field public static final java.lang.String SCREEN_STAY_ON_ANYWAY = "screen_stay_on_anyway";
     field public static final deprecated java.lang.String SHOW_PROCESSES = "show_processes";
     field public static final java.lang.String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
     field public static final java.lang.String TRANSITION_ANIMATION_SCALE = "transition_animation_scale";

4、修改:frameworks/base/core/java/android/provider/Settings.java 文件

diff --git a/ap/frameworks/base/core/java/android/provider/Settings.java b/ap/frameworks/base/core/java/android/provider/Settings.java
old mode 100644
new mode 100755
index 2d54fde..798a8c8
--- a/ap/frameworks/base/core/java/android/provider/Settings.java
+++ b/ap/frameworks/base/core/java/android/provider/Settings.java
@@ -7720,7 +7720,9 @@ public final class Settings {
          * These values can be OR-ed together.
          */
         public static final String STAY_ON_WHILE_PLUGGED_IN = "stay_on_while_plugged_in";
-
+		/* zhaojingrong add for disable screen off */
+        public static final String SCREEN_STAY_ON_ANYWAY = "screen_stay_on_anyway";
+		
         /**
          * When the user has enable the option to have a "bug report" command
          * in the power menu.

5、修改:frameworks/base/packages/SettingsProvider/res/values/defaults.xml 文件

old mode 100644
new mode 100755
index e6a14ec..5638185
--- a/ap/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/ap/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -19,6 +19,7 @@
 <resources>
     <bool name="def_dim_screen">true</bool>
     <integer name="def_screen_off_timeout">60000</integer>
+    <integer name="def_screen_on_anyway">1</integer> <!--zhaojingrong add -->
     <integer name="def_sleep_timeout">-1</integer>
     <bool name="def_airplane_mode_on">false</bool>
     <bool name="def_theater_mode_on">false</bool>

其中def_screen_on_anyway为1时系统永远不灭屏,为0时,系统按时熄屏。
6、修改:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java文件

diff --git a/ap/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/ap/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
old mode 100644
new mode 100755
index 9274f39..1220b77
--- a/ap/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/ap/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2516,6 +2516,9 @@ class DatabaseHelper extends SQLiteOpenHelper {
                     ("1".equals(SystemProperties.get("ro.kernel.qemu")) ||
                         mContext.getResources().getBoolean(R.bool.def_stay_on_while_plugged_in))
                      ? 1 : 0);
+			/* zhaojingrong add for disable screen off start */
+           loadIntegerSetting(stmt, Settings.Global.SCREEN_STAY_ON_ANYWAY, R.integer.def_screen_on_anyway);        
+           /* zhaojingrong add for disable screen off end */
 
             loadIntegerSetting(stmt, Settings.Global.WIFI_SLEEP_POLICY,
                     R.integer.def_wifi_sleep_policy);

7、修改frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java文件

diff --git a/ap/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java b/ap/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
index f320aa2..c545011 100755
--- a/ap/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/ap/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
@@ -442,7 +442,9 @@ public final class PowerManagerService extends SystemService
     // The stay on while plugged in setting.
     // A bitfield of battery conditions under which to make the screen stay on.
     private int mStayOnWhilePluggedInSetting;
-
+	/* zhaojingrong add for disable screen off */
+    private int mScreenStayOnAnyway;
+	
     // True if the device should stay on.
     private boolean mStayOn;
 
@@ -785,6 +787,10 @@ public final class PowerManagerService extends SystemService
         resolver.registerContentObserver(Settings.Global.getUriFor(
                 Settings.Global.STAY_ON_WHILE_PLUGGED_IN),
                 false, mSettingsObserver, UserHandle.USER_ALL);
+		/* zhaojingrong add for disable screen off */
+        resolver.registerContentObserver(Settings.Global.getUriFor(
+                Settings.Global.SCREEN_STAY_ON_ANYWAY),
+                false, mSettingsObserver, UserHandle.USER_ALL);
         resolver.registerContentObserver(Settings.System.getUriFor(
                 Settings.System.SCREEN_BRIGHTNESS),
                 false, mSettingsObserver, UserHandle.USER_ALL);
@@ -908,6 +914,10 @@ public final class PowerManagerService extends SystemService
                 UserHandle.USER_CURRENT);
         mStayOnWhilePluggedInSetting = Settings.Global.getInt(resolver,
                 Settings.Global.STAY_ON_WHILE_PLUGGED_IN, BatteryManager.BATTERY_PLUGGED_AC);
+		/* zhaojingrong add for disable screen off start*/
+        mScreenStayOnAnyway = Settings.Global.getInt(resolver,
+                Settings.Global.SCREEN_STAY_ON_ANYWAY, 0);
+        /* zhaojingrong add for disable screen off end*/
         mTheaterModeEnabled = Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.THEATER_MODE_ON, 0) == 1;
         mAlwaysOnEnabled = mAmbientDisplayConfiguration.alwaysOnEnabled(UserHandle.USER_CURRENT);
@@ -1653,6 +1663,12 @@ public final class PowerManagerService extends SystemService
             // Phase 0: Basic state updates.
             updateIsPoweredLocked(mDirty);
             updateStayOnLocked(mDirty);
+			/* zhaojingrong add for disable screen off start */
+            if(mScreenStayOnAnyway != 0){
+                mStayOn = true;
+                mDirty |= DIRTY_STAY_ON;
+            }
+            /* zhaojingrong add for disable screen off end */
             updateScreenBrightnessBoostLocked(mDirty);
 
             // Phase 1: Update wakefulness.

以上代码在高通android8.1系统上验证是OK的。

发布了93 篇原创文章 · 获赞 10 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/jinron10/article/details/103876610