首页 > 其他分享 >msm8909_Setting中添加永不休眠功能

msm8909_Setting中添加永不休眠功能

时间:2023-08-04 11:35:01浏览次数:43  
标签:xml msm8909 int res 休眠 Setting timeout packages Math

项目中需要让Android板开机就进入桌面并且永不休眠。项目使用的是广和通的SC806Android开发板,msm8909平台。

配置永不休眠

diff

diff文件放前面,可以直接apply进去!

diff --git a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
index 64378d7ba7..3ee1079fb5 100644
--- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
+++ b/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
@@ -18,7 +18,8 @@
 -->
 <resources>
     <bool name="def_dim_screen">true</bool>
-    <integer name="def_screen_off_timeout">60000</integer>
+    <!-- <integer name="def_screen_off_timeout">60000</integer> -->
+    <integer name="def_screen_off_timeout">-1</integer>
     <integer name="def_sleep_timeout">-1</integer>
     <bool name="def_airplane_mode_on">false</bool>
     <bool name="def_theater_mode_on">false</bool>
diff --git a/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java b/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
index 7528a749b6..ff6ca47b87 100644
--- a/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java
@@ -1830,6 +1830,7 @@ public final class PowerManagerService extends SystemService
     }
 
     private int getScreenOffTimeoutLocked(int sleepTimeout) {
+        int nosleep;
         int timeout = mScreenOffTimeoutSetting;
         if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
             timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
@@ -1840,6 +1841,11 @@ public final class PowerManagerService extends SystemService
         if (sleepTimeout >= 0) {
             timeout = Math.min(timeout, sleepTimeout);
         }
+        nosleep = mScreenOffTimeoutSetting;
+        if(nosleep == 0) {
+            nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin ;
+            return Math.max(nosleep, mMaximumScreenOffTimeoutFromDeviceAdmin);
+        }
         return Math.max(timeout, mMinimumScreenOffTimeoutConfig);
     }
 
diff --git a/packages/apps/Settings/res/values/arrays.xml b/packages/apps/Settings/res/values/arrays.xml
index c10057b423..f50595f501 100755
--- a/packages/apps/Settings/res/values/arrays.xml
+++ b/packages/apps/Settings/res/values/arrays.xml
@@ -46,6 +46,7 @@
 
     <!-- Display settings.  The delay in inactivity before the screen is turned off. These are shown in a list dialog. -->
     <string-array name="screen_timeout_entries">
+        <item>Never</item>
         <item>15 seconds</item>
         <item>30 seconds</item>
         <item>1 minute</item>
@@ -57,6 +58,8 @@
 
     <!-- Do not translate. -->
     <string-array name="screen_timeout_values" translatable="false">
+        <!-- Do not translate. -->
+        <item>0</item>
         <!-- Do not translate. -->
         <item>15000</item>
         <!-- Do not translate. -->

详细说明

Setting UI

首先修改setting -> display -> sleep 菜单数组,增加Never选项

文件路径:packages/apps/Settings/res/values/arrays.xml

新增如下两行:

        <item>Never</item>
-----------------------------------------------
		<!-- Do not translate. -->
        <item>0</item>

image-20230804110656578

关闭息屏功能

文件路径:frameworks/base/packages/SettingsProvider/res/values/defaults.xml

修改def_screen_off_timeout 的值为 -1

    <!-- <integer name="def_screen_off_timeout">60000</integer> -->
    <integer name="def_screen_off_timeout">-1</integer>

image-20230804111137664

更改电源管理方案

文件路径:frameworks/base/services/core/java/com/android/server/power/PowerManagerService.java

getScreenOffTimeoutLocked 方法中添加如下语句:

    private int getScreenOffTimeoutLocked(int sleepTimeout) {
        int nosleep;    // 新增
        int timeout = mScreenOffTimeoutSetting;
        if (isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()) {
            timeout = Math.min(timeout, mMaximumScreenOffTimeoutFromDeviceAdmin);
        }
        if (mUserActivityTimeoutOverrideFromWindowManager >= 0) {
            timeout = (int)Math.min(timeout, mUserActivityTimeoutOverrideFromWindowManager);
        }
        if (sleepTimeout >= 0) {
            timeout = Math.min(timeout, sleepTimeout);
        }
        // 新增判断开始
        nosleep = mScreenOffTimeoutSetting;
        if(nosleep == 0) {
            nosleep = mMaximumScreenOffTimeoutFromDeviceAdmin ;
            return Math.max(nosleep, mMaximumScreenOffTimeoutFromDeviceAdmin);
        }
        // 新增判断结束
        return Math.max(timeout, mMinimumScreenOffTimeoutConfig);
    }

    private int getScreenDimDurationLocked(int screenOffTimeout) {
        return Math.min(mMaximumScreenDimDurationConfig,
                (int)(screenOffTimeout * mMaximumScreenDimRatioConfig));
    }

