Android7.1 Settings加入永不休眠选项

前言

   做车机的公司没有系统应用工程师,只要涉及到系统的所有问题,全部由系统工程师解决,测试提出需要在Settings中加入永不休眠选项,下面是具体实现。

实现

zhoujy@TP:~/data/android/sc826_cn_01_00_a620/msm_8953_git$ git show 19cfd7ff7d73f1835def9eb3f7d97db524f2081c
commit 19cfd7ff7d73f1835def9eb3f7d97db524f2081c
Author: zhoujy <zhou764219923@qq.com>
Date:   Tue Oct 13 09:38:06 2020 +0800

    Settings添加永不休眠

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 7528a74..442d4ba 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 = 0; // add never srceen off
         int timeout = mScreenOffTimeoutSetting;
         if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
             timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
@@ -1840,6 +1841,13 @@ public final class PowerManagerService extends SystemService
         if (sleepTimeout >= 0) {
             timeout = Math.min(timeout, sleepTimeout);
         }
+       //add never srceen off begin
+        nosleep = mScreenOffTimeoutSetting;  
+        if(nosleep  == 0){  
+            nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin ;  
+            return Math.max(nosleep, mMaximumScreenOffTimeoutFromDeviceAdmin);  
+        }
+        //add never srceen off end
         return Math.max(timeout, mMinimumScreenOffTimeoutConfig);
     }
 
diff --git a/packages/apps/Settings/res/values-es-rUS/arrays.xml b/packages/apps/Settings/res/values-es-rUS/arrays.xml
index 7d12d4a..933f883 100644
--- a/packages/apps/Settings/res/values-es-rUS/arrays.xml
+++ b/packages/apps/Settings/res/values-es-rUS/arrays.xml
@@ -37,6 +37,17 @@
     <item msgid="7489864775127957179">"5 minutos"</item>
     <item msgid="2314124409517439288">"10 minutos"</item>
     <item msgid="6864027152847611413">"30 minutos"</item>
+    <item msgid="6988987755232445534">"Nunca"</item>
+  </string-array>
+  <string-array name="screen_timeout_entries2">
+    <item msgid="3342301044271143016">"15 segundos"</item>
+    <item msgid="8881760709354815449">"30 segundos"</item>
+    <item msgid="7589406073232279088">"1 minuto"</item>
+    <item msgid="7001195990902244174">"2 minutos"</item>
+    <item msgid="7489864775127957179">"5 minutos"</item>
+    <item msgid="2314124409517439288">"10 minutos"</item>
+    <item msgid="6864027152847611413">"30 minutos"</item>
+    <item msgid="6988987755232445534">"Nunca"</item>
   </string-array>
   <string-array name="dream_timeout_entries">
     <item msgid="3149294732238283185">"Nunca"</item>
diff --git a/packages/apps/Settings/res/values-zh-rCN/arrays.xml b/packages/apps/Settings/res/values-zh-rCN/arrays.xml
index 5cfbaa2..ec9033d 100755
--- a/packages/apps/Settings/res/values-zh-rCN/arrays.xml
+++ b/packages/apps/Settings/res/values-zh-rCN/arrays.xml
@@ -37,6 +37,17 @@
     <item msgid="7489864775127957179">"5分钟"</item>
     <item msgid="2314124409517439288">"10分钟"</item>
     <item msgid="6864027152847611413">"30分钟"</item>
+    <item msgid="6988987755232445534">"永不休眠"</item>
+  </string-array>
+  <string-array name="screen_timeout_entries2">
+    <item msgid="3342301044271143016">"15秒"</item>
+    <item msgid="8881760709354815449">"30秒"</item>
+    <item msgid="7589406073232279088">"1分钟"</item>
+    <item msgid="7001195990902244174">"2分钟"</item>
+    <item msgid="7489864775127957179">"5分钟"</item>
+    <item msgid="2314124409517439288">"10分钟"</item>
+    <item msgid="6864027152847611413">"30分钟"</item>
+    <item msgid="6988987755232445534">"永不休眠"</item>
   </string-array>
   <string-array name="dream_timeout_entries">
     <item msgid="3149294732238283185">"永不"</item>
diff --git a/packages/apps/Settings/res/values-zh-rHK/arrays.xml b/packages/apps/Settings/res/values-zh-rHK/arrays.xml
index b3d1d5c..b248a04 100755
--- a/packages/apps/Settings/res/values-zh-rHK/arrays.xml
+++ b/packages/apps/Settings/res/values-zh-rHK/arrays.xml
@@ -37,6 +37,17 @@
     <item msgid="7489864775127957179">"5 分鐘"</item>
     <item msgid="2314124409517439288">"10 分鐘"</item>
     <item msgid="6864027152847611413">"30 分鐘"</item>
+    <item msgid="6988987755232445534">"永不休眠"</item>        
+  </string-array>
+   <string-array name="screen_timeout_entries2">
+    <item msgid="3342301044271143016">"15 秒"</item>
+    <item msgid="8881760709354815449">"30 秒"</item>
+    <item msgid="7589406073232279088">"1 分鐘"</item>
+    <item msgid="7001195990902244174">"2 分鐘"</item>
+    <item msgid="7489864775127957179">"5 分鐘"</item>
+    <item msgid="2314124409517439288">"10 分鐘"</item>
+    <item msgid="6864027152847611413">"30 分鐘"</item>
+    <item msgid="6988987755232445534">"永不休眠"</item>
   </string-array>
   <string-array name="dream_timeout_entries">
     <item msgid="3149294732238283185">"永不"</item>
