LiveCard
Essa classe permite criar cards ativos e publicá-los na linha do tempo.
Para mais informações sobre como criar cards ativos, consulte o Guia para desenvolvedores sobre cards ativos.
O ciclo de um cartão ativo
Os cards dinâmicos precisam de um contexto de longa duração para serem possuídos durante todo o tempo em que estiverem
publicados, então gerencie-os em segundo plano Service
. É possível
publicar um card ao vivo assim que o serviço for iniciado ou em resposta a outros eventos aos quais
e monitores de serviço. Da mesma forma, você deve cancelar a publicação de cards quando eles não forem mais relevantes ou quando
o serviço será destruído.
Quando você publica um card publicado, pode escolher como isso afeta os usuários. Ao fazer uma publicação silenciosa, o card será inserido na linha do tempo sem nenhum efeito visível: os usuários precisarão deslizar para no card para vê-lo. Você também pode fazer com que o card ativo seja exibido automaticamente logo após ser publicadas. Isso geralmente é útil quando a interface de usuário principal do aplicativo é um card ao vivo e não uma atividade.
Mostrar conteúdo em um card ativo
Um card ativo pode exibir conteúdo de um recurso de layout ou permitindo que o código seja renderizado diretamente na superfície de desenho. Escolha o método mais apropriado para seu aplicativo com base com que frequência é preciso atualizar o conteúdo no card e se você está renderizando principalmente widgets ou gráficos de formato livre.
Como inflar um layout usando visualizações remotas
Se o seu aplicativo exige apenas widgets padrão e atualizações pouco frequentes (cerca de alguns segundos ou
mais tempo entre as atualizações), depois crie seu cartão com a ajuda da classe RemoteViews
.
O objeto RemoteViews
permite que a linha do tempo do Glass, que é executada em um processo separado do
o código do seu próprio aplicativo, infle um layout que você criou.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
Quando um card usando RemoteViews
é publicado, as mudanças feitas nas visualizações feitas por
a chamada de métodos set*
não ficará visível na linha do tempo, a menos que você chame explicitamente
setViews
no card ativo novamente para forçar uma atualização.
Desenhar diretamente na superfície do card ao vivo
Caso seu aplicativo exija atualizações mais frequentes (várias vezes por segundo) ou renderização de mais
gráficos elaborados que os widgets padrão, permitem a renderização direta e adicione um
SurfaceHolder.Callback
à superfície do cartão.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
Em seguida, você pode desenhar diretamente na superfície dentro de uma linha de execução em segundo plano ou em resposta a
(por exemplo, atualizações de sensor ou localização). Use os métodos surfaceCreated
e
Métodos surfaceDestroyed
para iniciar e interromper a lógica de renderização quando o cartão for
exibidos ou ocultos.
Os métodos de callback do detentor da superfície não são invocados na linha de execução de interface principal.
Como processar a seleção de cards ativos
Um card ativo precisa fornecer uma ação (um PendingIntent
para iniciar uma atividade,
serviço ou realizar uma transmissão) que será executada quando o usuário tocar para selecionar o cartão.
Normalmente, você usará essa ação para iniciar uma atividade que exibe um menu de opções ou toma
o usuário em outra parte do aplicativo. No mínimo, você deve fornecer uma opção
que permite ao usuário remover o card ativo da linha do tempo.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
Cards dinâmicos que não tiverem uma ação não serão exibidos.
Classes aninhadas | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
enum | LiveCard.PublishMode | Determina como o card é apresentado ao usuário quando publicado. |
Constantes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | EXTRA_FROM_LIVECARD_VOICE | O extra booleano que indica que uma Intent foi ativada por voz em um card ativo. |
Construtores públicos | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Métodos públicos | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceHolder | |||||||||||
booleano | |||||||||||
void |
navigate()
|
||||||||||
void |
publish(modo LiveCard.PublishMode)
|
||||||||||
LiveCard |
setAction(intent PendingIntent)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(ativação de booleano)
|
||||||||||
LiveCard |
setRenderer(renderizador GlRenderer)
|
||||||||||
LiveCard |
setViews(visualizações RemoteViews)
|
||||||||||
LiveCard |
setVoiceActionEnabled(ativação do booleano)
|
||||||||||
void |
Métodos herdados | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constantes
Construtores públicos
públicas LiveCard (Contexto de contexto, tag String)
Cria um card ativo com a tag especificada.
Um card não aparece até que seja explicitamente publicado.
Parâmetros
contexto | o contexto do aplicativo |
---|---|
tag | tag não nula para o cartão; Isso é para fins de depuração |
Métodos públicos
públicas LiveCard anexar (serviçoServiço)
Anexe um Service
em segundo plano para que, quando este card for
publicado, o serviço fornecido será configurado para execução em primeiro plano.
O serviço será removido automaticamente do primeiro plano quando este a publicação do card publicado é cancelada.
Parâmetros
serviço | será configurado para execução em um cenário anterior |
---|
Retorna
- esse objeto para o encadeamento de chamadas
públicas SurfaceHolder getSurfaceHolder ()
Quando a renderização direta está ativada, dá acesso ao Surface
em que o desenho será feito.
O SurfaceHolder
retornado precisa ser usado apenas como um meio de acessar o
plataforma gerenciada. Os métodos para alterar a forma e o tipo de superfície não são operacionais.
Os callbacks para esse objeto não são feitos na linha de execução de interface.
Ver também
públicas booleano isPublished ()
Retorna true
se o card estiver publicado no momento.
públicas anular navegar ()
Envia o usuário para esse card na linha do tempo.
Gera
IllegalStateException | se o cartão não for publicado |
---|
públicas anular publicar (modo LiveCard.PublishMode)
Publica esse card na linha do tempo.
O card só será exibido se tiver uma ação e se a renderização direta estiver ativada ou remotas foram definidas.
Parâmetros
modo | determina como o card é apresentado ao usuário |
---|
públicas LiveCard setAction (intent daPendingIntent)
Muda a ação realizada quando o card é selecionado.
Parâmetros
intent | será disparado quando o cartão for selecionado |
---|
Retorna
- esse objeto para o encadeamento de chamadas
públicas LiveCard setDirectRenderingEnabled (ativação booleana)
Permite a renderização direta.
Nesse modo, o conteúdo do cartão precisa ser renderizado diretamente em um Surface
.
Esse método só pode ser chamado quando o card não é publicado. Caso contrário, gerar uma exceção.
Parâmetros
ativar | se a renderização direta deve ser ativada |
---|
Retorna
- esse objeto para o encadeamento de chamadas
Ver também
públicas LiveCard setRenderer (renderizadorGlRenderer)
Adiciona um renderizador baseado em OpenGL.
O renderizador será usado para desenhar em uma superfície solicitada (automaticamente) para renderização.
Retorna
- esse objeto para o encadeamento de chamadas
públicas LiveCard setViews (visualizações RemoteViews)
Altera o RemoteViews
usado para mostrar a interface desse card.
Esse método também deve ser chamado após qualquer alteração direta nas visualizações remotas do um card publicado. Caso contrário, essas alterações não serão refletidas na linha do tempo.
Esse método não terá efeito se a renderização direta estiver ativada.
Parâmetros
visualizações | interface do cartão |
---|
Retorna
- esse objeto para o encadeamento de chamadas
Ver também
públicas LiveCard setVoiceActionEnabled (ativação booleana)
Ativa uma ação de voz quando o card é mostrado na linha do tempo.
Quando definido, o card ouve a mensagem "Ok Glass" quando exibidos na linha do tempo.
quando essa frase de proteção é falada, dispara a intenção que foi definida pelo
setAction(PendingIntent)
. Se a intent iniciar uma
atividade que implementa menus de voz contextuais, ela vai automaticamente
abrir nos primeiros itens do menu (viz. como se "ok Glass" fosse falado dentro da atividade
por conta própria). Esse recurso permite implementar menus de voz contextuais em cards dinâmicos.
Parâmetros
ativar | se a ação de voz deve ser ativada |
---|
Retorna
- esse objeto para o encadeamento de chamadas
Ver também
públicas anular cancelar publicação ()
Cancela a publicação deste card na linha do tempo.