Configuración del Formato de Caras de Relojes

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:

  1. Instala el SDK para Android 14 (nivel de API 34) o versiones posteriores. Si la cara de reloj no se basa en funciones o comportamientos específicos de la versión 2, puedes instala el SDK para Android 13 (nivel de API 33).

    El SDK contiene otras herramientas necesarias, como aapt2 y android.jar.

  2. De manera alternativa, instala Android Studio, que también puede proporcionar estas con herramientas de visualización.

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 aplicación que indica el uso del Formato de Caras de Relojes. A menos que quieras restringir el acceso a la cara de reloj para dispositivos con Wear OS 5 o versiones posteriores crear 2 APK diferentes para caras de reloj, uno que admita la versión 2 y otro que es compatible con la versión 1. Obtén más información para configurar versiones de tu app.

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<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"
        ...>
        <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>
    <!-- Only "Preview" is required. -->
    <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 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 estás que tu cara de reloj se adapte al tamaño del reloj.

En el directorio de recursos res/xml de tu app, declara el conjunto de caras de reloj. formas que admites en watch_face_shapes.xml:

<WatchFaces>
    <!-- The default shape is "CIRCLE". -->
    <WatchFace shape="CIRCLE" width="300" height="300"
               file="@raw/watchface"/>
    <WatchFace shape="CIRCLE" width="450" height="450"
               file="@raw/watchface_large_circle"/>
    <WatchFace shape="RECTANGLE" width="380" height="400"
               file="@raw/watchface_rectangle"/>
</WatchFaces>

Cómo declarar los detalles de una cara de reloj

En el directorio de recursos res/raw de tu app, crea archivos que correspondan a los valores del atributo file que se usan cuando declaras la compatibilidad con formas de caras de reloj.

Aquí es donde defines la apariencia y el comportamiento para cada forma de cara de reloj. Si no definiste un archivo de formas, solo necesitas para crear un archivo, watchface.xml.

Con el ejemplo de esta página, los archivos en formato XML sin procesar serían:

  • res/raw/watchface.xml
  • res/raw/watchface_large_circle.xml
  • res/raw/watchface_rectangle.xml

El elemento raíz siempre es WatchFace:

<WatchFace width="450" height="450" shape="CIRCLE">
    <!-- Remainder of your Watch Face Format definition here. -->
    <!-- If this file defines a watch face for a circular device shape, place
         resources used in this file in the "/res/drawable-nodpi" directory. -->
    <!-- If this file defines a watch face for a rectangular or other
         non-circular shape, place resources ued in this file in the
         "/res/drawable-notround-nodpi" directory. -->
</WatchFace>

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="{toolName}-{toolVersion}" />
</application>

Cómo verificar la precisión y el rendimiento de la cara de reloj

Durante el desarrollo y antes de subirlo a Google Play, usa el validador herramientas para comprobar que la cara de reloj no contenga errores y que cumpla con las recomendaciones de uso de memoria.

Cómo compilar un paquete de aplicación para tu cara de reloj

Para compilar el Android App Bundle que contiene la cara de reloj, usa el elemento Sistema de compilación de Gradle. Obtén más información sobre cómo compilar una app utilizando Gradle

Esto se demuestra en las muestras de GitHub.