Proporciona datos útiles a través de complicaciones

Las complicaciones son una función de las caras de reloj físicas y de los relojes inteligentes que muestran información adicional. Por lo general, el usuario selecciona la información que se muestra en una complicación.

Por lo general, las complicaciones se presentan en varias formas:

  1. Rectangulares
  2. Circular
  3. Arcos a lo largo del borde de la cara de reloj
  4. Fondo que cubre toda la cara de reloj

En Wear OS, el sistema de complicaciones se puede dividir en dos partes:

  1. La fuente de datos de Complication
  2. La renderización de la complicación

Por ejemplo, una app de salud y fitness podría implementar una fuente de datos de la complicación de Pasos diarios. La cara del reloj de WFF podría renderizarlo.

Fuentes de datos en las complicaciones

Las fuentes de datos de la complicación solo especifican los datos que se renderizarán y el tipo de complicación. La fuente de datos no influye en la forma en que se deben representar los datos en la cara de reloj.

Por ejemplo, la fuente de datos de la complicación de Pasos diarios de Salud y fitness puede producir los siguientes datos para indicar que el usuario dio 2,400 de los 10,000 pasos objetivo hoy:

Ten en cuenta que no hay nada en estos datos que indique cómo se deben renderizar.

La cara de reloj especifica qué tipos de complicaciones puede renderizar. Esto determina qué fuentes de datos estarán disponibles para que el usuario las seleccione.

En el caso del ejemplo de pasos diarios, en la definición de la carátula del reloj, decides cómo renderizar Value y TargetValue: ¿sería como texto o como un indicador de progreso? Eso lo decides tú como diseñador de la cara de reloj.

Cómo definir complicaciones

Ofrecer la posibilidad de mostrar complicaciones en la cara de reloj puede ser valioso para los usuarios, ya que les permite tener una mayor variedad de información de un vistazo y personalizada según sus necesidades.

Decide si admitirás complicaciones en tu cara de reloj y cuántas, cuáles serán sus formas y posiciones, y qué tipos de datos admitirán.

Cada espacio de la cara del reloj para una complicación se define como un ComplicationSlot dentro del cual se define un área de límite para la renderización de la complicación:

<ComplicationSlot slotId="1" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="100" y="100" width="100" height="100">
    <BoundingOval x="0"  y="0" width="100" height="100" />
    <Complication type="SHORT_TEXT">
        <!-- Complication content for rendering SHORT_TEXT data goes here -->
    </Complication>
    <Complication type="SMALL_IMAGE">
        <!-- Complication content for rendering SMALL_IMAGE data goes here -->
    </Complication>
</ComplicationSlot>

Se puede aplicar un enfoque similar a las otras formas de límite, como el rectángulo y la elipse.

Establece el tipo de complicación y los valores predeterminados

El sistema de complicaciones proporciona varios tipos diferentes, lo que permite que la carátula del reloj exprese qué tipo de datos puede representar en la pantalla. Por ejemplo, una complicación de Arc, como se mostró anteriormente, no es una buena opción para un tipo de datos de complicación basado en imágenes, como SMALL_IMAGE, pero podría funcionar muy bien para datos numéricos, como RANGED_VALUE.

En tu declaración de ComplicationSlot, establece supportedTypes en la lista separada por espacios de los tipos que se pueden renderizar en este espacio.

También debes establecer la fuente predeterminada para ComplicationSlot, a menos que permitas el tipo EMPTY, en cuyo caso establecer una fuente predeterminada es opcional:

<ComplicationSlot slotId="2" supportedTypes="SHORT_TEXT SMALL_IMAGE EMPTY"
    x="250" y="100" width="100" height="100">
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
    <!-- ... -->
</ComplicationSlot>

Además de tener que especificar proveedores del sistema, puedes especificar de forma opcional proveedores que no sean del sistema, como proveedores externos para usar de forma predeterminada, si ya están instalados.

Cómo renderizar datos de complicaciones

Después de definir el elemento ComplicationSlot, los límites y el elemento Complication que lo contiene, usa componentes estándar de WFF, como PartDraw, PartImage y PartText, para mostrar los datos de la complicación.

Los elementos dentro de los datos de Complication tienen acceso a una fuente de datos especial: COMPLICATION, que proporciona las diversas propiedades de datos establecidas por la fuente de datos de la complicación.

Por ejemplo, una complicación de SMALL_IMAGE puede establecer los valores de COMPLICATION.SMALL_IMAGE y COMPLICATION.SMALL_IMAGE_AMBIENT. Se pueden usar en lugar del recurso en un elemento Image:

<Complication type="SMALL_IMAGE">
    <PartImage x="0" y="0" width="100" height="100">
        <Image resource="[COMPLICATION.SMALL_IMAGE]" />
    </PartImage>
</Complication>

Cada tipo de complicación diferente tiene un conjunto diferente de propiedades disponibles que se pueden establecer. Para obtener una lista completa de cada una, consulta la referencia de Complication. En este ejemplo, se muestra el texto de una complicación SHORT_TEXT:

<Complication type="SHORT_TEXT">
    <PartText x="0" y="0" width="100" height="100">
        <Text>
            <Font size="32">
                <Template>
                    <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
                </Template>
            </Font>
        </Text>
    </PartText>
</Complication>

Maximiza la utilidad cuando renderizas complicaciones

Hay varios desafíos al agregar ComplicationSlots a la carátula del reloj:

  1. Existen numerosos tipos de datos de complicaciones. Diferentes apps pueden proporcionar uno o varios de estos.
  2. Cada tipo de datos de Complication, además de tener propiedades obligatorias, también tiene muchas propiedades opcionales. Verifica que la renderización más útil se realice a partir de las propiedades disponibles, teniendo en cuenta las diferentes combinaciones.

Para abordar estos problemas, algunas estrategias incluyen las siguientes:

  1. Admite varios tipos de complicaciones para cada ranura. Por ejemplo, SHORT_TEXT es compatible con una gran cantidad de fuentes de datos de complicaciones, por lo que admitir varios tipos diferentes, como SHORT_TEXT RANGED_VALUE para una complicación circular pequeña, aumenta la compatibilidad.
  2. Ofrece diferentes tipos de complicaciones en la cara de reloj. Por ejemplo, podrías admitir RANGED_VALUE y GOAL_PROGRESS en las complicaciones de Arc ubicadas en el borde, y SHORT_TEXT y SMALL_IMAGE en las complicaciones circulares en el cuerpo de la cara de reloj.
  3. Verifica si hay elementos opcionales para cada tipo de datos. Por ejemplo, SHORT_TEXT admite de forma opcional una propiedad de título y una imagen. El diseño para renderizar los datos disponibles puede variar según si hay una imagen o un título disponibles.