Я пытаюсь определить, находится ли устройство Android в режиме энергосбережения. Я использую популярный метод, который работает на большинстве устройств, но я заметил, что на 2 устройствах xiaomi возвращается, что режим энергосбережения отключен, что неправильно.
public static PowerSaveState getPowerSaveState(@NonNull Context context) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N)
return PowerSaveState.IRRELEVANT_OLD_ANDROID_API;
final PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (pm == null) {
Crashlytics.logException(new Exception("Can't get power save state"));
return PowerSaveState.ERROR_GETTING_STATE;
}
return pm.isPowerSaveMode() ? PowerSaveState.ON : PowerSaveState.OFF;
}
Я обнаружил еще один метод, который люди рекомендуют
final String result = Settings.Global.getString(context.getContentResolver(),"low_power");
// final String result = Settings.System.getString(context.getContentResolver(), "psm_switch");
WriteLog.print("Debug" + "Powersaving active: " + TextUtils.equals(result, "1"), context);
Но все равно возвращается, что устройство не находится в режиме энергосбережения. (xiaomi android 9)