Android R 修改系统永不休眠并在设置添加选项

本文介绍了如何在Android R系统中修改设置以实现永不休眠,并详细讲解了在系统设置中添加永不休眠选项的步骤,包括修改defaults.xml文件,调整PhoneWindowManager.java和PowerManagerService.java的逻辑,以及在设置-显示-休眠菜单中添加相关选项。

 1,设置系统永不休眠修改

frameworks/base/packages/SettingsProvider/res/values/defaults.xml 

设置默认值为0;

------ frameworks/base/packages/SettingsProvider/res/values/defaults.xml ------
old mode 100644
new mode 100755
index 761d8bcbed..48552ef862
@@ -18,7 +18,7 @@
 -->
 <resources>
     <bool name="def_dim_screen">true</bool>
-    <integer name="def_screen_off_timeout">60000</integer>
+    <integer name="def_screen_off_timeout">0</integer>

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

判断mLockScreenTimeout是否为0,为0就不执行读秒息屏操作。

frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java 
index 23650e6b9e..be522d2425 100755
@@ -5121,7 +5121,12 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                 if (enable) {
                     if (localLOGV) Log.v(TAG, "setting lockscreen timer");
                     mHandler.removeCallbacks(mScreenLockTimeout); // remove any pending requests
-                    mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
+                    //hhb add 20210823
+                    //mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
+                    Log.d("huanghb","mLockScreenTimeout = "+mLockScreenTimeout);
+                    if (mLockScreenTimeout != 0) {
+                        mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
+                    }
                 } else {
                     if (localLOGV) Log.v(TAG, "clearing lockscreen timer");
                     mHandler.removeCallbacks(mScreenLockTimeout);

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

同样是判断默认值是否为0,不为0就正常走息屏流程,mScreenOffTimeoutSetting为0就给系统赋予亮屏属性。


frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java 
old mode 100644
new mode 100755
index af7d91cf7b..5d3e5f18f9
@@ -117,6 +117,7 @@ import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
+import android.util.Log;
 import java.util.Objects;
 
 
@@ -2338,24 +2339,29 @@ public final class PowerManagerService extends SystemService
                     mUserActivitySummary = USER_ACTIVITY_SCREEN_DREAM;
                     nextTimeout = -1;
                 }
+                
+                if (mScreenOffTimeoutSetting != 0) {
+                    if ((mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
+                            && (mWakeLockSummary & WAKE_LOCK_STAY_AWAKE) == 0) {
+                        nextTimeout = mAttentionDetector.updateUserActivity(nextTimeout,
+                                screenDimDuration);
+                    }
 
-                if ((mUserActivitySummary & USER_ACTIVITY_SCREEN_BRIGHT) != 0
-                        && (mWakeLockSummary & WAKE_LOCK_STAY_AWAKE) == 0) {
-                    nextTimeout = mAttentionDetector.updateUserActivity(nextTimeout,
-                            screenDimDuration);
-                }
-
-                if (nextProfileTimeout > 0) {
-                    nextTimeout = Math.min(nextTimeout, nextProfileTimeout);
-                }
+                    if (nextProfileTimeout > 0) {
+                        nextTimeout = Math.min(nextTimeout, nextProfileTimeout);
+                    }
 
-                if (Integer.MAX_VALUE == screenOffTimeout) {
-                    mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
-                    //Slog.d(TAG, "set mUserActivitySummary USER_ACTIVITY_SCREEN_BRIGHT never sleep " + nextTimeout);
-                }
+                    if (Integer.MAX_VALUE == screenOffTimeout) {
+                        mUserActivitySummary = USER_ACTIVITY_SCREEN_BRIGHT;
+                        //Slog.d(TAG, "set mUserActivitySummary USER_ACTIVITY_SCREEN_BRIGHT never sleep " + nextTimeout);
+                    }
 
-                if (mUserActivitySummary != 0 && nextTimeout >= 0) {
-                    scheduleUserInactivityTimeout(nextTimeout);
+                    if (mUserActivitySummary != 0 && nextTimeout >= 0) {
+                        scheduleUserInactivityTimeout(nextTimeout);
+                    }
+                } else {
+                    mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT;
                 }
             } else {
                 mUserActivitySummary = 0;

2,在系统设置添加永不休眠选项

添加永不休眠选项,设置-显示-休眠

packages/apps/Settings/res/values-zh-rCN/arrays.xml

 <item msgid="7489864775127957179">"5分钟"</item>

     <item msgid="2314124409517439288">"10分钟"</item>
     <item msgid="6864027152847611413">"30分钟"</item>
+    <item>"永不休眠"</item>

   </string-array>

   <string-array name="dream_timeout_entries">
     <item msgid="3149294732238283185">"永不"</item>



packages/apps/Settings/res/values/arrays.xml
         <item>10 minutes</item>
         <item>30 minutes</item>
+        <item>never</item>

     </string-array>

     <!-- Do not translate. -->

         <item>600000</item>
         <!-- Do not translate. -->
         <item>1800000</item>
+       <!-- Do not translate. -->
+       <item>0</item>

     </string-array>

默认选中选项为第一个,即是永不休眠选项。

packages/apps/Settings/res/xml/display_settings.xml

         android:title="@string/screen_timeout"
         android:summary="@string/summary_placeholder"
         android:entries="@array/screen_timeout_entries"
-        android:entryValues="@array/screen_timeout_values" />
+        android:entryValues="@array/screen_timeout_values" 
+        android:defaultValue="0"/>

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值