Android15 RK3588 修改默认不锁屏不休眠

对于非手机设备,有时候用户需要不锁屏不休眠,源码修改方式如下:

1.在frameworks\base\packages\SettingsProvider\res\values\defaults.xml里面

<bool name="def_lockscreen_disabled">true</bool>

<integer name="def_screen_off_timeout">2147483647</integer>

<integer name="def_sleep_timeout">-1</integer>

2.在frameworks\base\core\res\res\values\config.xml里面

<bool name="config_disableLockscreenByDefault">true</bool>

修改了这几个属性值后,系统开机后一般就不会进入锁屏和灭屏状态了。

注意:一般在RK的源码里面,通常会有overlay方式,有些时候修改了frameworks里面的def_screen_off_timeout值发现没有作用,所以需要修改overlay里面的配置,一般overlay路径如下:

device\rockchip\common\overlay\frameworks\base\packages\SettingsProvider\res\values\defaults.xml

device\rockchip\common\overlay_screenoff\frameworks\base\packages\SettingsProvider\res\values\defaults.xml

device\rockchip\rk35xx\overlay\frameworks\base\packages\SettingsProvider\res\values\defaults.xml

需要修改这里面的overlay配置这样修改就会生效了。

3.最暴力的方式修改:

直接修改frameworks\base\services\core\java\com\android\server\power\PowerManagerService.java

把系统休眠直接给禁止掉,这种情况适用于不带电池的设备,且自定义了launcher,不希望进入系统锁屏界面。修改如下:

在void readConfigurationLocked()方法里面:

java 复制代码
 // mMinimumScreenOffTimeoutConfig = resources.getInteger(
        //         com.android.internal.R.integer.config_minimumScreenOffTimeout);
        
        mMinimumScreenOffTimeoutConfig = 2147483600L;

直接把mMinimumScreenOffTimeoutConfig修改为最大,在goToSleepInternal方法里面直接return掉休眠功能:

java 复制代码
private void goToSleepInternal(IntArray groupIds, long eventTime, int reason, int flags) {

        boolean isExit = true;
        if(isExit)
            return;

        final long now = mClock.uptimeMillis();
        if (eventTime > now) {
            Slog.e(TAG, "Event time " + eventTime + " cannot be newer than " + now);
            throw new IllegalArgumentException("event time must not be in the future");
        }

        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DEVICE_POWER,
                /* message= */ null);

        boolean isNoDoze = (flags & PowerManager.GO_TO_SLEEP_FLAG_NO_DOZE) != 0;
        int uid = Binder.getCallingUid();
        final long ident = Binder.clearCallingIdentity();
        try {
            synchronized (mLock) {
                for (int i = 0; i < groupIds.size(); i++) {
                    int groupId = groupIds.get(i);
                    PowerGroup powerGroup = mPowerGroups.get(groupId);
                    if (powerGroup == null) {
                        throw new IllegalArgumentException("power group(" + groupId
                                + ") doesn't exist");
                    }
                    if ((flags & PowerManager.GO_TO_SLEEP_FLAG_SOFT_SLEEP) != 0) {
                        if (mFoldGracePeriodProvider.isEnabled()) {
                            if (!powerGroup.hasWakeLockKeepingScreenOnLocked()) {
                                mNotifier.showDismissibleKeyguard();
                            }
                            continue; // never actually goes to sleep for SOFT_SLEEP
                        } else {
                            if (powerGroup.hasWakeLockKeepingScreenOnLocked()) {
                                continue;
                            }
                        }
                    }
                    if (isNoDoze) {
                        sleepPowerGroupLocked(powerGroup, eventTime, reason, uid);
                    } else {
                        dozePowerGroupLocked(powerGroup, eventTime, reason, uid);
                    }
                }
            }
        } finally {
            Binder.restoreCallingIdentity(ident);
        }
    }

变成永不休眠了,因为在Android15上面自定义launcher后容易出现进入系统锁屏屏保界面。

相关推荐
一条破秋裤2 分钟前
Linux 线程分离与主动取消:pthread_detach、pthread_cancel
java·linux·jvm
茉莉玫瑰花茶10 分钟前
OpenGL [ 基础概念 ]
java·前端·数据库
周杰偷奶茶14 分钟前
【Java】运算符指南
java·开发语言
随性而行36017 分钟前
企业微信二次开发如何接入大模型工具?API接口实现智能任务调用的技术思路
java·前端·人工智能·python·微信·机器人·企业微信
1570925113427 分钟前
Android 架构模式详解:从 MVC、MVP 到 MVVM
android·架构·mvc
Json____1 小时前
基于 Spring Boot + Vue3 的在线考试管理系统实战
java·spring boot·后端·it学习·wwwoop.com
weixin_537590451 小时前
《Spring快速入门到精通》- 实例1.1
java·spring·intellij-idea
jason成都1 小时前
RTKLIB Java版:从C到Java的精密定位引擎,SPP/RTK/PPP/PPP-AR/PPP-RTK全栈实现
java·gnss·rtklib
Data_Journal1 小时前
如何在 Java 中使用 Selenium 绕过 CAPTCHA
java
Sam_Deep_Thinking1 小时前
如何理解java的信号量
java·后端·面试·程序员