es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Android: ¿Cómo detectar el “modo ahorro de energía” en dispositivos Huawei u otros?

Estoy realizando algunas optimizaciones en mi aplicación para dispositivos con el modo de ahorro de energía habilitado.

Aquí está el código de ejemplo:

import android.content.Context;
import android.os.PowerManager;
import android.provider.Settings;

//para MIUI
private boolean isPowerSaveModeMiui(Context context) throws Settings.SettingNotFoundException{
//disponible para el modo de ahorro de energía normal o ultra
//En pruebas recientes, miui utiliza PowerManager.isPowerSaveMode() en Android S
    return Settings.System.getInt(
        context.getContentResolver(),
        "POWER_SAVE_MODE_OPEN"
    )==1;
}

//para Huawei (EMUI/HARMONY)
private boolean isPowerSaveModeHuawei(Context context) throws Settings.SettingNotFoundException{
    //esto solo está disponible para el modo de ahorro de energía normal
    //cuando el modo de ahorro de energía ultra está habilitado o el modo de ahorro de energía está desactivado, devuelve 1
    return Settings.System.getInt(
        context.getContentResolver(),
        "SmartModeStatus"
    )==4;
    //No puedo encontrar documentación al respecto
}

//para otros sistemas con api21+
private boolean isPowerSaveMode(Context context){
    return ((PowerManager)context.getSystemService("power"))
        .isPowerSaveMode();
}

Plataforma de depuración en la nube de Huawei\
https://developer.huawei.com/consumer/cn/console#/openCard/AppService/1045


Salida de registro\
habilitar el modo de ahorro de energía normal\
modo de ahorro de energía activado: "SmartModeStatus" es 4

desactivar el modo de ahorro de energía normal\
modo de ahorro de energía desactivado: "SmartModeStatus" es 1

habilitar el modo de ahorro de energía ultra\
"SmartModeStatus" establecido en 1\
Se envió un intento, pero no sé si es público.


Entonces, ¿cómo puedo detectar el “modo de ahorro de energía ultra” en dispositivos Huawei con el método Settings.System.getInt (o su propia API)?\
Por cierto, ¿Sony/Samsung u otros tienen sus propiedades propias para esto?\
Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para detectar el “Modo de ahorro de energía ultra” en dispositivos Huawei utilizando el método Settings.System.getInt, puedes probar el siguiente código:

    //para Huawei (EMUI/HARMONY)
    private boolean isUltraPowerSaveModeHuawei(Context context) throws Settings.SettingNotFoundException {
        //cuando el modo de ahorro de energía ultra está habilitado, SmartModeStatus se establecerá en 1
        //cuando el modo de ahorro de energía ultra está deshabilitado, SmartModeStatus se establecerá en 4
        return Settings.System.getInt(
                context.getContentResolver(),
                "SmartModeStatus"
        ) == 1;
    }
    

    En cuanto a otros dispositivos, es mejor verificar su documentación o APIs para ver si tienen propiedades o métodos similares para detectar diferentes modos de ahorro de energía.

Comments are closed.