一、设置永不休眠简单分析

安卓手机中"设置"应用里面可以设置手机屏幕超时时间。如下图所示:通过选项可以看到最多能设置30分钟,那如果需要永不休眠,只要把屏幕超时时间设置的足够大就可以达到目的,比如Int的最大值。接下来源码中追踪一下"设置"应用中如何实现的。源码中"设置"应用的源码路径如下:

packages/apps/Settings

通过对该目录关键字搜索和分析,找到设置屏幕超时的源码文件如下:

packages/apps/Settings/src/com/android/settings/display/TimeoutPreferenceController.java

"TimeoutPreferenceController.java"中修改屏幕超时的关键函数如下:

 @Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {try {int value = Integer.parseInt((String) newValue);//最终是调用这个函数实现的Settings.System.putInt(mContext.getContentResolver(), SCREEN_OFF_TIMEOUT, value);updateTimeoutPreferenceDescription((TimeoutListPreference) preference, value);} catch (NumberFormatException e) {Log.e(TAG, "could not persist screen timeout setting", e);}return true;}

从代码中可以看到通过以下代码修改屏幕超时时间:

Settings.System.putInt(getContentResolver(),Settings.System.SCREEN_OFF_TIMEOUT, 6000);

以下将在设置应用中的屏幕超时中添加一个"永不休眠"的功能。

二、涉及修改的文件

//添加永不休眠以及时间选项
packages/apps/Settings/res/values/arrays.xml//添加中文展示的永不休眠选项
packages/apps/Settings/res/values/values-zh-rCN/arrays.xml
//Settings.System.putInt方法的实现类,根据传入的特殊值-1修改为一个很大的休眠时间
/frameworks/base/core/java/android/provider/Settings.java

三、修改实战

1.设置应用中添加永不休眠选项

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><!-- ///ADD START 此处新增的英文语言下Never展示项--><item>Never</item><!-- ///ADD END --></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>300000</item><!-- Do not translate. --><item>600000</item><!-- Do not translate. --><item>1800000</item><!-- ///ADD START 此处新增的休眠时间-1--><item>-1</item><!-- ///ADD END --></string-array>

packages/apps/Settings/res/values/values-zh-rCN/arrays.xml添加如下内容:

<string-array name="screen_timeout_entries"><item msgid="8386012403457852396">"15 秒"</item><item msgid="4572123773028439079">"30 秒"</item><item msgid="7016081293774377048">"1 分钟"</item><item msgid="838575533670111144">"2 分钟"</item><item msgid="2693197579676214668">"5 分钟"</item><item msgid="1955784331962974678">"10 分钟"</item><item msgid="5578717731965793584">"30 分钟"</item><!-- ///ADD START 此处新增的中文语言展示选择项--><item>永不睡觉</item><!-- ///ADD END -->
</string-array>

2.Settings.java文件中修改设置的休眠时间

在该文件中找到Settings.System.putInt方法,修改关联的方法代码如下:

//putInt最终调用的是putIntForUserpublic static boolean putInt(ContentResolver cr, String name, int value) {return putIntForUser(cr, name, value, cr.getUserId());}//putIntForUser中根据传入的name和value特殊值-1进行修改设置
/** @hide */
@UnsupportedAppUsage
public static boolean putIntForUser(ContentResolver cr, String name, int value,int userHandle) {
///ADD START
if(name.equals(SCREEN_OFF_TIMEOUT))
{//-1说明是我们在设置中添加的永不休眠的值if(value==-1){//Log.d("Settings","change screen timeout for:"+Integer.toString(Integer.MAX_VALUE-1000));return putStringForUser(cr, name, Integer.toString(Integer.MAX_VALUE-1000), userHandle);}
}///ADD ENDreturn putStringForUser(cr, name, Integer.toString(value), userHandle);}

四、效果展示

修改之后编译刷机,我本机测试了挂了一天都没休眠。展示图片:

Android10系统源码内核定制开发从入门到入坑

EdXposed ART hook框架的使用方法

免Magisk使用adb命令安装Edxposed

Android10系统定制开发之修改安卓源码关闭selinux

大佬们留个关注再走呗,后续精彩文章不断

修改Android10系统源码支持手机永不休眠相关推荐

  1. 修改Android10系统源码关闭selinux

    一.seandroid简介 SEAndroid是Google在Android4.4上正式推出的一套以SELinux为核心的系统安全机制.在Android源码中,系统默认的seandroid配置存放如下 ...

  2. 在线客服系统源码 自适应手机移动端 支持多商家 带搭建教程

     下载链接: 在线客服系统源码自适应手机移动端支持多商家支持微信公众号/微信小程序带搭建教程-PHP文档类资源-CSDN下载 PHP轻量级人工在线客服系统源码 自适应手机移动端 支持多商家 带搭建教程 ...

  3. PHP轻量级人工在线客服系统源码 自适应手机移动端

    介绍: PHP轻量级人工在线客服系统源码 自适应手机移动端 支持多商家 带搭建教程 支持多商家 支持多商家,每个注册用户为一个商家,每个商家可以添加多个客服. 不限坐席 每个商家可以无限添加坐席,不限 ...

  4. Cloudreve云网盘系统源码 支持本地储存

    简介: Cloudreve云网盘系统源码/支持本地储存,七牛云,阿里OS,又拍云,Amazon S3,Onedrive 和远程服务器 测试了一下完美运行,如果分享出来的东西,下载时不需要登陆就完美了, ...

  5. 还不错的云盘网盘PHP系统源码+支持对接云存储

    正文: 还不错的云盘网盘PHP系统源码+支持对接云存储,快速对接第三方云存储,支持七牛.又拍.阿里OSS.AWS S3.Onedrive.自建远程服务器,当然,还有本地存储. 自定义主题配色,图片.音 ...

  6. PACS/RIS系统源码 支持专业三维影像后处理功能,支持海量数据存储、迁移管理

    PACS系统源码 支持专业三维影像后处理功能,系统有演示和自主知识产权. 私信了解更多内容! 系统主要功能: (一)影像处理 1.数据接收功能:接收.获取影像设备的DICOM3.0和非DICOM3.0 ...

  7. 全新UI H5购物商城系统源码|支持易支付 首发

    正文: 全新UI H5购物商城系统源码|支持易支付 首发 云盘: http://zijieyunpan.cn/TTmNco2J70S 图片阅览:

  8. 最新ai创作系统CHATGPT镜像系统源码+支持GPT4.0+支持ai绘画(MJ)+实时语音识别输入+免费更新版本

    AI系统CHATGPT镜像程序源码+支持GPT4+支持ai绘画+实时语音识别输入+免费更新版本 一.AI创作系统 二.系统介绍 三.系统程序下载 四.安装教程 五.主要功能展示 六.更新日志 一.AI ...

  9. PHP轻量级在线客服系统源码 自适应手机移动端

    简介: 支持多商家 支持多商家,每个注册用户为一个商家,每个商家可以添加多个客服. 不限坐席 每个商家可以无限添加坐席,不限制坐席数 支持H5移动端 系统自动适配移动端,也可以接入app(h5方式) ...

最新文章

  1. struct和typedef struct
  2. 点击文字弹出一个DIV层窗口代码 【或FORM表单 并且获取点击按钮的ID值】
  3. 元宇宙iwemeta:2021年企业领袖榜公布,曹德旺为终身成就奖
  4. 【学习笔记】opencv的python接口 轮廓特征值 滚动条控制阈值参数
  5. 谈到云原生, 绕不开容器化
  6. MySQL分页查询小技巧
  7. 【LeetCode笔记】300. 最长递增子序列(Java、动态规划、二分法、贪心)
  8. iOS常用手势识别器
  9. 22 File Links: Hard and Symbolic
  10. mysql useunicode_jdbc连接mysql 为什么在连接时已经这样设置了 ?useUnicode=truecharacterEncodin...
  11. HALCON 20.11:标定助手使用注意事项
  12. jxl 导入导出Excel(有模板)
  13. session是什么,存储在哪里
  14. 学完这个PPT设计课程后,我实现了月入3w+!
  15. Learun FrameWork V7.0,敏捷开发向导快速配置
  16. APP中使用UI交互设计动效的三个好处
  17. 利用Canvas 实现前端图片涂抹效果
  18. Linux登录mysql时 密码正确登录不进去,没有密码却能登进去
  19. cesium 根据SampledPositionProperty与timeline实现轨迹回放功能(跟随视角、上帝视角) 详细代码与理解记录
  20. python笔记-2020/09/03下午-字符串练习(5)

热门文章

  1. 微信小程序iOS兼容问题,苹果手机白屏,页面不加载,安卓手机正常
  2. EM算法:三硬币模型
  3. [FROM WOJ]#2235 Maintain
  4. html里文本框怎么取消黑框,怎么取消word的文本框
  5. html5 端午节 龙舟,龙舟竞渡共庆端午节
  6. 《Farm Together》如何获得以前活动奖励装扮(星星拱门,情侣椅,假日栅栏,复活节兔子,独角兽)
  7. stm32贪吃蛇代码c语言,STM32实现贪吃蛇
  8. 稀疏光流KLT跟踪算法
  9. 【代码】【有统计错误,待修改】统计文件中,不同字符出现的次数(未排序)
  10. 编译原理期末复习资料