以下为在android4.0系统中,settings-display,增加Never timeout,选项。
在packages/app/Settings/res/values/arrays.xml中增加红色部分
<string-array name="screen_timeout_entries">
<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 timeout</item>
</string-array>
<!-- Do not translate. -->
<string-array name="screen_timeout_values" translatable="false">
<!-- 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>
<item>1</item>
</string-array>
在packages/apps/Settings/src/com/android/settings/DisplaySettings.java中红色部分为改动部分
mAccelerometer.setPersistent(false);
mScreenTimeoutPreference = (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
long currentTimeout = Settings.System.getLong(resolver, SCREEN_OFF_TIMEOUT,
FALLBACK_SCREEN_TIMEOUT_VALUE);
if(currentTimeout==-1)
{
currentTimeout=1;
}
mScreenTimeoutPreference.setValue(String.valueOf(currentTimeout));
.
.
for (int i = 0; i < values.length; i++) {
long timeout = Long.parseLong(values[i].toString());
if(timeout==1&¤tTimeout==1){
best=i;
break;
}
else if (currentTimeout >= timeout&&timeout!=1) {
best = i;
}
}
if(currentTimeout==1){
summary = entries[best].toString();
}else{
summary = preference.getContext().getString(R.string.screen_timeout_summary,
entries[best]);
}
.
if (KEY_SCREEN_TIMEOUT.equals(key)) {
int value = Integer.parseInt((String) objValue);
try {
Settings.System.putInt(getContentResolver(), SCREEN_OFF_TIMEOUT, (value==1)?(-1):value);
updateTimeoutPreferenceDescription(value);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist screen timeout setting", e);
}
}
.