Fornecer dados úteis com complicações

As complicações são um recurso dos mostradores de relógio físicos e de smartwatches que mostram informações adicionais. Normalmente, o usuário seleciona as informações que são mostradas em uma complicação.

Normalmente, as complicações têm vários formatos:

  1. Retangular
  2. Circular
  3. Arcos ao longo da borda do mostrador do relógio
  4. Plano de fundo que cobre todo o mostrador do relógio

No Wear OS, o sistema de complementos pode ser dividido em duas partes:

  1. A fonte de dados de complicação
  2. A renderização do complemento

Por exemplo, um app de saúde e fitness pode implementar uma fonte de dados de complicação de passos diários. Isso pode ser renderizado pelo mostrador do relógio WFF.

Fontes de dados em complicações

As fontes de dados de complementos especificam apenas os dados a serem renderizados e o tipo de complemento. A fonte de dados não tem participação na determinação de como os dados devem ser representados no mostrador do relógio.

Por exemplo, a fonte de dados de passos diários de saúde e fitness pode produzir os seguintes dados para indicar que o usuário deu 2.400 dos 10.000 passos da meta hoje:

Não há nada nesses dados que indique como isso deve ser renderizado.

O mostrador do relógio especifica quais tipos de complementos ele pode renderizar. Isso determina quais fontes de dados ficam disponíveis para o usuário selecionar.

No caso do exemplo de passos diários, você decide na definição do mostrador do relógio como renderizar Value e TargetValue: como texto ou como um indicador de progresso? Isso é uma decisão do designer do mostrador do relógio.

Definir complementos

Oferecer a capacidade de mostrar complementos no mostrador do relógio pode ser valioso para os usuários, já que permite que eles tenham uma variedade maior de informações de relance e personalizadas de acordo com as necessidades.

Decida se e quantas complicações serão compatíveis com o mostrador do relógio, quais serão as formas e o posicionamento delas e quais tipos de dados elas aceitam.

Cada espaço no mostrador do relógio para um complemento é definido como um ComplicationSlot em que uma área delimitadora é definida para a renderização do complemento:

<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>

Uma abordagem semelhante pode ser aplicada às outras formas delimitadoras, como retângulo e elipse.

Definir o tipo de complemento e os padrões

O sistema de complementos oferece vários tipos diferentes, o que permite que o mostrador do relógio expresse o tipo de dados que pode representar na tela. Por exemplo, um complemento de arco, como mostrado anteriormente, não é adequado para um tipo de dados de complemento baseado em imagem, como SMALL_IMAGE, mas pode funcionar muito bem para dados numéricos, como RANGED_VALUE.

Na declaração ComplicationSlot, defina supportedTypes como a lista separada por espaços dos tipos que podem ser renderizados nesse slot.

Você também precisa definir a origem padrão para o ComplicationSlot, a menos que permita o tipo EMPTY. Nesse caso, definir um padrão é 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>

Além de especificar provedores do sistema, você pode especificar provedores que não são do sistema, como provedores de terceiros para usar por padrão, se eles já estiverem instalados.

Renderizar dados de complementos

Depois de definir o ComplicationSlot, os limites e o elemento Complication que o contém, use componentes WFF padrão, como PartDraw, PartImage e PartText para mostrar os dados de complicação.

Os elementos nos dados Complication têm acesso a uma fonte de dados especial: COMPLICATION, que fornece as várias propriedades de dados definidas pela fonte de dados de complicação.

Por exemplo, uma complicação SMALL_IMAGE pode definir os valores COMPLICATION.SMALL_IMAGE e COMPLICATION.SMALL_IMAGE_AMBIENT. Eles podem ser usados em vez de recurso em um 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 complicação tem um conjunto diferente de propriedades disponíveis que podem ser definidas. Para uma lista completa de cada uma, consulte a referência Complication. Este exemplo mostra o texto de uma complicação 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>

Maximizar a utilidade ao renderizar complicações

Há vários desafios ao adicionar ComplicationSlots ao mostrador do relógio:

  1. Há vários tipos de dados de complementos. Diferentes apps podem oferecer um ou vários desses recursos.
  2. Cada tipo de dados de complicação, além de ter propriedades obrigatórias, também tem muitas propriedades opcionais. Verifique se a renderização mais útil é feita com base nas propriedades disponíveis, considerando as diferentes combinações.

Para resolver esses problemas, algumas estratégias incluem:

  1. Oferecer suporte a vários tipos de complementos para cada slot. Por exemplo, SHORT_TEXT é compatível com muitas fontes de dados de complemento. Portanto, oferecer suporte a vários tipos diferentes, como SHORT_TEXT RANGED_VALUE para um complemento circular pequeno, aumenta a compatibilidade.
  2. Ofereça diferentes tipos de complementos no mostrador do relógio. Por exemplo, você pode oferecer suporte a RANGED_VALUE e GOAL_PROGRESS em complicações de arco posicionadas na borda e SHORT_TEXT e SMALL_IMAGE em complicações circulares no corpo do mostrador do relógio.
  3. Verifique os elementos opcionais de cada tipo de dados. Por exemplo, SHORT_TEXT aceita opcionalmente uma propriedade de título e uma imagem. O layout para renderizar os dados disponíveis pode variar dependendo da disponibilidade de uma imagem ou um título.