修改seting里面的休眠时间列表
2016-07-30 11:36
435 查看
去掉15秒和30秒 这个是数组具体值
1,在Z:\myandroid\packages\apps\Settings\res\values\arrays.xml
<string-array name="screen_timeout_values" translatable="false">
<!-- 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>
</string-array>
添加的话也可以在里面添加item即可。
----------下面是界面显示的值----------------------
<string-array name="screen_timeout_entries">
<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>
</string-array>
2,超时响应,默认的是超时休眠,我们可以修改默认的超时响应,做自己的事情,文件位置
Z:\myandroid\frameworks\base\services\java\com\android\server\power\PowerManagerService.java
private final class PowerManagerHandler extends Handler {
public PowerManagerHandler(Looper looper) {
super(looper, null, true /*async*/);
}
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_USER_ACTIVITY_TIMEOUT:
// handleUserActivityTimeout();/默认的处理方式
// wdh add 添加自己要做的事情
try{
Intent intent = mContext.getPackageManager().getLaunchIntentForPackage("com.android.lockscreen");
mContext.startActivity(intent);
}catch(Exception e){
}
break;
case MSG_SANDMAN:
handleSandman();
break;
case MSG_SCREEN_ON_BLOCKER_RELEASED:
handleScreenOnBlockerReleased();
break;
case MSG_CHECK_IF_BOOT_ANIMATION_FINISHED:
checkIfBootAnimationFinished();
break;
}
}
}
**********************************************************************************************************************************************
安卓M版本如何在setting中的休眠模式下添加永不休眠功能?
在alps\frameworks\base\packages\SettingsProvider\res\values\defaults.xml中设置def_screen_off_timeout为0,即
<integer name="def_screen_off_timeout">0</integer>
同时请注意,经由下面的操作,setting里面休眠时间的Never菜单才会出来:
修改alps\packages\apps\Settings\res\values\arrays.xml:
<!-- Display settings. The delay in inactivity before the screen is turned off. These are shown ain 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>10 minutes</item>
<item>30 minutes</item>
<item>never</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>600000</item>
<!-- Do not translate. -->
<item>1800000</item>
<item>-1</item>
</string-array>
修改对比语言value文件夹下的arrays.xml, 修改screen_timeout_entries对应的翻译。不用管那个msgid,只是google用来表示是他自己的资源而已,直接添加<item >"不灭"</item>即可,请知悉。
(2)与L版本第二步一致,只是修改判断的是否为0,文件位置framework/base/services/java/com/android/server/power/PowerManagerService.java:
private void updateUserActivitySummaryLocked(long now, int dirty) {
...
if(mScreenOffTimeoutSetting != 0){
if (mUserActivitySummary != 0 && nextTimeout >= 0 ) {
Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);
msg.setAsynchronous(true);
mHandler.sendMessageAtTime(msg, nextTimeout);
}
}else {
mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT;
}
...
}
(3)按照上述两步修改,是可以实现永不灭屏,但有个side-effect,设置永不休眠和keyguard的安全锁后,闹钟响应时闪屏,闪屏是因为keyguard在闹钟唤醒时会被调起。引起L和M的差别是在PhoneWindowManager.java中
private void updateLockScreenTimeout() {
...........
if (enable) {
if (localLOGV) Log.v(TAG, "setting lockscreen timer");
mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
其中L上永不休眠时 mLockScreenTimeout是-1,所以这个ScreenLockTimeout子线程不会被执行,也就不会去锁屏。而M上由于mLockScreenTimeout等于0,所以立即锁屏,就会出现一下锁屏的画面。
所以再将此函数修改如下:
private void updateLockScreenTimeout() {
synchronized (mScreenLockTimeout) {
boolean enable = (mAllowLockscreenWhenOn && mAwake &&
mKeyguardDelegate != null && mKeyguardDelegate.isSecure());
if (mLockScreenTimerActive != enable) {
if (enable) {
if (localLOGV) Log.v(TAG, "setting lockscreen timer");
//add mtk
if(mLockScreenTimeout!=0){
mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);}
// end mtk
} else {
if (localLOGV) Log.v(TAG, "clearing lockscreen timer");
mHandler.removeCallbacks(mScreenLockTimeout);
}
mLockScreenTimerActive = enable;
}
}
}
1,在Z:\myandroid\packages\apps\Settings\res\values\arrays.xml
<string-array name="screen_timeout_values" translatable="false">
<!-- 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>
</string-array>
添加的话也可以在里面添加item即可。
----------下面是界面显示的值----------------------
<string-array name="screen_timeout_entries">
<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>
</string-array>
2,超时响应,默认的是超时休眠,我们可以修改默认的超时响应,做自己的事情,文件位置
Z:\myandroid\frameworks\base\services\java\com\android\server\power\PowerManagerService.java
private final class PowerManagerHandler extends Handler {
public PowerManagerHandler(Looper looper) {
super(looper, null, true /*async*/);
}
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case MSG_USER_ACTIVITY_TIMEOUT:
// handleUserActivityTimeout();/默认的处理方式
// wdh add 添加自己要做的事情
try{
Intent intent = mContext.getPackageManager().getLaunchIntentForPackage("com.android.lockscreen");
mContext.startActivity(intent);
}catch(Exception e){
}
break;
case MSG_SANDMAN:
handleSandman();
break;
case MSG_SCREEN_ON_BLOCKER_RELEASED:
handleScreenOnBlockerReleased();
break;
case MSG_CHECK_IF_BOOT_ANIMATION_FINISHED:
checkIfBootAnimationFinished();
break;
}
}
}
**********************************************************************************************************************************************
安卓M版本如何在setting中的休眠模式下添加永不休眠功能?
在alps\frameworks\base\packages\SettingsProvider\res\values\defaults.xml中设置def_screen_off_timeout为0,即
<integer name="def_screen_off_timeout">0</integer>
同时请注意,经由下面的操作,setting里面休眠时间的Never菜单才会出来:
修改alps\packages\apps\Settings\res\values\arrays.xml:
<!-- Display settings. The delay in inactivity before the screen is turned off. These are shown ain 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>10 minutes</item>
<item>30 minutes</item>
<item>never</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>600000</item>
<!-- Do not translate. -->
<item>1800000</item>
<item>-1</item>
</string-array>
修改对比语言value文件夹下的arrays.xml, 修改screen_timeout_entries对应的翻译。不用管那个msgid,只是google用来表示是他自己的资源而已,直接添加<item >"不灭"</item>即可,请知悉。
(2)与L版本第二步一致,只是修改判断的是否为0,文件位置framework/base/services/java/com/android/server/power/PowerManagerService.java:
private void updateUserActivitySummaryLocked(long now, int dirty) {
...
if(mScreenOffTimeoutSetting != 0){
if (mUserActivitySummary != 0 && nextTimeout >= 0 ) {
Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);
msg.setAsynchronous(true);
mHandler.sendMessageAtTime(msg, nextTimeout);
}
}else {
mUserActivitySummary |= USER_ACTIVITY_SCREEN_BRIGHT;
}
...
}
(3)按照上述两步修改,是可以实现永不灭屏,但有个side-effect,设置永不休眠和keyguard的安全锁后,闹钟响应时闪屏,闪屏是因为keyguard在闹钟唤醒时会被调起。引起L和M的差别是在PhoneWindowManager.java中
private void updateLockScreenTimeout() {
...........
if (enable) {
if (localLOGV) Log.v(TAG, "setting lockscreen timer");
mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);
其中L上永不休眠时 mLockScreenTimeout是-1,所以这个ScreenLockTimeout子线程不会被执行,也就不会去锁屏。而M上由于mLockScreenTimeout等于0,所以立即锁屏,就会出现一下锁屏的画面。
所以再将此函数修改如下:
private void updateLockScreenTimeout() {
synchronized (mScreenLockTimeout) {
boolean enable = (mAllowLockscreenWhenOn && mAwake &&
mKeyguardDelegate != null && mKeyguardDelegate.isSecure());
if (mLockScreenTimerActive != enable) {
if (enable) {
if (localLOGV) Log.v(TAG, "setting lockscreen timer");
//add mtk
if(mLockScreenTimeout!=0){
mHandler.postDelayed(mScreenLockTimeout, mLockScreenTimeout);}
// end mtk
} else {
if (localLOGV) Log.v(TAG, "clearing lockscreen timer");
mHandler.removeCallbacks(mScreenLockTimeout);
}
mLockScreenTimerActive = enable;
}
}
}
相关文章推荐
- 多线程编程入门(5):传统定时器的使用
- I/O多路复用---select
- JS权威指南读书笔记(二)
- redis 对基本数据类型的处理接口
- 数组定义及遍历
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式
- 进程讲座总结。
- A Simple Problem with Integers (基础线段树)
- web框架学习前复习——xml(2)
- 堆区和栈区的概念
- 无尽走廊(C语言)
- python thread模块
- 初识STL—图解六大组件及列式容器与关联式容器
- Oracle双引号和单引号的区别小结
- mysql error
- bootstarp daterangepicker 清空日期,汉化,非常简单.
- hdu 1809 sg函数
- iOS开发网络篇之文件下载、大文件下载、断点下载
- 状态机注释转换
- BestCoder Round #841001Aaronson