Android13禁用省电模式

1、打开/packages/apps/Settings/res/xml/battery_saver_settings.xml,找到

<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res-auto"
    android:title="@string/battery_saver"
    settings:keywords="@string/keywords_battery_saver">

    <com.android.settingslib.widget.MainSwitchPreference
        android:order="-100"
        android:key="battery_saver"
        android:title="@string/battery_saver_master_switch_title"
        settings:controller="com.android.settings.fuelgauge.batterysaver.BatterySaverButtonPreferenceController"/>

.......................................
</PreferenceScreen>

2、找到com.android.settings.fuelgauge.batterysaver.BatterySaverButtonPreferenceController对应的文件

/packages/apps/Settings/src/com/android/settings/fuelgauge/batterysaver/BatterySaverButtonPreferenceController.java

在displayPreference方法最后增加代码:

 @Override
    public void displayPreference(PreferenceScreen screen) {
        super.displayPreference(screen);
        mPreference = screen.findPreference(getPreferenceKey());
        mPreference.addOnSwitchChangeListener(this);
        mPreference.updateStatus(isChecked());
        //add code .....
        String custom=SystemProperties.get("persist.sys.custom","").trim();        
        if (custom.length()!=0){
        switch (custom){
               case "XXX1":           
               case "XXX2":
                 if(preference != null ){
                     preference.setEnabled(false);
                 }
                     return;
                default:
                     break;
            }
        //add end

    }

persist.sys.custom是客制化用户名称,根据名称判断是否enable省电开关。

3、省电开关在在充电状态也会修改开关状态,原因是BatterySaverButtonPreferenceController继承了一个广播回调BatterySaverReceiver.BatterySaverListener:

public class BatterySaverButtonPreferenceController extends
        TogglePreferenceController implements OnMainSwitchChangeListener, LifecycleObserver,
        OnStart, OnStop, BatterySaverReceiver.BatterySaverListener {
     ....................................
}

打开BatterySaverReceiver,找到广播接收方法:

  @Override
    public void onReceive(Context context, Intent intent) {      
        String action = intent.getAction();
        if (PowerManager.ACTION_POWER_SAVE_MODE_CHANGED.equals(action)) {
            if (mBatterySaverListener != null) {
                mBatterySaverListener.onPowerSaveModeChanged();
            }
        } else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {           
            if (mBatterySaverListener != null) {
                final boolean pluggedIn = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
                mBatterySaverListener.onBatteryChanged(pluggedIn);
            }
        } else if (PowerManagerEx.ACTION_POWEREX_SAVE_MODE_CHANGED.equals(action)) {
            if (mBatterySaverListener != null) {
                final boolean isUltraPowerSaveMode = intent.getIntExtra(PowerManagerEx.EXTRA_POWEREX_SAVE_MODE,
                        MODE_PERFORMANCE) == MODE_ULTRASAVING;
                mBatterySaverListener.onUltraPowerSaveModeChanged(isUltraPowerSaveMode);
            }
        }
    }
   ..................................
    public interface BatterySaverListener {
        void onPowerSaveModeChanged();
        void onBatteryChanged(boolean pluggedIn);
        void onUltraPowerSaveModeChanged(boolean isUltraPowerSaveMode);
    }

当插拔充电线时,mBatterySaverListener.onBatteryChanged(pluggedIn)通知子类,修改BatterySaverButtonPreferenceController的onBatteryChanged方法,在方法前面增加:

public void onBatteryChanged(boolean pluggedIn) {
        //add code .....
        String custom=SystemProperties.get("persist.sys.custom","").trim();        
        if (custom.length()!=0){
        switch (custom){
               case "XXX1":           
               case "XXX2":
                 if(preference != null ){
                     preference.setEnabled(false);
                 }
                     return;
                default:
                     break;
            }
        //add end     
        if (mPreference != null) {
            mPreference.setEnabled(!pluggedIn);
        }
    }

4、打开

/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java

参考

展锐Android13禁止用户使用超级省电-CSDN博客

修改SuperBatteryTile.java的方法,修改BatterySaverTile.java,在下拉状态栏也禁用省电状态。

此压缩包包含了本毕业设计项目的完整内容,具体包括源代码、毕业论文以及演示PPT模板。 开发语言:Java 框架:SSM(Spring、Spring MVC、MyBatis) JDK版本:JDK 1.8 或以上 开发工具:Eclipse 或 IntelliJ IDEA Maven版本:Maven 3.3 或以上 数据库:MySQL 5.7 或以上 项目配置完成后即可运行,若需添加额外功能,可根据需求自行扩展。 运行条件 确保已安装 JDK 1.8 或更高版本,并正确配置 Java 环境变量。 使用 Eclipse 或 IntelliJ IDEA 打开项目,导入 Maven 依赖,确保依赖包下载完成。 配置数据库环境,确保 MySQL 服务正常运行,并导入项目中提供的数据库脚本。 在 IDE 中启动项目,确认所有服务正常运行。 主要功能简述: 请假审批流程:系统支持请假申请的逐级审批,包括班主任审批和院系领导审批(针对超过三天的请假)。学生可以随时查看请假申请的审批进展情况。 请假记录管理:系统记录学生的所有请假记录,包括请假时间、原因、审批状态及审批意见等,供学生和审批人员查询。 学生在线请假:学生可以通过系统在线填写请假申请,包括请假的起止日期和请假原因,并提交给班主任审批。超过三天的请假需经班主任审批后,再由院系领导审批。 出勤信息记录:任课老师可以在线记录学生的上课出勤情况,包括迟到、早退、旷课和请假等状态。 出勤信息查询:学生、任课老师、班主任、院系领导和学校领导均可根据权限查看不同范围的学生上课出勤信息。学生可以查看自己所有学年的出勤信息,任课老师可以查看所教班级的出勤信息,班主任和院系领导可以查看本班或本院系的出勤信息,学校领导可以查看全校的出勤信息。 出勤统计与分析:系统提供出勤统计功能,可以按班级、学期等条件统计学生的出勤情况,帮助管理人员了解学生的出勤状况。 用户管理:系统管理员负责管理所有用户信息,包括学生、任课老师、班主任、院系领导和学校领导的账号创建、权限分配等。 数据维护:管理员可以动态更新和维护系统所需的数据,如学生信息、课程安排、学年安排等,确保系统的正常运行。 系统配置:管理员可以对系统进行配置,如设置数据库连接参数、调整系统参数等,以满足不同的使用需求。 身份验证:系统采用用户名和密码进行身份验证,确保只有授权用户才能访问系统。不同用户类型(学生、任课老师、班主任、院系领导、学校领导、系统管理员)具有不同的操作权限。 权限控制:系统根据用户类型分配不同的操作权限,确保用户只能访问和操作其权限范围内的功能和数据。 数据安全:系统采取多种措施保障数据安全,如数据库加密、访问控制等,防止数据泄露和非法访问。
### 回答1: 如果你想在 AOSP 上修改开启省电模式而不开启深色模式,你可以这样做: 1. 修改省电模式的开关状态。你可以使用 Settings API 来控制省电模式的开关。你可以使用以下代码来打开省电模式: ``` PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); powerManager.setPowerSaveMode(true); ``` 2. 禁用深色模式。你可以使用以下代码来禁用深色模式: ``` getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); ``` 请注意,上述代码只能在你的应用内部使用,并且需要在 Android 6.0(API 级别 23)及更高版本中使用。 希望这些信息能帮到你! ### 回答2: AOSP(Android开源项目)是一个开源的移动操作系统,它允许用户二次开发和自定义。其中省电模式和深色模式是其提供的两种常见的功能。 省电模式是一种能够降低设备耗电量的功能,通常通过限制应用程序的背景活动和调整系统设置来实现。当开启省电模式时,设备的性能可能会受到一定程度的限制,但使用时间能够显著延长。 深色模式是一种改变应用程序和系统界面颜色为暗色调的功能。通过使用黑色或深色背景,深色模式可以降低设备的亮度和能耗,尤其是在使用有机发光二极管(OLED)屏幕的设备上效果更好。 在AOSP中,开启或关闭省电模式和深色模式是两个相互独立的功能。因此,即使开启了省电模式,不会自动开启深色模式。用户可以根据自己的需求来选择开启或关闭这两个功能。 如果用户想要同时开启省电模式和深色模式,需要自定义或修改AOSP的代码。这涉及到对系统设置的调整和自定义编程,以实现两个功能的同步开启。 总而言之,AOSP默认情况下,开启省电模式不会自动开启深色模式。如果用户想要同时享受这两种功能,需要进行相应的定制和二次开发。 ### 回答3: AOSP是指Android开源项目(Android Open Source Project),它提供了一套开放的代码和软件工具,供开发者使用和修改。在AOSP中,修改开启省电模式但不开启深色模式需要进行以下步骤。 首先,了解省电模式和深色模式之间的关系。省电模式是一种能够减少设备功耗的功能,在开启省电模式时会降低设备的性能以节约电量。而深色模式是一种界面显示模式,它改变了应用程序和设备的背景和前景颜色,使用较暗的色调,以减少屏幕显示时的能耗。 针对AOSP,通过对电源管理源码的修改来实现同时开启省电模式但不开启深色模式。首先,可以修改与省电模式相关的代码,将其与深色模式的开关进行解耦。这样一来,在开启省电模式的同时,不会自动开启深色模式。 其次,可以修改设备主题和样式的相关代码,以确保默认主题和样式不是深色模式。通常,深色模式是由主题和样式设置来定义的。通过更改默认主题和样式,我们可以确保在开启省电模式时不会自动开启深色模式。 最后,重新编译和构建AOSP源代码,将修改后的代码部署到目标设备上。通过这些修改,我们可以在开启省电模式时避免自动开启深色模式,从而满足题目要求。 需要注意的是,以上是一个大致的解决思路,具体的实施细节可能因为不同的AOSP版本和设备而有所不同。实现这个需求还需要对AOSP的具体代码进行深入研究和理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值