平台

RK3399 + Android 8.1

需求

加长锁屏显示时间, 延长用户解锁时间

补丁

|-- frameworks/base/core/res/res/values/config.xml

diff --git a/frameworks/base/core/res/res/values/config.xml b/frameworks/base/core/res/res/values/config.xml
index b81b609..c401275 100644
--- a/frameworks/base/core/res/res/values/config.xml
+++ b/frameworks/base/core/res/res/values/config.xml
@@ -1988,7 +1988,7 @@This value must be greater than zero, otherwise the device will immediatelyfall asleep again as soon as it is awoken.-->
-    <integer name="config_minimumScreenOffTimeout">10000</integer>
+    <integer name="config_minimumScreenOffTimeout">15000</integer><!-- User activity timeout: Maximum screen dim duration in milliseconds.

由原来的10 秒延长到15秒

跟踪

|-- frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java

    private void readConfigurationLocked() {...mMinimumScreenOffTimeoutConfig = resources.getInteger(com.android.internal.R.integer.config_minimumScreenOffTimeout);...}private void updateUserActivitySummaryLocked(long now, int dirty) {// Update the status of the user activity timeout timer.if ((dirty & (DIRTY_WAKE_LOCKS | DIRTY_USER_ACTIVITY| DIRTY_WAKEFULNESS | DIRTY_SETTINGS)) != 0) {mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT);long nextTimeout = 0;if (mWakefulness == WAKEFULNESS_AWAKE|| mWakefulness == WAKEFULNESS_DREAMING|| mWakefulness == WAKEFULNESS_DOZING) {final int sleepTimeout = getSleepTimeoutLocked();final int screenOffTimeout = getScreenOffTimeoutLocked(sleepTimeout);...mUserActivitySummary = 0;if (mLastUserActivityTime >= mLastWakeTime) {//计算超时进入休眠时间.
//mLastUserActivityTime最后一次操作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 && nextTimeout >= 0) {Message msg = mHandler.obtainMessage(MSG_USER_ACTIVITY_TIMEOUT);msg.setAsynchronous(true);mHandler.sendMessageAtTime(msg, nextTimeout);}}...}}/*
dumpsys power | grep mScreenOffTimeoutSettingmScreenOffTimeoutSetting=2147483647
*/private int getScreenOffTimeoutLocked(int sleepTimeout) {//-1int timeout = mScreenOffTimeoutSetting;//2147483647if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);}if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);}if (sleepTimeout >= 0) {timeout = Math.min(timeout, sleepTimeout);}return Math.max(timeout, mMinimumScreenOffTimeoutConfig);}//用户长时间不操作后:private void handleUserActivityTimeout() { // runs on handler threadsynchronized (mLock) {if (DEBUG_SPEW) {Slog.d(TAG, "handleUserActivityTimeout");}mDirty |= DIRTY_USER_ACTIVITY;updatePowerStateLocked();}}/*** Updates the global power state based on dirty bits recorded in mDirty.** This is the main function that performs power state transitions.* We centralize them here so that we can recompute the power state completely* each time something important changes, and ensure that we do it the same* way each time.  The point is to gather all of the transition logic here.*/private void updatePowerStateLocked() {...// Phase 2: Update display power state.boolean displayBecameReady = updateDisplayPowerStateLocked(dirtyPhase2);// Phase 3: Update dream state (depends on display ready signal).updateDreamLocked(dirtyPhase2, displayBecameReady);// Phase 4: Send notifications, if needed.finishWakefulnessChangeIfNeededLocked();...} finally {Trace.traceEnd(Trace.TRACE_TAG_POWER);}}/*** Determines whether to post a message to the sandman to update the dream state.*/private void updateDreamLocked(int dirty, boolean displayBecameReady) {if ((dirty & (DIRTY_WAKEFULNESS| DIRTY_USER_ACTIVITY| DIRTY_WAKE_LOCKS| DIRTY_BOOT_COMPLETED| DIRTY_SETTINGS| DIRTY_IS_POWERED| DIRTY_STAY_ON| DIRTY_PROXIMITY_POSITIVE| DIRTY_BATTERY_STATE)) != 0 || displayBecameReady) {if (mDisplayReady) {scheduleSandmanLocked();}}}private void scheduleSandmanLocked() {if (!mSandmanScheduled) {mSandmanScheduled = true;Message msg = mHandler.obtainMessage(MSG_SANDMAN);msg.setAsynchronous(true);mHandler.sendMessage(msg);}}private void handleSandman() { // runs on handler thread// Handle preconditions....// Doze has ended or will be stopped.  Update the power state.reallyGoToSleepNoUpdateLocked(SystemClock.uptimeMillis(), Process.SYSTEM_UID);updatePowerStateLocked();}}// Stop dream.if (isDreaming) {mDreamManager.stopDream(false /*immediate*/);}}// Done dozing, drop everything and go to sleep.private boolean reallyGoToSleepNoUpdateLocked(long eventTime, int uid) {if (DEBUG_SPEW) {Slog.d(TAG, "reallyGoToSleepNoUpdateLocked: eventTime=" + eventTime+ ", uid=" + uid);}if (eventTime < mLastWakeTime || mWakefulness == WAKEFULNESS_ASLEEP|| !mBootCompleted || !mSystemReady) {return false;}Trace.traceBegin(Trace.TRACE_TAG_POWER, "reallyGoToSleep");try {Slog.i(TAG, "Sleeping (uid " + uid +")...");setWakefulnessLocked(WAKEFULNESS_ASLEEP, PowerManager.GO_TO_SLEEP_REASON_TIMEOUT);} finally {Trace.traceEnd(Trace.TRACE_TAG_POWER);}return true;}

Android 8.1 修改锁屏显示时间相关推荐

  1. android锁屏时间大小,Android 4.4.4 锁屏界面时间大小修改

    源码所在目录: frameworks\base\packages\Keyguard\res\values\dimens.xml 80dp 其中的80dp即代表时间字体的大小,修改这个值,即可改变字体的 ...

  2. 《SystemUI》修改SystemUI锁屏界面时间格式

    要求:修改SystemUI锁屏界面时间格式 Android P 上Sysyemui锁屏界面上的日期显示不在DateView处理了,使用KeyguardSliceProvider来处理,继承Conten ...

  3. android锁屏显示应用程序,今日应用:微软又给 Android 做了一款锁屏应用

    微软又做了一款 Android 锁屏应用,质量还不错.如果你已经设置了锁屏,Picturesque可能让你再解锁一次你真的需要在锁屏就处理这么多任务吗? 微软又来给 Android 提供应用了,他们昨 ...

  4. Android 7.0来电全屏显示 如何修改

    在Android 7.0来电全屏显示 如何修改呢? 1.alps/frameworks\base\packages\SystemUI\src\com\android\systemui\statusba ...

  5. oppo手机android在哪里设置密码,oppo锁屏方法以及修改锁屏密码的具体介绍【图文】...

    国内手机的发展速度大家应该知道吧!可以用一个迅猛来形容,现在市场上的手机品牌大多数都是国产手机品牌,这一点我想大家都应该清楚吧!oppo手机大家肯定知道,因为这是今年销量最好的国产手机品牌,尤其是op ...

  6. Android框架浅析之锁屏(Keyguard)机制原理

    本文主要内容: 1.分析锁屏界面的组成 : 2.基于源代码分析锁屏相关类  3.提出一种在框架取消锁屏的方法 . 花了一些时间研究 android 原生的锁屏框架---Keyguard,今天就慢慢的讲 ...

  7. Android 9.0 SystemUI 锁屏流程分析

    1.锁屏界面显示的流程 2.按键灭屏 -> 按键亮屏 对于Key事件,InputDispatcher在分发之前会先将事件上发到PhoneWindowManager中,可以进行拦截,故从Phone ...

  8. 网易云音乐等三方app如何在锁屏显示

    这里我本来准备反编译一下网易云音乐,但是发现github上有一个仿照网易云音乐的开源项目,参考自 https://github.com/aa112901/remusic ,其他的应用在锁屏上显示的原理 ...

  9. oppo云服务器如何修改开机密码,oppo锁屏方法以及修改锁屏密码的具体介绍【图文】...

    国内手机的发展速度大家应该知道吧!可以用一个迅猛来形容,现在市场上的手机品牌大多数都是国产手机品牌,这一点我想大家都应该清楚吧!oppo手机大家肯定知道,因为这是今年销量最好的国产手机品牌,尤其是op ...

最新文章

  1. 解放你内心的自然领袖,从你的内心而非你的自我来领导你自己
  2. js数据结构和算法(8)-图
  3. Java调用动态库(转载)
  4. 实现接口时@Override注解问题
  5. selenium的三种等待时间
  6. 【转】C++类的sizeof大小
  7. linux二进制数据16进制数据转换,[轉]16进制字符文本/二进制文件迷你互转器
  8. 不止是安防 红外摄像机在应急产业的应用
  9. 树莓派架设VNC服务
  10. django通用视图(类方法)
  11. uVision2项目实践:HelloWorld
  12. 每天,每周,每月每隔cron表达式
  13. 笔记本无线共享上网(网络是有线)
  14. 软件开发实习做什么_为什么要有开发人员实习时间
  15. 《JAVA语言程序设计》期末考试试题及答案
  16. 计算机口令管理工具,PC免费密码管理器软件推荐
  17. gt 630 linux驱动下载,Ubuntu 13.04 双显卡安装NVIDIA GT 630M驱动
  18. 为什么我们要坚持写博客?
  19. 教育之星 计算机,冉冉升起的教育之星
  20. Google的60款开源项目

热门文章

  1. Mtlab中的小括号()、中括号[]、大括号{}的使用及区别
  2. java获取当前request_java如何在一个普通的类中获取request对象
  3. 软件破解入门(暴力破解CrackMe)
  4. python 语音识别(百度api)
  5. 学习率(Learing Rate)的作用以及如何调整
  6. 请相信我,这门编程语言丝毫不比C/C++差!
  7. php stack trace:,XDebug 自动开启PHP Stack Trace, 导致PHP Log 超1G
  8. 面试谈薪资时,HR问上家公司薪水并要求看流水,这是什么意思?
  9. 酷睿i7 1260p和i7 1280p差距 选哪个好
  10. 自学day1 | Simulink在控制系统与电路中的简单demo