image-20230804111333989

标签:xml,msm8909,int,res,休眠,Setting,timeout,packages,Math
From: https://www.cnblogs.com/klelee/p/disable_sleep.html

相关文章

  • msm8909_MIPI转HDMI调试记录
    项目中需要把开发板的MIPI输出信号转换为HDMI和LVDS输出,使用龙迅的LT8912B进行转换。龙迅的FAE提供的资料相对来说还是比较少的。先简单的看一下吧:厂商资料寄存器配置该文件提供了对LT8912B初始化的寄存器配置。对于我们来说需要做的就是,写一个驱动,在开机的时候调用相关的函数,......
  • Maven配置中pom.xml和setting.xml之间的关系
    在日常的开发中,我们拿IDEA举例,一般会在电脑上自行下载安装Maven,然后在IDEA中配置我们安装的Maven路径,通过修改setting.xml文件,例如配置公共的镜像仓库地址,来提高依赖下载速率;或者配置内部私有的镜像仓库地址,来引入一些私有的依赖等等。1、如何从指定的镜像仓库下载依赖如下图在......
  • idea - 在setting 关闭 git Analyze code后 push 时自动开启 - 解决
    不要在setting里修改,需要在 这个齿轮中修改才生效 就这么奇怪 ......
  • TypeError: error setting argument 2 - writePointer: Bufferinstance expected as t
    electronffi调第三方动态库报“TypeError:errorsettingargument2-writePointer:Bufferinstanceexpectedasthirdargument”原因是我定义了一个结构体,调函数传参数需要传这个结构体的指针constec_image_t=Struct({。。。。})letimage_a=new......
  • android 不让系统休眠后会禁用我们的定时器
    Android不让系统休眠对定时器的影响在Android开发中,我们经常使用定时器来执行一些重复性的任务或者进行定时操作。然而,当设备进入休眠状态时,系统会尝试最大限度地节省电量,这就可能导致我们的定时器无法按预期工作。本文将探讨Android系统不允许休眠对定时器的影响,并提供一些解决方......
  • java线程休眠三秒钟
    如何在Java中实现线程休眠三秒钟简介在Java中,我们可以使用Thread.sleep()方法来实现线程的休眠。该方法可以使当前线程暂停执行一段指定的时间,以毫秒为单位。在本文中,我将向您展示如何使用Thread.sleep()方法在Java中实现线程休眠三秒钟。步骤以下是实现线程休眠三秒钟的步骤:......
  • Android settings开发
    AndroidSettings开发介绍在Android应用开发过程中,我们经常需要让用户在设置页面中进行一些个性化的配置。Android提供了一个SettingsAPI,使得开发者可以轻松地创建和管理应用的设置界面。本文将介绍如何使用Android的SettingsAPI来开发设置页面,并提供相关的代码示例。创建设置......
  • QSettings 蛋疼的General group
    General组是QSetting默认的group,如果你的conf/ini文件中使用了该组,请不要指定组名访问key如果要使用这个组名,请务必在前面加百分号% [General]device=siware_1[%General]xyz=abcd读出的结果("General/xyz","Server/baseUrl","Server/modelIdxAddr","device", 注......
  • M1/M2 芯片的 Mac Mini 如何阻止休眠
    MacMini出了M1M2芯片的产品。但是和以往不同,这次在首选项,节能里面,不再有以往的设置多久睡眠/休眠的地方了。找了一圈,谷歌百度都没有答案,全都是老款的Mac的设置。那我们使用阿里云盘下载很多内容时怎么办呢?别说阿里云盘里有设置:有传输任务时电脑不休眠。实测,这个选项在M1/M2芯......
  • k8s集群node NotReady处理流程-->kubelet状态error,并伴有报错:kubelet.service has mor
    k8s集群nodeNotReady处理流程-->kubelet状态error//20230712集群有节点NotReadykubelet状态error,并伴有报错:kubelet.servicehasmorethanoneExecStart=setting,whichisonlyallowedforType=oneshotservices.Refusing在此记录一下解决流程解决流程问题定位:使......