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.