Android永不休眠

 packages/apps/Settings/res/values/arrays.xml


<!-- Display settings.  The delay in inactivity before the screen is turned off. These are shown in a list dialog. -->
<string-array name="screen_timeout_entries">
    <item>Never</item>                                          <!-- 加上这一行 -->
    <item>15 seconds</item>
    <item>30 seconds</item>
    <item>1 minute</item>
    <item>2 minutes</item>
    <item>5 minutes</item>
    <item>10 minutes</item>
    <item>30 minutes</item>
</string-array>
 
<!-- Do not translate. -->
<string-array name="screen_timeout_values" translatable="false">
    <!-- Do not translate. -->
    <item>-1</item>                                             <!-- 加上这一行 -->                                                   
    <!-- Do not translate. -->
    <item>15000</item>
    <!-- Do not translate. -->
    <item>30000</item>
    <!-- Do not translate. -->
    <item>60000</item>
    <!-- Do not translate. -->
    <item>120000</item>
    <!-- Do not translate. -->
    <item>300000</item>
    <!-- Do not translate. -->
    <item>600000</item>
    <!-- Do not translate. -->
    <item>1800000</item>
</string-array>

frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java源码

 // True if the battery level is currently considered low.
     private boolean mBatteryLevelLow;
  
+    // True if never sleep.
+    private boolean mNeverSleep = true;
+
     private final ArrayList<PowerManagerInternal.LowPowerModeListener> mLowPowerModeListeners
             = new ArrayList<PowerManagerInternal.LowPowerModeListener>();
  
@@ -1535,6 +1538,13 @@ public final class PowerManagerService extends SystemService
  
     private int getScreenOffTimeoutLocked(int sleepTimeout) {
         int timeout = mScreenOffTimeoutSetting;
+         
+        if (timeout < 0) {
+            mNeverSleep = true;
+        } else {
+            mNeverSleep = false;
+        }
+
         if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
             timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
         }
@@ -1612,6 +1622,7 @@ public final class PowerManagerService extends SystemService
     private boolean isBeingKeptAwakeLocked() {
         return mStayOn
                 || mProximityPositive
+                || mNeverSleep
                 || (mWakeLockSummary & WAKE_LOCK_STAY_AWAKE) != 0
                 || (mUserActivitySummary & (USER_ACTIVITY_SCREEN_BRIGHT
                         | USER_ACTIVITY_SCREEN_DIM)) != 0;
@@ -1889,6 +1900,7 @@ public final class PowerManagerService extends SystemService
  
         if ((mWakeLockSummary & WAKE_LOCK_SCREEN_BRIGHT) != 0
                 || (mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
+                 || mNeverSleep
                 || !mBootCompleted) {
             return DisplayPowerRequest.POLICY_BRIGHT;
         }
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
-->
 <resources>
     <bool name="def_dim_screen">true</bool>
-    <integer name="def_screen_off_timeout">2147483647</integer>
+    <integer name="def_screen_off_timeout">-1</integer>
     <integer name="def_sleep_timeout">-1</integer>
     <bool name="def_airplane_mode_on">false</bool>
     <!-- Comma-separated list of bluetooth, wifi, and cell. -->


猜你喜欢

转载自blog.csdn.net/ldinvicible/article/details/80266571
今日推荐