Add never sleep function in msm8909_Setting

In the project, the Android board needs to enter the desktop when it is turned on and never sleep. The project uses Fibocom’s SC806 Android development board and msm8909 platform.

Configure never sleep

diff

Put the diff file in front and you can apply it directly!

diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index 64378d7ba7..3ee1079fb5 100644
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
 + + + b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -18,7 + 18,8 @@
 -->
 <resources>
     <bool name="def_dim_screen">true</bool>
- <integer name="def_screen_off_timeout">60000</integer>
 + <!-- <integer name="def_screen_off_timeout">60000</integer> -->
 + <integer name="def_screen_off_timeout">-1</integer>
     <integer name="def_sleep_timeout">-1</integer>
     <bool name="def_airplane_mode_on">false</bool>
     <bool name="def_theater_mode_on">false</bool>
diff --git a/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java b/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
index 7528a749b6..ff6ca47b87 100644
--- a/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
 + + + b/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
@@ -1830,6 + 1830,7 @@ public final class PowerManagerService extends SystemService
     }
 
     private int getScreenOffTimeoutLocked(int sleepTimeout) {
 + int nosleep;
         int timeout = mScreenOffTimeoutSetting;
         if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
             timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
@@ -1840,6 + 1841,11 @@ public final class PowerManagerService extends SystemService
         if (sleepTimeout >= 0) {
             timeout = Math.min(timeout, sleepTimeout);
         }
 + nosleep = mScreenOffTimeoutSetting;
 + if(nosleep == 0) {
 + nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin;
 + return Math.max(nosleep, mMaximumScreenOffTimeoutFromDeviceAdmin);
 + }
         return Math.max(timeout, mMinimumScreenOffTimeoutConfig);
     }
 
diff --git a/packages/apps/Settings/res/values/arrays.xml b/packages/apps/Settings/res/values/arrays.xml
index c10057b423..f50595f501 100755
--- a/packages/apps/Settings/res/values/arrays.xml
 + + + b/packages/apps/Settings/res/values/arrays.xml
@@ -46,6 + 46,7 @@
 
     <!-- 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>
@@ -57,6 + 58,8 @@
 
     <!-- Do not translate. -->
     <string-array name="screen_timeout_values" translatable="false">
 + <!-- Do not translate. -->
 + <item>0</item>
         <!-- Do not translate. -->
         <item>15000</item>
         <!-- Do not translate. -->

Detailed description

Setting UI

First modify the setting -> display -> sleep menu array and add the Never option

File path: packages/apps/Settings/res/values/arrays.xml

Add the following two lines:

 <item>Never</item>
--------------------------------------------------
<!-- Do not translate. -->
        <item>0</item>

image-20230804110656578

Turn off the screen pause function

File path: frameworks/base/packages/SettingsProvider/res/values/defaults.xml

Modify the value of def_screen_off_timeout to -1

 <!-- <integer name="def_screen_off_timeout">60000</integer> -->
    <integer name="def_screen_off_timeout">-1</integer>

image-20230804111137664

Change the power management scheme

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

Add the following statement in the getScreenOffTimeoutLocked method:

 private int getScreenOffTimeoutLocked(int sleepTimeout) {<!-- -->
        int nosleep; // Add new
        int timeout = mScreenOffTimeoutSetting;
        if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {<!-- -->
            timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
        }
        if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {<!-- -->
            timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);
        }
        if (sleepTimeout >= 0) {<!-- -->
            timeout = Math.min(timeout, sleepTimeout);
        }
        // Start new judgment
        nosleep = mScreenOffTimeoutSetting;
        if(nosleep == 0) {<!-- -->
            nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin;
            return Math.max(nosleep, mMaximumScreenOffTimeoutFromDeviceAdmin);
        }
        //End of new judgment
        return Math.max(timeout, mMinimumScreenOffTimeoutConfig);
    }

    private int getScreenDimDurationLocked(int screenOffTimeout) {<!-- -->
        return Math.min(mMaximumScreenDimDurationConfig,
                (int)(screenOffTimeout * mMaximumScreenDimRatioConfig));
    }

image-20230804111333989

Additional modifications to the Chinese environment

diff

The old rule is to run diff first and then apply directly.

diff --git a/vendor/qcom/proprietary/qrdplus/globalization/multi-language/res-overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml b/vendor/qcom/ proprietary/qrdplus/globalization/multi-language/res-overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml
index 093ff5a..f3457f7 100755
--- a/vendor/qcom/proprietary/qrdplus/globalization/multi-language/res-overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml
 + + + b/vendor/qcom/proprietary/qrdplus/globalization/multi-language/res-overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml
@@ -60,6 + 60,7 @@
         <item>"5 minutes"</item>
         <item>"10 minutes"</item>
         <item>"30 minutes"</item>
 + <item>"Never"</item>
     </string-array>

diff --git a/packages/apps/Settings/res/values-zh-rCN/arrays.xml b/packages/apps/Settings/res/values-zh-rCN/arrays.xml
index 5cfbaa2..04b68e3 100755
--- a/packages/apps/Settings/res/values-zh-rCN/arrays.xml
 + + + b/packages/apps/Settings/res/values-zh-rCN/arrays.xml
@@ -37,6 + 37,7 @@
     <item msgid="7489864775127957179">"5 minutes"</item>
     <item msgid="2314124409517439288">"10 minutes"</item>
     <item msgid="6864027152847611413">"30 minutes"</item>
 + <item >"Never"</item>
   </string-array>
   <string-array name="dream_timeout_entries">
     <item msgid="3149294732238283185">"Never"</item>
Detailed description
Small modifications to the default environment modification plan

Modify the path: frameworks/base/packages/SettingsProvider/res/values/defaults.xml

Change the value of def_screen_off_timeout to 0.

Note: It is found that at -1, it will never sleep in the Chinese environment. If you select 15s in sleep in time, it will not sleep.

diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
old mode 100644
new mode 100755
index 61e38a3..0e497ab
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
 + + + b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -18,7 + 18,7 @@
 -->
 <resources>
     <bool name="def_dim_screen">true</bool>
- <integer name="def_screen_off_timeout">-1</integer>
 + <integer name="def_screen_off_timeout">0</integer>
     <integer name="def_sleep_timeout">-1</integer>
     <bool name="def_airplane_mode_on">false</bool>
     <bool name="def_theater_mode_on">false</bool>
Add “Never” in settings

Modify path:

vendor/qcom/proprietary/qrdplus/globalization/multi-language/res-overlay/packages/apps/Settings/res/values-zh-rCN/arrays.xml

Add “never” option

 <!-- Display settings. The delay in inactivity before the screen is turned off. These are shown in a list dialog. -->
    <add-resource type="array" name="screen_timeout_entries"/>
    <string-array name="screen_timeout_entries">
        <item>"Never"</item> // Add a new line
        <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>

image-20230805062311684

Modify the path: packages/apps/Settings/res/values-zh-rCN/arrays.xml

Add “never” option

 <string-array name="screen_timeout_entries">
    <item>"Never"</item>
    <item msgid="3342301044271143016">"15 seconds"</item>
    <item msgid="8881760709354815449">"30 seconds"</item>
    <item msgid="7589406073232279088">"1 minute"</item>
    <item msgid="7001195990902244174">"2 minutes"</item>
    <item msgid="7489864775127957179">"5 minutes"</item>
    <item msgid="2314124409517439288">"10 minutes"</item>
    <item msgid="6864027152847611413">"30 minutes"</item>
  </string-array>

image-20230805062341991

msm8909 android7 verification passed!