首页 > 解决方案 > 如何在三星 S20 FE 5G 上检测 Android 10 的电源模式

问题描述

我可以看到这款手机可以在设置->设备维护->电池->电源模式下手动选择“高性能”、“优化”、“中等省电”、“最大省电”。

但是,当我运行代码时:

    PowerManager powerManager = (PowerManager)getSystemService(Context.POWER_SERVICE);
    boolean powerSaveMode = powerManager.isPowerSaveMode();
    if (powerSaveMode)
        Toast.makeText(thisContext, "Power Saver Mode is on", Toast.LENGTH_SHORT).show();
    else
        Toast.makeText(thisContext, "Power Saver Mode is off", Toast.LENGTH_SHORT).show();

无论设置如何,它总是返回“省电模式关闭”。

这段代码在三星 S7(Android 8 api 25)上运行良好,所以我猜测“isPowerSaveMode()”不再是我应该用于 Q 的方法。

麻烦的是 - 我找不到任何文件告诉我现在使用什么。

当我尝试时:

    final String result = android.provider.Settings.System.getString(getContentResolver(), "psm_switch");
    Toast.makeText(thisContext, "psm_switch = " + result, Toast.LENGTH_SHORT).show();

它只返回“psm_switch = null”

非常感激地收到任何帮助。非常感谢托尼

感谢您的链接。我们有一个应用程序需要跟踪远程工作人员的生命迹象——它每 10 分钟记录一次 GPS 和加速度计。他们需要正确设置许多设置(如您提供给我们的链接),但经常出错。我正在尝试向应用程序添加一个状态屏幕,它将向他们回读所有可能导致他们的应用程序睡眠或无法收集/发送 gps 数据的设置。两个主要违规者是应用程序进行了功率优化,并且仅在应用程序正在使用时才授予位置权限。一般功率优化也是问题的候选者,我也试图报告这一点。但是,在 Android 10 下,似乎没有可检测的设置来指示是否有任何级别的省电 - 只有大约 10 个其他设置的集合。(如后台定位启用)

标签: androiddetectprogrammatically

解决方案


推荐阅读