Cartão ao vivo

Adicionado no nível da API XE12
classe pública

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
LiveCard(contexto de contexto, tag String)
Métodos públicos
LiveCard
attach(serviço de serviço)
SurfaceHolder
booleano
void
void
LiveCard
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

Adicionado no nível da API XE21

públicas estática final. String EXTRA_FROM_LIVECARD_VOICE

O extra booleano que indica que uma Intent foi ativada por voz em um card ativo.

Valor constante: "android.intent.extra.EXTRA_FROM_LIVECARD"

Construtores públicos

Adicionado no nível XE16 da API

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

Adicionado no nível XE16 da API

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
Adicionado no nível da API XE12

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.

Adicionado no nível da API XE12

públicas booleano isPublished ()

Retorna true se o card estiver publicado no momento.

Adicionado no nível XE16 da API

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
Adicionado no nível da API XE12

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
Adicionado no nível da API XE12

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
Adicionado no nível da API XE12

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
Adicionado no nível XE16 da API

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
Adicionado no nível da API XE12

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
Adicionado no nível da API XE21

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
Adicionado no nível da API XE12

públicas anular cancelar publicação ()

Cancela a publicação deste card na linha do tempo.