3 votos

Permite la vibración y los servicios de ubicación mientras estás en modo ahorrador de batería

Me gusta utilizar el ahorro de batería en mi teléfono Android, ya que prolonga considerablemente la duración de la batería. Sin embargo, hay una aplicación que uso y me gustaría eximir de dos de las cosas que el ahorro de batería desactiva - la vibración y los servicios de ubicación.

No me importa el uso de la batería para esta única aplicación, pero quiero restringir que todas las otras aplicaciones utilicen la batería.

¿Cómo puedo lograr esto?

5voto

Andrew T. Puntos 2107

La vibración y el GPS se consideran servicios del sistema, no aplicaciones. Por lo tanto, no pueden excluirse en la configuración habitual cuando el Ahorro de batería está habilitado. Sin embargo, desde Android 8.0 Oreo, es posible ajustar algunas configuraciones para el Ahorro de batería.

Esto está relacionado con la configuración global de BATTERY_SAVER_CONSTANTS que se puede modificar a través de ADB.

/**
         * Ajustes específicos del Ahorro de batería
         * Esto se codifica como una lista de clave=valor, separada por comas. Ej:
         *
         * "vibration_disabled=true,adjust_brightness_factor=0.5"
         *
         * Las siguientes claves son compatibles:
         *
         *          * advertise_is_enabled              (boolean)
         * datasaver_disabled                (boolean)
         * enable_night_mode                 (boolean)
         * launch_boost_disabled             (boolean)
         * vibration_disabled                (boolean)
         * animation_disabled                (boolean)
         * soundtrigger_disabled             (boolean)
         * fullbackup_deferred               (boolean)
         * keyvaluebackup_deferred           (boolean)
         * firewall_disabled                 (boolean)
         * gps_mode                          (int)
         * adjust_brightness_disabled        (boolean)
         * adjust_brightness_factor          (float)
         * force_all_apps_standby            (boolean)
         * force_background_check            (boolean)
         * optional_sensors_disabled         (boolean)
         * aod_disabled                      (boolean)
         * quick_doze_enabled                (boolean)
         * 
         * @hide
         * @see com.android.server.power.batterysaver.BatterySaverPolicy
         */
        @UnsupportedAppUsage
        @TestApi
        public static final String BATTERY_SAVER_CONSTANTS = "battery_saver_constants";

Para los posibles valores enteros de gps_mode:

/**
     * Ya sea que los proveedores de ubicación no deben verse afectados por el ahorro de batería,
     * o el ahorro de batería está desactivado.
     */
    public static final int LOCATION_MODE_NO_CHANGE = 0;

    /**
     * En este modo, el proveedor de ubicación basado en GPS debe estar desactivado cuando el ahorro de batería está activado y
     * el dispositivo no es interactivo.
     */
    public static final int LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF = 1;

    /**
     * Todos los proveedores de ubicación deben estar desactivados cuando el ahorro de batería está activado y
     * el dispositivo no es interactivo.
     */
    public static final int LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF = 2;

    /**
     * En este modo, todos los proveedores de ubicación estarán disponibles, pero las correcciones de ubicación
     * solo se proporcionarán a aplicaciones en primer plano.
     */
    public static final int LOCATION_MODE_FOREGROUND_ONLY = 3;

    /**
     * En este modo, la ubicación no se apagará, pero el LocationManager reducirá todas las
     * solicitudes a proveedores cuando el dispositivo no esté interactivo.
     */
    public static final int LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF = 4;

Como se indica en XDA Developers, Cómo personalizar el modo Ahorro de batería en Android 8.0 Oreo:

  1. Instalar ADB y controladores USB si es necesario.
  2. Conectar el dispositivo Android a la PC con USB y esperar hasta que el dispositivo sea detectado
  3. Abrir una terminal y escribir adb devices para asegurarse de que ADB lo detecta.
  4. Escribir adb shell
  5. Decidir qué valores se quieren cambiar. Se admiten múltiples claves de entrada con separación por comas. Para esta pregunta específica: vibration_disabled=false,gps_mode=0
  6. Escribir settings put global battery_saver_constants . Tenga en cuenta que el cambio es permanente, por lo que para deshacerlo, el usuario debe ingresar manualmente los valores opuestos.

En dispositivos con root, también es posible ejecutar el comando settings directamente desde el dispositivo utilizando aplicaciones de terminal como Termux.

0 votos

Esto es muy útil, ¡gracias! Creo que para mi uso, gps_mode=3 funcionaría bien, ya que mi aplicación ejecuta un servicio que está en primer plano solo para eventos de GPS cuando yo le indico que se ejecute, mientras que otras aplicaciones que se ejecutan en segundo plano serán denegadas y no usarán batería adicional.

0 votos

He probado esto y funciona perfectamente. Agradezco esta increíble respuesta y voy a esperar para aceptarla hasta que pueda darte algunos puntos de recompensa. :-)

0 votos

Después de correr con esto durante más de un día, noté que mi aplicación había dejado de producir vibraciones cuando la pantalla estaba apagada en modo ahorro de batería. Luego verifiqué el GPS y ya no se bloqueaba ni informaba posiciones de la misma manera. Pero volví a conectar el USB y volví a ejecutar el comando adb y ahora está funcionando de nuevo. ¿Quizás sea menos permanente de lo que pensabas? No instalé nada como actualizaciones en el ínterin.

1voto

Morrison Chang Puntos 286

Suponiendo que tienes un Pixel 3XL y estás usando el ahorro de batería a nivel de sistema,

Desde: https://dontkillmyapp.com/google

Pie y pre-Pie

Si experimentas problemas de procesamiento en segundo plano, en general es una buena idea hacer que tu aplicación no esté optimizada para la batería para asegurarte de que tenga la libertad que necesita para funcionar en segundo plano.

Para eso:

  • Ve a Configuración > Aplicaciones > Tu app > Avanzado > Batería > Optimización de batería
  • Cambia la vista a Todas las apps
  • Busca tu app
  • Selecciona No optimizada

De los comentarios:

mi app ya no está optimizada, pero la vibración no funciona ni el GPS con la pantalla apagada cuando el ahorro de energía está activado.

Así como se indica en: https://support.google.com/pixelphone/answer/6187458?hl=en

Qué sucede cuando el ahorro de energía está activado:

  • Las aplicaciones solo actualizan su contenido, como correos electrónicos o noticias, cuando miras la app.
  • Los servicios de ubicación se detienen cuando la pantalla está apagada.
  • Las aplicaciones dejan de hacer cosas en segundo plano, a menos que desactives la optimización de batería.
  • Tu teléfono deja de escuchar "Ok Google." En su lugar, debes apretar tu teléfono o tocar el icono del Asistente.
  • Se activa el tema oscuro.
  • Tu teléfono y las notificaciones pueden retrasarse.

Por lo tanto, que tu app no reciba servicios de GPS/ubicación está cubierto por el comportamiento del ahorro de energía, en cuanto a por qué la vibración no funciona no puedo decirlo sin saber por qué ocurre la vibración a menos que esté relacionada con alguno de los elementos anteriores como la ubicación o un proceso en segundo plano.

0 votos

Mi aplicación no está optimizada, pero la vibración no funciona, al igual que el GPS, cuando la pantalla está apagada y el modo de ahorro de energía está activado.

0 votos

@Michael Ver actualización de la respuesta.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X