Nota: En esta página, se muestra un paso del proceso para administrar manualmente la configuración de la cara de reloj. Si quieres diseñar tu cara de reloj con una herramienta de estilo WYSIWYG (lo que ves es lo que obtienes), primero consulta las guías de Watch Face Studio.
En esta guía, se incluyen pasos sobre las herramientas que necesitas para configurar una cara de reloj con el Formato de Caras de Relojes, algunas sugerencias sobre la estructura de los proyectos y una guía paso a paso para usar las herramientas que permiten crear esa estructura.
Requisitos previos
Para preparar tu entorno de desarrollo para usar el formato de cara de reloj, completa los siguientes pasos de configuración:
Instala el SDK para Android 14 (nivel de API 34) o versiones posteriores. Si tu cara de reloj no depende de funciones o comportamientos específicos de la versión 2, puedes instalar el SDK para Android 13 (nivel de API 33).
El SDK contiene otras herramientas necesarias, como
aapt2
yandroid.jar
.Como alternativa, instala Android Studio, que también puede proporcionar estas herramientas.
Estructura del proyecto
Cuando creas una cara de reloj personalizada que usa el Formato de Caras de Relojes, el Android App Bundle que incluye el archivo en cuestión debe estar completamente separado del Android App Bundle que contiene la lógica de tu app para Wear OS. Algunas tiendas de aplicaciones, como Google Play, evitan que subas un Android App Bundle que incluya una lógica de Wear OS y una cara de reloj personalizada.
Cómo crear paquetes de caras de reloj
Para crear un Android App Bundle que incluya un archivo de cara de reloj, completa los pasos que se muestran en las siguientes secciones.
Cómo declarar el uso del Formato de Caras de Relojes
En el archivo de manifiesto de tu nueva app (AndroidManifest.xml
), agrega una propiedad de aplicación que indique el uso del Formato de Caras de Relojes. A menos que quieras restringir el acceso a tu cara de reloj para dispositivos que ejecutan Wear OS 5 o versiones posteriores, crea 2 APKs de caras de reloj diferentes, uno que admita la versión 2 y otro que admita la versión 1. Obtén más información para configurar las versiones de tu app.
<manifest ...>
<!--
Use SDK version 34 for version 2 of WFF, and SDK version 33 for version
1 of WFF
-->
<uses-sdk
android:minSdkVersion="34"
android:targetSdkVersion="34" />
<!--
WFF is a resource-only format, so the hasCode attribute should be set to
false to reflect this.
-->
<application
android:label="@string/watch_face_name"
android:hasCode="false"
...>
<meta-data android:name="com.google.android.wearable.standalone"
android:value="true" />
<property
android:name="com.google.wear.watchface.format.version"
android:value="2" />
</application>
</manifest>
Cómo declarar metadatos de una cara de reloj
En el directorio de recursos res/xml
de tu app, crea un archivo nuevo llamado watch_face_info.xml
. Aquí es donde defines los metadatos de tu cara de reloj:
<?xml version="1.0" encoding="utf-8"?>
<WatchFaceInfo>
<Preview value="@drawable/watch_face_preview" />
<Category value="CATEGORY_EMPTY" />
<AvailableInRetail value="true" />
<MultipleInstancesAllowed value="true" />
<Editable value="true" />
</WatchFaceInfo>
Los campos de este archivo representan los siguientes detalles:
Preview
- Hace referencia al elemento de diseño que contiene una imagen de vista previa de la cara de reloj.
Category
Define la categoría de la cara de reloj. Debe ser una cadena o una referencia a una cadena, como
@string/ref_name
. Cada fabricante de dispositivos puede definir su propio conjunto de categorías de cara de reloj.Valor predeterminado:
empty_category_meta
, que agrupa esta cara de reloj con otras de "categoría vacía" en la parte inferior de la vista del selector de caras de reloj.AvailableInRetail
Si la cara de reloj está disponible en el modo de demo para punto de venta del dispositivo. Debe ser un valor booleano o una referencia a un valor booleano, como
@bool/watch_face_available_in_retail
.Valor predeterminado:
false
MultipleInstancesAllowed
Si la cara de reloj puede tener varios favoritos. Debe ser un valor booleano o una referencia a un valor booleano, como
@bool/watch_face_multiple_instances_allowed
.Valor predeterminado:
false
Editable
Si la cara de reloj es editable, lo que significa que tiene una configuración o al menos una complicación no fija. Se usa para mostrar u ocultar el botón Editar de la cara de reloj en la lista de favoritos.
Valor predeterminado: falso
Cómo declarar el nombre de una cara de reloj
En el archivo de manifiesto de tu app (AndroidManifest.xml
), configura el atributo android:label
según el nombre de tu cara de reloj:
<application android:label="@string/watch_face_name" >
Cómo declarar los detalles de una cara de reloj
La estructura de un documento de cara de reloj WFF básico es la siguiente:
<WatchFace width="450" height="450">
<Scene>
<!-- Content to be rendered -->
</Scene>
</WatchFace>
Crea este archivo en formato XML como res/raw/watchface.xml
cuando crees tu cara de reloj, si trabajas con una sola. Para admitir diferentes formas y tamaños de pantalla, declara la compatibilidad con varias formas y tamaños.
El elemento raíz siempre es WatchFace
. height
y width
definen el grado de escalamiento del espacio de coordenadas para usar en la cara de reloj, y esta se ajusta para adaptarse al dispositivo en el que se usa. height
y width
no representan píxeles reales.
El Formato de Caras de Relojes organiza varios detalles sobre tu cara de reloj:
- Metadatos, como la hora y el recuento de pasos que se muestran en la imagen de vista previa de la cara de reloj
- Parámetros de configuración del usuario, como diferentes temas de colores para la cara de reloj, elementos que el usuario puede activar o desactivar, y una opción entre varios elementos. La versión 2 del Formato de Caras de Relojes presenta variantes, que pueden aparecer dentro de una configuración del usuario. Cada variante especifica una configuración de usuario predeterminada, que especifica el tipo y el estilo de los elementos que aparecen con la hora en la cara de reloj. Estos ajustes predeterminados te permiten crear grupos de elementos que sean visualmente atractivos con mayor facilidad. En la app complementaria de Wear OS, los usuarios ven los diferentes diseños de tu cara de reloj en una fila desplazable.
- Una escena que contiene los elementos visuales de una cara de reloj. Los elementos que aparecen más cerca del final de la escena aparecen sobre otros elementos, por lo que el orden típico es el siguiente:
- Las manecillas de un reloj analógico o el texto de un reloj digital
- Complicaciones que muestran información adicional, como el día de la semana o el recuento de pasos de un usuario
- Otros gráficos que proporcionen interés visual o decoraciones para la cara de reloj, como una imagen de un campamento
- Grupos de elementos, que te permiten modificar varios elementos al mismo tiempo. Puedes crear variantes de estos grupos dentro de una escena, lo que te permite ocultar o modificar contenido de forma selectiva cuando el sistema entra en un modo ambiente de ahorro de energía.
Los atributos están bien escritos y tienen lineamientos sobre la frecuencia y valores válidos para evitar la mayoría de las fuentes de errores cuando se crea una cara de reloj.
Cómo declarar la compatibilidad con formas de caras de reloj (opcional)
Este paso solo es necesario si deseas admitir un comportamiento diferente para diferentes tamaños de caras de reloj. Puedes omitir este paso si quieres que la cara de reloj se ajuste al tamaño del reloj.
En el directorio de recursos res/xml
de tu app, declara el conjunto de formas de cara de reloj que admites en watch_face_shapes.xml
:
<WatchFaces> <WatchFace shape="CIRCLE" width="300" height="300" file="@raw/watchface"/> <WatchFace shape="CIRCLE" width="450" height="450" file="@raw/watchface_large_circle"/> <!-- Remove any references to rectangular watch faces --><WatchFace shape="RECTANGLE" width="380" height="400" file="@raw/watchface_rectangle"/></WatchFaces>
Luego, define la apariencia y el comportamiento de la cara de reloj para cada forma.
Si no definiste un archivo de formas, solo debes crear un archivo, watchface.xml
.
Con el ejemplo de esta sección, los archivos en formato XML sin procesar serían:
res/raw/watchface.xml
res/raw/watchface_large_circle.xml
res/raw/watchface_rectangle.xml
Cómo identificar al publicador de una cara de reloj (opcional)
De manera opcional, en el archivo de manifiesto de tu app, declara una cadena arbitraria que puedes usar para identificar al publicador de la cara de reloj o el nombre y la versión de la herramienta que usas:
<application ...>
...
<property
android:name="com.google.wear.watchface.format.publisher"
android:value="<var>{toolName}-{toolVersion}</var>" />
</application>
Verifica la exactitud y el rendimiento de tu cara de reloj
Durante el desarrollo y antes de subirla a Google Play, usa las herramientas de validación para verificar que la cara de reloj no tenga errores y que cumpla con las recomendaciones de uso de memoria.
- Obtén más información para optimizar el uso de memoria y comprobar el uso de memoria en preparación para la publicación.
- Obtén más información para usar el validador de XML como parte de tu ciclo de desarrollo.
Cómo compilar el paquete de aplicación de tu cara de reloj
Para compilar el Android App Bundle que contiene tu cara de reloj, usa el sistema de compilación de Gradle. Obtén más información para compilar una app con Gradle.
Esto se muestra en las muestras de GitHub.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- AAPT2
- Aspectos básicos de Jetpack Compose
- Cómo comenzar a usar CameraX