Adicionar complicações à tela do relógio

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

A complicação de tela do relógio mostra informações de uma fonte de dados. Com a API Complications, as telas de relógio podem escolher quais fontes usar para receber dados. Isso permite que as telas mostrem informações além do horário sem precisar de códigos para conseguir os dados.

Usar uma classe ComplicationSlotsManager

Para adicionar complicações a uma tela de relógio, use uma ComplicationSlotsManager.

A ComplicationSlotsManager define quantas complicações podem ser usadas na tela do relógio e onde elas são posicionadas. Para oferecer suporte à mudança do local ou do número de complicações, a classe ComplicationSlotsManager também usa a CurrentUserStyleRepository, conforme mostrado no exemplo a seguir:

 override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager {
        val defaultCanvasComplicationFactory =
            CanvasComplicationFactory { watchState, listener ->
                // ...
            }

        val leftComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 100,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()

        val rightComplicationSlot = ComplicationSlot.createRoundRectComplicationSlotBuilder(
            id = 101,
            canvasComplicationFactory = defaultCanvasComplicationFactory,
            // ...
        )
            .setDefaultDataSourceType(ComplicationType.SHORT_TEXT)
            .build()

        return ComplicationSlotsManager(
            listOf(leftComplicationSlot, rightComplicationSlot),
            currentUserStyleRepository
        )
 }

Tipos e campos

A tabela a seguir descreve os tipos e campos do objeto ComplicationData. Se uma tela de relógio solicitar um campo inválido para um tipo de complicação, um valor padrão para esse campo vai ser retornado. Por exemplo, se a tela do relógio tentar acessar o campo LONG_TEXT em um tipo SHORT_TEXT, o valor padrão para o campo LONG_TEXT (null) vai ser retornado.

Tipo Campos obrigatórios Campos opcionais Observações
SHORT_TEXT Texto curto Ícone
Ícone de proteção de pixels
Título curto
Mostra apenas um ícone ou título curto caso um deles ou os dois sejam fornecidos.
ICON Ícone Ícone de proteção de pixels Usado quando nenhum texto é necessário. O ícone precisa ter uma só cor e pode ser colorido pela tela do relógio.
RANGED_VALUE Valor
Valor mínimo
Valor máximo
Ícone
Ícone de proteção de pixels
Texto curto
Título curto
Não há garantias de que os campos opcionais sejam mostrados. Se quiser desenhar a própria barra de progresso, use o método isRangedValueProgressHidden() para ocultar a fornecida pela classe ComplicationDrawable.
LONG_TEXT Texto longo Título longo
Ícone
Ícone de proteção de pixels
Imagem pequena
Mostra o título longo caso ele seja fornecido.
SMALL_IMAGE Imagem pequena Uma imagem pequena tem um destes estilos: de foto ou de ícone. O estilo de foto significa que ela preenche o espaço e pode ser cortada. O estilo de ícone significa que ela não deve ser cortada e pode ser preenchida. A variabilidade de imagens pode resultar em uma imagem inadequada para exibição no modo ambiente em dispositivos com proteção de pixels ou com poucos bits. Quando o modo ambiente com proteção de pixels ou poucos bits está ativado, a tela do relógio pode usar Burn-in protection small image, porque isso é seguro. Caso contrário, como a tela do relógio tem dificuldade para determinar a adequação, nenhuma imagem vai ser mostrada.
LARGE_IMAGE Imagem grande Essa imagem deve ser grande o bastante para preencher a tela do relógio. A variabilidade de imagens pode resultar em uma imagem inadequada para exibição no modo ambiente em dispositivos com proteção de pixels ou com poucos bits. Como a tela do relógio tem dificuldade para determinar a adequação, ela não vai mostrar uma imagem no modo ambiente se a proteção de pixels ou o ambiente com poucos bits estiverem ativados.

Os tipos na tabela abaixo se destinam a dados vazios e podem ser enviados para qualquer slot de complicação. Esses tipos não têm campos e não precisam ser incluídos em uma lista de tipos com suporte. Eles permitem que as telas de relógio façam a distinção entre estes três casos:

  • Nenhuma fonte foi escolhida.
  • O usuário selecionou "empty" para um slot.
  • A fonte não tem dados para enviar.

As fontes não vão enviar TYPE_EMPTY em resposta a solicitações de atualização. Nesse caso, elas precisam enviar TYPE_NO_DATA.

Os detalhes sobre os tipos de complicação para dados "empty" são apresentados na tabela a seguir:

Tipo de complicação Descrição
TYPE_NOT_CONFIGURED Enviado pelo sistema quando uma complicação é ativada, mas o usuário não selecionou uma fonte e nenhum padrão foi definido.

Não pode ser enviado por fontes.

TYPE_EMPTY Enviado pelo sistema quando uma complicação é ativada e o usuário escolheu "empty" em vez de uma fonte ou quando a tela do relógio não escolheu uma fonte e esse tipo é o padrão.

Não pode ser enviado por fontes.

TYPE_NO_DATA Enviado pelo sistema quando uma complicação que tem uma fonte é ativada para limpar a complicação antes que dados reais sejam recebidos da fonte.

Precisa ser enviado por fontes quando elas não têm dados reais para enviar.

Para mais informações, confira o exemplo WatchFace (link em inglês) no GitHub.