Optimiza el consumo de energía de tu app

En este documento, se describen las prácticas recomendadas para optimizar el consumo de energía en una app de navegación para dispositivos móviles que compilas con el SDK de Navigation. Al mismo tiempo, se describen las compensaciones que se deben tener en cuenta cuando se usan estas prácticas. En particular, este documento abarca lo siguiente:

  • Fuentes de consumo de alta energía, clasificadas de mayor a menor.
  • Estrategias para optimizar el consumo de energía, en orden de importancia, a partir de la velocidad de fotogramas
  • Estrategias de usuarios finales para enseñarles a los usuarios de tu app cómo administrar el uso de sus dispositivos mientras navegan

¿Por qué debes optimizar tu app de navegación?

Según la situación, los usuarios de tu app pueden ejecutar guías de navegación durante períodos prolongados. Por ejemplo, el conductor y los servicios de mensajería pueden trabajar muchas horas y completar tareas en territorios desconocidos. En estos casos, dependen en gran medida de las indicaciones paso a paso en la app. Esto genera algunos problemas típicos:

  • Desabastecimiento de la batería y disponibilidad de cargadores. El uso intensivo de la navegación puede hacer que las baterías del dispositivo se agoten más rápido de lo esperado. Si bien muchos usuarios pueden solucionar este problema cargando su dispositivo en el vehículo, los conductores de dos ruedas no pueden hacerlo.
  • Limitación del dispositivo debido al calor. Incluso los usuarios que cargan continuamente sus dispositivos pueden experimentar problemas. Un alto consumo de energía durante períodos prolongados puede hacer que el dispositivo se caliente, lo que genera una limitación térmica y la posterior pérdida de rendimiento.

Las apps de navegación paso a paso dependen de funciones de gran consumo de energía, como la pantalla, el GPS y la comunicación de radio con torres de telefonía celular, por lo que una práctica recomendada es optimizar el uso de energía de tu app para dispositivos móviles. Además, debes considerar las necesidades de uso de energía de tu público objetivo para poder establecer las compensaciones adecuadas entre el rendimiento y la optimización del consumo de energía.

¿Qué consume más energía?

En esta sección, se dividen en dos categorías las actividades en la app asociadas con el alto consumo de energía:

  • Renderización de pantalla
  • Actualizaciones de ubicación

Renderización de pantalla

La renderización de la pantalla suele generar el mayor consumo de energía en las apps de navegación para dispositivos móviles. Cada vez que el dispositivo dibuja un mapa y otros elementos de la IU en la pantalla, se basa en el procesamiento de la GPU y la CPU. Del mismo modo, cuando el usuario deja esa pantalla encendida durante mucho tiempo, también consume más energía.

Hasta cierto punto, puedes esperar un alto consumo de energía por parte de los conductores o pasajeros que dependen de un mapa visible para navegar, en especial si usan la app de forma continua durante muchas horas. En este caso, la app también realiza una tasa de renderización más alta en la pantalla porque el mapa se actualiza en tiempo real. En algunos casos, la pantalla puede volver a dibujarse casi de forma continua, en especial cuando el usuario conduce de una ubicación a otra sin detenerse.

Actualizaciones de ubicación

Además de la renderización de la pantalla, otras dos actividades de navegación consumen energía del dispositivo:

  • Uso de GPS y torres de radioceldas
  • Actualizaciones y uso compartido de la ubicación, como para proporcionar una hora de llegada estimada o informar la posición de un vehículo en una flota

Tanto el GPS como la comunicación de radio móvil dependen de las operaciones de inicio que consumen mucha energía: el GPS debe encontrar satélites, y las radios celulares deben negociar con las torres y establecer una conexión. Por estos motivos, en esencia, se ejecutan de forma continua durante la navegación, aunque las radios celulares permanecen activas durante 20 a 30 segundos en un intento de minimizar los costos de inicio. El sistema operativo controla estas opciones de configuración, que no puedes configurar fácilmente en tu app.

