Fornecer dados úteis com complicações

As complicações são um recurso de mostradores de relógios físicos e de smartwatches que mostram informações adicionais. Normalmente, o usuário seleciona quais informações 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, cobrindo todo o mostrador do relógio

No Wear OS, o sistema de complicações pode ser dividido em duas partes:

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

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 de relógio WFF.

Fontes de dados em complicações

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

Por exemplo, a fonte de dados de complicação de passos diários de saúde e condicionamento físico pode produzir os seguintes dados para indicar que o usuário deu 2.400 dos 10.000 passos alcançados hoje:

Não há nada nesses dados que indique como eles devem ser renderizados.

O mostrador do relógio especifica quais tipos de complicação ele pode renderizar. Isso determina quais fontes de dados estão 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 um indicador de progresso? Isso é para você, como designer do mostrador do relógio, decidir.

Definir complicações

Oferecer a capacidade de mostrar complicações no mostrador do relógio pode ser valioso para os usuários, já que eles podem ter uma maior variedade de informações de relance e personalizadas para suas necessidades.

Decida se e quantas complicações você vai oferecer no mostrador do relógio, quais serão as formas e o posicionamento delas e quais tipos de dados elas vão oferecer.

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="0" y="0" width="225" height="225">
    <BoundingArc centerX="225" centerY="225" width="450" height="450"
        startAngle="270" endAngle="360" thickness="50" />
  <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 a outras formas delimitadoras, como retângulo e elipse.

Definir o tipo de complicação e os padrões

O sistema de complicação oferece vários tipos diferentes, o que permite que o mostrador do relógio expresse o tipo de dados que ele pode representar na tela. Por exemplo, uma complicação de arco, como mostrado anteriormente, não é uma boa opção para um tipo de dados de complicação 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, a definição de um padrão é opcional:

<ComplicationSlot slotId="1" ...>
    <BoundingArc .../>
    <DefaultProviderPolicy
        defaultSystemProvider="STEP_COUNT"
        defaultSystemProviderType="SHORT_TEXT" />
</ComplicationSlot>

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

Renderizar dados de complicação

Depois de definir o ComplicationSlot, os limites e o elemento Complication contendo, use componentes padrão do WFF, como PartDraw, PartImage e PartText, para mostrar os dados da 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 da 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 ...>
    <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 conferir uma lista completa de cada uma delas, consulte a referência Complication. Este exemplo mostra o texto de uma complicação SHORT_TEXT:

<Complication type="SHORT_TEXT">
  <PartText ...>
    <Text>
      <Font ...>
        <Template>
          <![CDATA[%s]]><Parameter expression="[COMPLICATION.TEXT]" />
        </Template>
      </Font>
  </PartImage>
</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 complicação. Vários apps podem fornecer um ou muitos desses recursos.
  2. Além de ter propriedades obrigatórias, cada tipo de dados de complicação também tem muitas propriedades opcionais. Verifique se a renderização mais útil é feita com base nas propriedades disponíveis, levando em conta as diferentes combinações.

Para resolver esses problemas, algumas estratégias incluem:

  1. Ofereça suporte a vários tipos de complicação para cada slot. Por exemplo, SHORT_TEXT tem suporte de muitas fontes de dados de complicação. Portanto, oferecer suporte a vários tipos diferentes, como SHORT_TEXT RANGED_VALUE para uma pequena complicação circular, aumenta a compatibilidade.
  2. Ofereça diferentes tipos de complicação 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 se há elementos opcionais para 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 se uma imagem ou um título estão disponíveis ou não.