前言
做车机的公司没有系统应用工程师,只要涉及到系统的所有问题,全部由系统工程师解决,测试提出需要在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$