Para las actualizaciones de ubicación, el consumo de energía varía en función de factores impredecibles. Por ejemplo, la distancia entre el dispositivo y la estación de base celular determina el consumo de energía, ya que el dispositivo usará la señal mínima necesaria para continuar con la navegación y evitar el cambio de torres. Por lo tanto, un dispositivo que navegue en un área con mala conectividad consumirá más energía que uno que esté cerca de una estación de base. Además, algunas apps pueden compartir actualizaciones de ubicación con un servicio central de administración de flotas y, por lo tanto, deberán comunicarse con un servidor para lograrlo.

Cómo optimizar el consumo de batería de tu app

El desafío para optimizar el uso de energía en las apps de navegación es que estas dependen en gran medida de los recursos que consumen mucha energía, lo que limita las opciones para mitigar el impacto sin realizar compensaciones, como restringir el uso de la pantalla. En esta sección, se proporciona una lista de enfoques que puedes adoptar para optimizar tu app, ordenados del más al menos impactante.

Cómo cambiar la velocidad de fotogramas

La pantalla actualiza lo que se muestra a una frecuencia conocida como velocidad de fotogramas. La velocidad de fotogramas suele medirse en fotogramas por segundo (FPS). Como la renderización de la pantalla usa mucha CPU o GPU, puedes reducir la velocidad de fotogramas para ahorrar energía.

Cuando se reduce la velocidad de fotogramas, la desventaja de la renderización de la pantalla puede parecer menos fluida, en especial si el mapa se actualiza con frecuencia. Esto puede resultar más evidente cuando se acerca el mapa para mostrar muchos detalles, cuando el usuario viaja a alta velocidad o cuando cambia de velocidad o dirección de manera significativa.

Consulta la sección Velocidad de fotogramas en la documentación para desarrolladores de Android Media Dev Center si quieres obtener más información para modificar estas velocidades.

Si bien no puedes controlar cómo el usuario final establece el brillo de la pantalla de su dispositivo ni durante cuánto tiempo mantiene la pantalla encendida, puedes proporcionar una opción de guía de navegación sin un mapa. Esto permitiría al usuario final elegir esa opción para conservar energía. Por ejemplo, si los conductores trabajan regularmente en el mismo vecindario, es posible que no necesiten orientación basada en mapas con tanta frecuencia. Es posible habilitar la navegación sin un mapa si configuras un destino y comienzas a usar las indicaciones en el SDK de Navigation, pero no muestras un mapa.

Para ocultar la IU de navegación, no agregues un objeto NavigationView ni SupportNavigationFragment. Si ya lo hiciste, quita el código que los agrega. El siguiente código se modifica desde la app de demostración para Android del SDK de Navigation y muestra el uso de comentarios para quitar el código que agrega la IU de navegación:

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

El SDK de Navigation seguirá actualizando las ubicaciones ajustadas de la ruta, la hora de llegada estimada y la distancia restante del recorrido, y tu app aún podrá suscribirse a todos los eventos generados por el SDK a medida que el conductor avance. Esto no es apropiado para todos los casos de uso y, por supuesto, no es un buen consejo en los casos en los que el conductor necesita ver el mapa y seguir las indicaciones visuales. En las siguientes capturas de pantalla, se muestra una comparación en paralelo de las opciones para activar o desactivar las vistas de mapa durante la navegación activa.

App de demostración que se ejecuta con la vista de mapa visible
Figura 1: Aplicación de demostración para iOS del SDK de Navigation que muestra la demostración de Data Back
App de demostración que se ejecuta sin vista de mapa visible.
Figura 2: App de demostración que se ejecuta sin una vista de mapa visible. Ten en cuenta que el tiempo y la distancia restantes, así como la ubicación ajustada a la ruta, siguen actualizándose.

Usa un diseño de mapa oscuro

Se recomienda diseñar el mapa de modo que se utilice un tema oscuro para reducir la cantidad de energía necesaria para renderizar el mapa en la pantalla.

