android4.2 增添永不休眠选项
来源:互联网 发布:手机淘宝联盟没有提现 编辑:程序博客网 时间:2024/05/18 02:14
android4.2 增添永不休眠选项
感谢原创:http://www.csdn123.com/html/exception/626/626185_626187_626186.htm设置 > 显示 > 休眠a. packages/apps/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> <span style="color:#339966;"><item>Never </item></span> </string-array><!-- AnsonCode 2012.7.4+ <item>Never </item>--> <!-- 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> <span style="color:#339966;"><item>-1</item></span> </string-array><span style="color:#339966;"><!-- AnsonCode-1 的值在表示永不休眠。+ <item>-1</item>--></span>b. 在其它有定义<string-array name="screen_timeout_entries">的地方添加一行,用于显示不同语言文字的内容,这是为了解决在不同语言时,如果没有定义,会出现异常退出的情况。大概有50个arrays.xml文件需要修改。如:packages/apps/Settings/res/values-zh-rCN/arrays.xml中(此路径中绿色表示国家语言) <string-array name="screen_timeout_entries"> <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="6864027952847611413">"从不"</item> </string-array>c.在作出以上修改后,主界面的显示会不正常,需要在代码中加以下处理:找到如下方法:packages/apps/Settings/src/com/android/settings/DisplaySettings.java private void updateTimeoutPreferenceDescription(long currentTimeout) { ListPreference preference = mScreenTimeoutPreference; String summary; if (currentTimeout < -1) { //if (currentTimeout < 0) { AnsonCode2012.7.4 // Unsupported value summary = ""; } else { final CharSequence[] entries = preference.getEntries(); final CharSequence[] values = preference.getEntryValues(); int best = 0; for (int i = 0; i < values.length; i++) { long timeout = Long.parseLong(values[i].toString()); if (currentTimeout == timeout) { best = i; break;////AnsonCode2012.7.4 } } summary = preference.getContext().getString(R.string.screen_timeout_summary, entries[best]); if(currentTimeout < 0)summary = entries[best].toString();//AnsonCode2012.7.4 } preference.setSummary(summary); }//注意与原来代码的区别://1) 修改 0 改为-1, 为保证,在界面中,显示的文字不为空。//2)将 >=改为 ==是作一个准确判断,找到所设定的值便返回,退出循环;//3)不加此句内容,在界面上会显示: 无操作 从不 后, 加了以后则显示: 从不//在4.2上稍微有些不同, 主要是修改了对时间值的判断。 private static final int DEFAULT_SCREEN_OFF_TIMEOUT = 15 * 1000; private static final int MINIMUM_SCREEN_OFF_TIMEOUT = 10 * 1000; private int <span style="color:#339966;">getScreenOffTimeoutLocked</span>() { int timeout = mScreenOffTimeoutSetting; if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) { timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin); } if (mUserActivityTimeoutOverrideFromWindowManager >= 0) { timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager); } <span style="color:#339966;">return Math.max(timeout, MINIMUM_SCREEN_OFF_TIMEOUT);</span> } /** * Updates the value of mUserActivitySummary to summarize the user requested * state of the system such as whether the screen should be bright or dim. * Note that user activity is ignored when the system is asleep. * * This function must have no other side-effects. */ private void updateUserActivitySummaryLocked(long now, int dirty) { // Update the status of the user activity timeout timer. if ((dirty & (DIRTY_USER_ACTIVITY | DIRTY_WAKEFULNESS | DIRTY_SETTINGS)) != 0) { mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT); long nextTimeout = 0; if (mWakefulness != WAKEFULNESS_ASLEEP) { final int screenOffTimeout = <span style="color:#339966;">getScreenOffTimeoutLocked</span>(); final int screenDimDuration = getScreenDimDurationLocked(screenOffTimeout); mUserActivitySummary = 0; if (mLastUserActivityTime >= mLastWakeTime) { nextTimeout = mLastUserActivityTime + screenOffTimeout - screenDimDuration; if (now < nextTimeout) { mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT; } else { nextTimeout = mLastUserActivityTime + screenOffTimeout; if (now < nextTimeout) { mUserActivitySummary |= USER_ACTIVITY_SCREEN_DIM; } } } if (mUserActivitySummary == 0 && mLastUserActivityTimeNoChangeLights >= mLastWakeTime) { nextTimeout = mLastUserActivityTimeNoChangeLights + screenOffTimeout; if (now < nextTimeout && mDisplayPowerRequest.screenState != DisplayPowerRequest.SCREEN_STATE_OFF) { mUserActivitySummary = mDisplayPowerRequest.screenState == DisplayPowerRequest.SCREEN_STATE_BRIGHT ? USER_ACTIVITY_SCREEN_BRIGHT : USER_ACTIVITY_SCREEN_DIM; } } if (mUserActivitySummary != 0) { Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT); msg.setAsynchronous(true); ///mHandler.sendMessageAtTime(msg, nextTimeout);if(mScreenOffTimeoutSetting > 0)mHandler.sendMessageAtTime(msg, nextTimeout);<span style="color:#339966;">//添加了一行判断, 如果值为-1则不发送广播</span> } } else { mUserActivitySummary = 0; } if (DEBUG_SPEW) { Slog.d(TAG, "updateUserActivitySummaryLocked: mWakefulness=" + wakefulnessToString(mWakefulness) + ", mUserActivitySummary=0x" + Integer.toHexString(mUserActivitySummary) + ", nextTimeout=" + TimeUtils.formatUptime(nextTimeout)); } } }还需要改个地方:frameworks/base/services/java/com/android/server/power/PowerManagerService.javaprivate void updateUserActivitySummaryLocked(long now, int dirty) {..... //change code here ============== Slog.d(TAG,"mScreenOffTimeoutSetting ="+mScreenOffTimeoutSetting); //if (mUserActivitySummary != 0 ) { if (mUserActivitySummary != 0 && mScreenOffTimeoutSetting > 0) {//change code here end ============== Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT); msg.setAsynchronous(true); mHandler.sendMessageAtTime(msg, nextTimeout); }
最后,设置默认休眠时间值的路径:<strong>frameworks\base\packages\SettingsProvider\res\values\defaults.xml</strong>中设置def_screen_off_timeout的值就可以!
0 0
- android4.2 增添永不休眠选项
- android4.2 增添永不休眠选项
- android4.2 增添永不休眠选项
- android4.2 添加永不休眠选项
- android4.2系统增永不休眠同时隐藏休眠选项
- android4.3 Setting里面添加永不休眠
- android 4.2 系统增永不休眠同时隐藏休眠选项
- i.max6 e9 android系统添加永不休眠的选项
- MTK在设置/显示下增加永不休眠选项
- MTK Android5.0 settings休眠模式中添加永不休眠(Never)选项
- android 设置 永不休眠
- android 设置 永不休眠
- android 设置永不休眠
- Android 系统永不休眠
- android 设置 永不休眠
- Android5.0 Setting 中添加永不休眠选项,选择后机器过大概7,8秒还是休眠了!!
- Android4.2设置--显示--休眠代码跟踪
- Android4.2 长按POWER键休眠
- 基于STL的内存池类
- C++ 反汇编初探
- Windows7下SPIN6.2.6版本及ispin安装
- msgsnd()函数 msgrcv()函数
- 立图教育-专业的职业培训机构
- android4.2 增添永不休眠选项
- 单播、组播和广播 区别
- Java与Highcharts实例(一) - Highcharts资料整理
- getsockname与getpeername的使用
- msgget()函数
- JQuery遍历返回json
- python 类定义
- 设计一个有限状态机提取C语言文件中的注释(java版)
- WebForms VS. MVC