首页
社区
课程
招聘
玩转Android10源码开发定制(14)修改安卓源码手机永不休眠
发表于: 2021-1-13 14:57 7767

玩转Android10源码开发定制(14)修改安卓源码手机永不休眠

2021-1-13 14:57
7767

安卓手机中"设置"应用里面可以设置手机屏幕超时时间。如下图所示:

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

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

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

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

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

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

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

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

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

原文链接:
玩转Android10源码开发定制(14)修改安卓源码手机永不休眠

packages/apps/Settings
packages/apps/Settings
packages/apps/Settings/src/com/android/settings/display/TimeoutPreferenceController.java
packages/apps/Settings/src/com/android/settings/display/TimeoutPreferenceController.java
@Override
   public 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;
   }
@Override
   public 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);
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
//添加永不休眠以及时间选项
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
<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>
<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. -->

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2021-4-12 22:03 被蟑螂一号编辑 ,原因:
收藏
免费 3
支持
分享
最新回复 (4)
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
太棒了, 刚好我也在做Android定制相关工作~作者加油!!
2021-1-13 19:02
0
雪    币: 5330
活跃值: (5464)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
3
这个很有用 哈哈 不然每次都刷完都要去设置里面调
2021-1-14 23:02
0
雪    币: 4116
活跃值: (1034)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
大佬,你干脆加个站发文章吧。公众号文章全都挂了啊
2021-4-12 17:08
0
雪    币: 259
活跃值: (3623)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
5
Papaya. 大佬,你干脆加个站发文章吧。公众号文章全都挂了啊[em_50]
已经迁移到新号了
2021-4-12 22:04
0
游客
登录 | 注册 方可回帖
返回
//