安卓M版本如何在setting中的休眠模式下添加永不休眠功能?
2016-11-30 09:23
1021 查看
在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:
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;
}
}
}
<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:
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;
}
}
}
相关文章推荐
- 如何在settings里的休眠模式里添加永不休眠
- 如何在settings里的休眠模式里添加永不休眠
- 如何在settings里的休眠模式里添加永不休眠
- 如何在Android平板电脑POWER按钮菜单中添加休眠功能
- Android系统移植与调试之------->如何修改Android设备添加重启、飞行模式、静音模式等功能(二)
- MTK Android5.0 settings休眠模式中添加永不休眠(Never)选项
- Android系统移植与调试之------->如何修改Android设备添加重启、飞行模式、静音模式等功能(一)
- 如何修改Android设备添加重启、飞行模式、静音模式等功能(二)
- 如何在Android平板电脑POWER按钮菜单中添加休眠功能
- Win10如何把休眠功能添加到关机选项以便操作
- android4.3 Setting里面添加永不休眠
- 【Android架构设置篇】之设置界面添加并实现永不休眠功能
- dede如何添加搜索功能, 让网站支持搜索
- Android系统移植与调试之------->如何修改Android设备添加3G上网功能
- Windows 10 IoT Serials 5 - 如何为树莓派应用程序添加语音识别与交互功能
- 详解 如何在 windows 7添加启动项 ,强大的计划任务功能 推荐
- 在jquery 1.11.1版本中,如何实现jquery 1.9以下版本里面的toggle功能?
- 飞行模式下打开wifi 和 Setting界面增加Shut down & Reboot功能
- 项目无法添加tomcat,如何修改项目的jdk版本,Java version 1.8 is not supported
- iPad和iPhone的Safari“添加至主屏幕”功能如何自定义图标