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, describe las compensaciones que se deben tener en cuenta cuando se emplean estas prácticas. En particular, en este documento, se abarca lo siguiente:
- Fuentes de alto consumo de 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ñar a los usuarios de tu app cómo administrar su uso del dispositivo mientras navegan.
¿Por qué debes optimizar tu app de navegación?
Según su situación, los usuarios de tu app pueden ejecutar guías de navegación durante períodos prolongados. Por ejemplo, los repartidores y los repartidores pueden trabajar largas horas y completar asignaciones en territorios desconocidos. En estos casos, dependen en gran medida de las indicaciones paso a paso que se ofrecen en la app. Esto genera algunos problemas habituales:
- Agotamiento 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 abordar esto cargando su dispositivo en el vehículo, los conductores de vehículos de dos ruedas no pueden hacerlo.
- Limitación del dispositivo debido al calor Incluso los usuarios que cargan continuamente su dispositivo pueden experimentar problemas. El alto consumo de energía durante períodos prolongados puede hacer que el dispositivo se caliente, lo que resulta en un límite térmico y la posterior pérdida de rendimiento.
Las apps de navegación paso a paso dependen de funciones que consumen mucha energía, como la pantalla, el GPS y la comunicación por radio con torres de telefonía celular, por lo que se recomienda optimizar el consumo de energía de tu app para dispositivos móviles. Además, debes considerar las necesidades de consumo de energía de tu público objetivo para que puedas realizar 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 las actividades en la app asociadas con un alto consumo de energía en dos categorías:
- Renderización de pantalla
- Actualizaciones de ubicación
Renderización de pantalla
Por lo general, la renderización de pantalla genera 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.
En cierta medida, puedes esperar un alto consumo de energía de los conductores o pasajeros que confían en 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, ya que el mapa se actualiza en tiempo real. En algunos casos, la pantalla se puede volver a dibujar casi continuamente, en especial cuando el usuario conduce de una ubicación a otra sin parar.
Actualizaciones de ubicación
Además de la renderización de la pantalla, otras dos actividades de navegación consumen energía del dispositivo:
- Torre de telefonía celular y uso de GPS
- Actualizaciones y uso compartido de la ubicación, por ejemplo, para proporcionar una hora de llegada estimada o informar las posiciones de un vehículo en una flota.
El GPS y la comunicación de radio móvil dependen de operaciones de inicio que consumen mucha energía: el GPS debe encontrar satélites, y las radios móviles 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 móviles permanecen activas durante 20 a 30 segundos en un intento de minimizar los costos de inicio. El sistema operativo controla estos parámetros de configuración que no puedes establecer con facilidad en tu app.
Para las actualizaciones de ubicación, el uso de energía varía en función de factores impredecibles. Por ejemplo, la distancia entre el dispositivo y la estación de base de telefonía celular determina el uso de energía, ya que el dispositivo usará la señal mínima necesaria para continuar con la navegación y evitar cambiar 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 base. Además, algunas apps pueden compartir actualizaciones de ubicación con un servicio de administración de flota central y, por lo tanto, necesitarán comunicarse con un servidor para lograrlo.
Optimiza el uso de energí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 desventajas, como restringir el uso de la pantalla. En esta sección, se proporciona una lista de los enfoques que puedes adoptar para optimizar tu app, en orden de impacto, de mayor a menor.
Cómo cambiar la velocidad de fotogramas
La pantalla actualiza lo que muestra a una frecuencia conocida como velocidad de fotogramas. La velocidad de fotogramas se suele medir en fotogramas por segundo (FPS). Como el procesamiento de la pantalla utiliza mucha CPU o GPU, puedes reducir la velocidad de fotogramas para ahorrar consumo de energía.
La compensación cuando se reduce la velocidad de fotogramas es que 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 un alto nivel de detalle, cuando el usuario viaja a alta velocidad o cuando cambia bastante la velocidad o la dirección.
En dispositivos iOS, el SDK de Maps para iOS expone la propiedad preferredFrameRate para controlar la velocidad de fotogramas. En la siguiente tabla, se muestran los valores de enumeradorGMSFrameRate
que puedes ajustar:
|
Usa la velocidad de fotogramas mínima para conservar el uso de batería. |
|
Usar una velocidad de fotogramas mediana para lograr una renderización más fluida y conservar los ciclos de procesamiento |
|
Usa la velocidad máxima de fotogramas de un dispositivo. Para dispositivos de gama baja, es de 30 FPS. Para dispositivos de alta gama, es de 60 FPS. |
Como referencia, consulta GMSFrameRate en la documentación del SDK de Google Navigation para iOS.
Cómo navegar sin un mapa
Si bien no puedes controlar cómo establece el usuario final el brillo de la pantalla de su dispositivo ni durante cuánto tiempo permanece encendida, puedes ofrecer 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. Para habilitar la navegación sin un mapa, configura un destino y, luego, inicia la guía en el SDK de Navigation, pero no muestra un mapa.
Agrega una línea de código para ocultar GMSMapView:
mapView.isHidden = true
El SDK de Navigation seguirá actualizando las ubicaciones ajustadas de la ruta, la hora de llegada estimada y la distancia restante del viaje, y tu app podrá suscribirse a todos los eventos que genere 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 cómo activar o desactivar las vistas de mapa durante la navegación activa.
Usa un diseño de mapa oscuro
Considera modificar el diseño del mapa para que use un tema oscuro a fin de reducir la cantidad de energía necesaria para renderizar el mapa en la pantalla.
El SDK de Navigation renderiza sus mapas con el SDK de Google Maps para iOS, que contiene opciones para definir el diseño de cualquier vista de mapa que no sea de navegación en tu app. La vista de navegación también admite forzar el modo oscuro. Es posible que no afecte de la misma manera a todos los dispositivos debido a las diferencias en el tipo de pantalla, pero permite un posible ahorro de energía en algunos casos. En un estudio reciente, se descubrió que la cantidad de energía que ahorra el modo oscuro en algunas pantallas depende del brillo inicial de la pantalla. Por ejemplo, el modo oscuro ahorra más energía en pantallas configuradas con brillo completo que en aquellas cuyo brillo ya se ajustó entre un 30% y un 50% del máximo. Es importante tener esto en cuenta cuando uses el modo oscuro en tus apps, ya que el ahorro de energía dependerá de cómo el usuario final establezca 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 navegación.
Configura tu GMSMapView con un mapID que represente un diseño de mapa basado en Cloud definido en tu proyecto.El diseño de mapas basado en Cloud requiere un ID de mapa que represente una configuración de mapa del servidor que se creó en tu proyecto de Google Console. Si deseas obtener más información para crear un ID de mapa, consulta la documentación para desarrolladores sobre los IDs de mapa. Para obtener más detalles sobre el diseño y la implementación de un diseño de mapa basado en Cloud, consulta la documentación para desarrolladores sobre cómo crear y administrar diseños de mapas basados en Cloud.
Cambia la frecuencia de actualización de la ubicación del GPS
Cuando consideres el consumo de energía de las actualizaciones de ubicación enviadas desde el dispositivo, enfócate más en la frecuencia de las actualizaciones de ubicación que en la cantidad de datos que se envían en la transmisión.
No puedes controlar esto directamente en el SDK de Navigation. La misma recomendación se aplica para el uso de fuentes de ubicación que no sean GPS (datos móviles y Wi-Fi).
Informa 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
- Cómo poner la app de navegación en segundo plano
- Si es posible, usa la navegación sin un mapa
- Reduce el brillo de la pantalla, ya sea con el modo oscuro para pantallas OLED y AMOLED, o mediante la habilitación del brillo automático.
- Mantén el dispositivo fresco
- Conéctate a la red Wi-Fi del vehículo si está disponible
Mide el consumo de energía
Puedes usar herramientas de nivel profesional para medir el consumo de energía, pero su obtención suele ser difícil o costosa. Las apps y las herramientas de generación de perfiles de IDE, como el Generador de perfiles de energía en Android Studio y el panel Uso de batería de XCode Orchestrator, miden el consumo de energía, pero puede ser difícil quitar el efecto de los procesos en segundo plano o establecer un modelo de referencia de rendimiento contra el cual realizar mediciones. En algunos casos, las restricciones de dispositivos pueden impedir que se acceda a los datos necesarios.
Puedes usar un hardware de supervisión de energía con propósito especial y modificar la configuración de la conexión de la batería, y existen productos y servicios comerciales que te ayudarán. Ten en cuenta que modificar los dispositivos de esta manera puede anular la garantía del dispositivo.