MTK在设置/显示下增加永不休眠选项
来源:互联网 发布:淘宝店铺图片大全 编辑:程序博客网 时间:2024/05/21 22:33
一、首先在资源文件中加入选项
在package/app/Settings/res/values/arrays.xml文件中加入永不休眠选项
<!-- 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>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> <!--add code --></span></string-array>
<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>0</item> <!--add code --></span></string-array>
由于在资源文件中不能设置最大值,所以在Never选项对应的值这里我设置为 0;这个0仅作为标记,后面在代码中进行判断再替换它的值。
二、在framework/base/services/core/java/com/android/server/power/PowerManagerService.java文件中加入判断选项
private int getScreenOffTimeoutLocked(int sleepTimeout) { 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); }//add code start for never sleep startif (timeout < 1) { timeout = Integer.MAX_VALUE; }//add code start for never sleep end</span> if (mUserActivityTimeoutMin) { timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromCMD); } return Math.max(timeout, mMinimumScreenOffTimeoutConfig); }
由于time的值的获得是由:
int timeout = mScreenOffTimeoutSetting;
mScreenOffTimeoutSetting = Settings.System.getIntForUser(resolver, Settings.System.SCREEN_OFF_TIMEOUT, DEFAULT_SCREEN_OFF_TIMEOUT, UserHandle.USER_CURRENT);因此,timeout的值就是读取到资源文件的值;当timeout的值为0的时候,也就是永不休眠选项。把这个值修改成最大值,手机就不会休眠了。
三、修改package/app/Settings/src/com/android/settings/DisplaySettings.java选项的summary的值
如果仅仅修改上面的代码,休眠选项的summary显示就会出现错误如下图:
private void updateTimeoutPreferenceDescription(long currentTimeout) { ListPreference preference = mScreenTimeoutPreference; String summary; if (currentTimeout < 0) { // Unsupported value summary = ""; }else if (currentTimeout == 0){ final CharSequence[] entries = preference.getEntries(); final CharSequence[] values = preference.getEntryValues(); summary = entries[values.length - 1].toString();</span>} else{ 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 < <span style="color:#ff0000;">values.length-1</span>; i++) { long timeout = Long.parseLong(values[i].toString()); if (currentTimeout >= timeout) { best = i; } } summary = preference.getContext().getString(R.string.screen_timeout_summary, entries[best]); } } preference.setSummary(summary); }
首先应该判断currentTimeout的值是不是0,如果是0就是永不休眠选项,那么对应的summary的值应该是entries[values.length - 1].toString(); 这个只是修改永不休眠选项的summary的值,由于我们把永不休眠选项的值设置为0。并且放在screen_timeout_values的最后一个item,因此每次循环到最后,当 i = values.length-1 的时候timeout的是值都为0;因此currentTimeout 永远大于或者等于 timeout,因此best = values.length-1,就造成了上图的现象,因为上面我们已经处理了永不休眠选项的summary,因此把 i<values.length 改成 i< values.length-1 ,这个时候只需要不循环到最后那个item就行了。此时任务完成 bingo:
1 0
- MTK在设置/显示下增加永不休眠选项
- 在android4.0.4中增加-设置-显示-永不超时
- MTK Android5.0 settings休眠模式中添加永不休眠(Never)选项
- android 设置 永不休眠
- android 设置 永不休眠
- android 设置永不休眠
- android 设置 永不休眠
- Android增加永不休眠功能
- Android6.0 设置永不休眠
- XP关机选项下显示休眠按钮
- android4.2 增添永不休眠选项
- android4.2 增添永不休眠选项
- android4.2 增添永不休眠选项
- android4.2 添加永不休眠选项
- 安卓M版本如何在setting中的休眠模式下添加永不休眠功能?
- [FAQ08614]如何在setting中的休眠模式下添加永不休眠功能?
- android4.2系统增永不休眠同时隐藏休眠选项
- android 4.2 系统增永不休眠同时隐藏休眠选项
- Hibernate学习:Hibernate数据查询
- 常用正则表达式
- 【Qt开发】设置Qt应用程序图标
- 一个Android项目了解所有主流架构-1.项目介绍和基本MVC架构示例
- ubuntu 下 gcc切换
- MTK在设置/显示下增加永不休眠选项
- Qt多级解析Json文件
- PHP中date函数月和日带0问题
- 参数为1个RDD的Cogroup
- C++ primer plus读书笔记(三)
- HDU 1561 The more, The Better(多重背包+树形DP)
- 解读equals方法与hashCode方法渊源
- eclipse的Servers视图中无法添加Tomcat7的解决方法
- MySQL---数据库从入门走向大神系列(十七)-JavaWeb分页技术实例演示2