El SDK de Navigation procesa sus mapas con el SDK de Google Maps para Android, que contiene opciones para diseñar en tu app cualquier vista de mapa que no sea de navegación. La vista de navegación también admite forzar el modo oscuro. Es posible que esto no afecte a todos los dispositivos de la misma manera debido a las diferencias en el tipo de pantalla, pero, en algunos casos, permita un ahorro potencial de energía. En un estudio reciente, se descubrió que la cantidad de energía que ahorra el modo oscuro en algunas pantallas depende del brillo de la pantalla al principio. Por ejemplo, el modo oscuro ahorra más energía en pantallas con brillo completo que en pantallas cuyo brillo ya está ajustado al 30-50% del máximo. Es importante tener esto en cuenta cuando uses el modo oscuro para tus apps, ya que el ahorro de energía dependerá de cómo el usuario final configure el brillo de la pantalla.

Si deseas obtener más información para modificar la IU de Navigation, consulta Cómo modificar la IU de Navigation.

Captura de pantalla del SDK de Navigation que se ejecuta en un iPhone 15 Pro con un diseño de mapa oscuro.
Figura 3: SDK de Navigation configurado con un diseño de mapa oscuro

Si deseas crear un diseño oscuro para tu mapa, usa un objeto MapStyleOptions con un diseño JSON que represente el diseño de mapa oscuro que elegiste. Los diseños JSON heredados se pueden crear con el editor de diseño heredado que se encuentra en https://mapstyle.withgoogle.com/.

Cambiar la frecuencia de actualización de la ubicación del GPS

Cuando consideres el uso de energía de las actualizaciones de ubicación enviadas desde el dispositivo, concéntrate más en la frecuencia de las actualizaciones de ubicación que en la cantidad de datos enviados durante la transmisión.

Esto no es algo que puedas controlar directamente en el SDK de Navigation, pero si tu app para Android solicita la ubicación de forma independiente, deberías considerar los consejos que se indican en el artículo Cómo optimizar la ubicación para la batería en la documentación para desarrolladores de Android. Se aplica el mismo consejo cuando se usan fuentes de ubicación que no son GPS (móvil y Wi-Fi).

Educa a tus usuarios

Es posible que los usuarios de tu app quieran saber cómo optimizar su consumo de energía. Para ayudarlos a reducir el consumo de energía en sus apps, recomienda a los usuarios que hagan lo siguiente:

  • Bloquear el teléfono
  • Coloca la app de navegación en segundo plano.
  • Si es posible, utiliza la navegación sin un mapa
  • Reducir el brillo de la pantalla, ya sea usando el modo oscuro para las pantallas OLED y AMOLED, o habilitando el brillo automático
  • Mantén el dispositivo fresco
  • Conéctate a una red Wi-Fi en el vehículo si está disponible
Consulta Cómo aprovechar al máximo la duración de la batería de tu dispositivo Android para obtener consejos de usuario final sobre cómo extender la duración de batería en Android. Recuerda que este consejo incluye acciones que podrían deteriorar la eficacia de una app de navegación, como se explica en Cómo optimizar el uso de energía de tu app en esta guía.

Mide el consumo de energía

Puedes utilizar herramientas de nivel profesional para medir el consumo de energía, pero obtenerlas suele ser difícil o costoso. Las herramientas de generación de perfiles del IDE y las apps, como el Generador de perfiles de energía en Android Studio y el panel de uso de batería del organizador de Xcode miden el consumo de energía, pero puede resultar difícil quitar el efecto de los procesos en segundo plano o establecer un modelo de referencia de rendimiento para compararlo. En algunos casos, las restricciones de dispositivos pueden impedir el acceso a los datos necesarios.

Puedes usar hardware de supervisión de energía con propósito especial y modificar la configuración de la conexión de la batería. Además, existen productos y servicios comerciales que te ayudarán a hacerlo. Ten en cuenta que modificar los dispositivos de esta manera podría anular la garantía del dispositivo.