Esta semana, el foco está puesto en Wear OS, y hoy exploramos el fascinante mundo de las esferas de reloj. Google ha lanzado una nueva API llamada Watch Face Push (WFP), pensada para revolucionar la forma en que personalizamos nuestros relojes inteligentes.
Disponible en Wear OS 6, y dispositivos como el nuevo Pixel Watch 4, WFP abre un abanico de posibilidades para los desarrolladores y, por supuesto, para los usuarios.

¿Qué es Watch Face Push y por qué es importante?
Imagina poder cambiar el tema de tu esfera dinámicamente a partir de una foto, o mostrar datos en tiempo real de tus fuentes favoritas. WFP te permite:
- Tematización Dinámica: Adapta los colores de tu esfera a partir de una foto que tomes con tu móvil.
- Datos en Tiempo Real: Muestra información relevante de fuentes online o dispositivos conectados.
- Integración con Apps: Complementa tus apps del móvil con información directamente en tu muñeca.
¿Cómo funciona Watch Face Push?
La clave está en la combinación de varias técnicas:

La esfera por defecto: El comienzo de todo
WFP permite incluir una esfera por defecto directamente en la app. Esta esfera se instala en el dispositivo Wear OS junto con la aplicación. El sistema verifica la presencia de este APK y una clave de validación en el manifiesto de la app.
Esto significa que puedes distribuir un único paquete que contenga tanto la app como la esfera, simplificando el proceso de instalación y actualización.
Fuentes de datos (Complications): El corazón de la información
Una vez que tienes la esfera y la app instaladas, necesitas una forma de enviar datos. Aquí es donde entran en juego las "complications", que actúan como fuentes de datos personalizadas.
Por ejemplo, una esfera para surfistas podría incluir una complication que muestre la temperatura del agua. Puedes configurar esta complication para que sea no personalizable, convirtiéndola en una fuente de datos dedicada.
La app envía los datos a través de la complication, y la esfera los interpreta y muestra de la manera que desees. Por ejemplo, puedes enviar una lista de códigos de color RGB y utilizarlos para cambiar el color de las manecillas del reloj.

Extracción y manipulación de datos
Dentro del elemento ComplicationSlot
en la esfera, puedes acceder a los datos enviados por la complication a través de COMPLICATION.TEXT
y COMPLICATION.TITLE
. Funciones como abs()
y subText()
te permiten extraer partes de estas cadenas o convertirlas en tipos numéricos.
Luego, puedes usar el elemento REFERENCE
para definir colores y utilizarlos en cualquier parte de la esfera, incluso fuera del ComplicationSlot
.

Manteniendo la esfera actualizada
Un desafío es que, si actualizas la app, la esfera no se actualiza automáticamente. Para solucionarlo, la app utiliza un BroadcastReceiver
para detectar la acción MY_PACKAGE_REPLACED
. Al recibir esta acción, la app verifica si la esfera está instalada y necesita una actualización, utilizando WFP para realizar la actualización si es necesario.
Además, para que la acción MY_PACKAGE_REPLACED
se reciba, la app debe haberse ejecutado al menos una vez. Por esta razón, las esferas de ejemplo incluyen un botón de "lanzar app" que se muestra si la app no se ha ejecutado antes.
Más allá de las complications: Trabajando con otros componentes de la App
Si bien las complications son el principal conducto para los datos, puedes utilizar otras APIs de Android para lograr la funcionalidad deseada:
- WearableListenerService: Para enviar datos del móvil al reloj a través de la Data Layer.
- WorkManager: Para tareas en segundo plano, como descargar fotos de un servicio online, solo cuando el dispositivo se está cargando.
- ForegroundService: Para obtener datos de un dispositivo Bluetooth conectado y visualizarlos en la esfera.
Watch Face Push abre un mundo de posibilidades para la personalización de esferas en Wear OS. Los desarrolladores pueden crear esferas dinámicas e interactivas que se integran perfectamente con las apps del móvil y los datos en tiempo real. ¡Estamos ansiosos por ver lo que puedes crear!