diff --git a/packages/apps/Settings/res/values-zh-rTW/arrays.xml b/packages/apps/Settings/res/values-zh-rTW/arrays.xml
index 019880f..cb46f1c 100755
--- a/packages/apps/Settings/res/values-zh-rTW/arrays.xml
+++ b/packages/apps/Settings/res/values-zh-rTW/arrays.xml
@@ -37,6 +37,17 @@
     <item msgid="7489864775127957179">"5 分鐘"</item>
     <item msgid="2314124409517439288">"10 分鐘"</item>
     <item msgid="6864027152847611413">"30 分鐘"</item>
+    <item msgid="6988987755232445534">"永不休眠"</item>
+  </string-array>
+  <string-array name="screen_timeout_entries2">
+    <item msgid="3342301044271143016">"15 秒"</item>
+    <item msgid="8881760709354815449">"30 秒"</item>
+    <item msgid="7589406073232279088">"1 分鐘"</item>
+    <item msgid="7001195990902244174">"2 分鐘"</item>
+    <item msgid="7489864775127957179">"5 分鐘"</item>
+    <item msgid="2314124409517439288">"10 分鐘"</item>
+    <item msgid="6864027152847611413">"30 分鐘"</item>
+    <item msgid="6988987755232445534">"永不休眠"</item>
   </string-array>
   <string-array name="dream_timeout_entries">
     <item msgid="3149294732238283185">"永不"</item>
diff --git a/packages/apps/Settings/res/values/arrays.xml b/packages/apps/Settings/res/values/arrays.xml
index c10057b..4d74daa 100755
--- a/packages/apps/Settings/res/values/arrays.xml
+++ b/packages/apps/Settings/res/values/arrays.xml
@@ -53,6 +53,17 @@
         <item>5 minutes</item>
         <item>10 minutes</item>
         <item>30 minutes</item>
+       <item>never</item>
+    </string-array>
+    <string-array name="screen_timeout_entries2">
+        <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>
+        <item>never</item>
     </string-array>
 
     <!-- Do not translate. -->
@@ -71,6 +82,7 @@
         <item>600000</item>
         <!-- Do not translate. -->
         <item>1800000</item>
+       <item>0</item>
     </string-array>
 
     <!-- Display settings.  The delay in inactivity before the dream is shown. These are shown in a list dialog. -->
diff --git a/packages/apps/Settings/res/xml/display_settings.xml b/packages/apps/Settings/res/xml/display_settings.xml
index e3e7074..bbace47 100644
--- a/packages/apps/Settings/res/xml/display_settings.xml
+++ b/packages/apps/Settings/res/xml/display_settings.xml
@@ -69,7 +69,7 @@
                 android:key="screen_timeout"
                 android:title="@string/screen_timeout"
                 android:summary="@string/screen_timeout_summary"
-                android:entries="@array/screen_timeout_entries"
+                android:entries="@array/screen_timeout_entries2"
                 android:entryValues="@array/screen_timeout_values" />
 
         <SwitchPreference
diff --git a/packages/apps/Settings/src/com/android/settings/DisplaySettings.java b/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
index aae5ff6..c408859 100644
--- a/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
+++ b/packages/apps/Settings/src/com/android/settings/DisplaySettings.java
@@ -365,25 +365,45 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
     private void updateTimeoutPreferenceDescription(long currentTimeout) {
         TimeoutListPreference preference = mScreenTimeoutPreference;
         String summary;
+       //add never srceen off begin
+        final CharSequence[] entries = preference.getEntries();
+        final CharSequence[] values = preference.getEntryValues();
+        //add never srceen off end
         if (preference.isDisabledByAdmin()) {
             summary = getString(R.string.disabled_by_policy_title);
         } else if (currentTimeout < 0) {
             // Unsupported value
-            summary = "";
+            //summary = "";
+           // add never srceen off begin
+            if (entries != null || entries.length != 0){
+                summary = (entries[entries.length-1]).toString();
+            }else{
+                summary = "";
+            }
+           // add never srceen off end
         } else {
-            final CharSequence[] entries = preference.getEntries();
-            final CharSequence[] values = preference.getEntryValues();
+           // final CharSequence[] entries = preference.getEntries();
+           // final CharSequence[] values = preference.getEntryValues();
             if (entries == null || entries.length == 0) {
                 summary = "";
             } else {
                 int best = 0;
                 for (int i = 0; i < values.length; i++) {
                     long timeout = Long.parseLong(values[i].toString());
-                    if (currentTimeout >= timeout) {
+                   Log.e(TAG,"zjy---timeout:"+timeout+",currentTimeout:"+currentTimeout+",entries["+i+"]"+"="+entries[i]);
+                    if (currentTimeout == timeout) {
                         best = i;
                     }
                 }
-                summary = getString(R.string.screen_timeout_summary, entries[best]);
+               // summary = getString(R.string.screen_timeout_summary, entries[best]);
+               ///M: to prevent index out of bounds @{
+               if (entries.length != 0) {
+                       summary = preference.getContext().getString(
+                               R.string.screen_timeout_summary, entries[best]);
+                } else {
+                       summary = "";
+                }
+               ///M: @}
             }
         }
         preference.setSummary(summary);
@@ -414,7 +434,9 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
                     getActivity());
             final long maxTimeout = dpm
                     .getMaximumTimeToLockForUserAndProfiles(UserHandle.myUserId());
-            mScreenTimeoutPreference.removeUnusableTimeouts(maxTimeout, admin);
+           if(maxTimeout != 0) {
+                mScreenTimeoutPreference.removeUnusableTimeouts(maxTimeout, admin);
+           }
         }
         updateTimeoutPreferenceDescription(currentTimeout);
 
zhoujy@TP:~/data/android/sc826_cn_01_00_a620/msm_8953_git$

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值