Padrão de tarefas contínuas

Este guia descreve os componentes que compõem uma tarefa em andamento na forma de um cronômetro. Uma tarefa em andamento exibe um card ativo na linha do tempo enquanto o usuário está engajado em uma tarefa e permite que ele entre e saia do card ativo quando precisar de informações.

Você também vai aprender dicas de design, desenvolvimento e distribuição que são importantes para criar seu próprio Glassware.

Antes de começar

A fonte completa do cronômetro está disponível no GitHub. Importe-o para o Android Studio antes de começar, porque este guia faz referência a ele.

  1. Na tela de início rápido, clique em Check out from version Control > Git.
  2. Copie o URL clone do Cronômetro.
  3. Cole o URL do clone no URL do repositório do Vcs e clique em Clone.
  4. Clique em Yes na tela seguinte.
  5. Clique em OK na tela seguinte.
  6. Crie e execute o projeto no seu Google Glass conectado clicando no botão Play. Verifique o README da amostra para ver os detalhes da invocação.

O que você vai aprender

Você aprenderá a usar componentes do SDK do Android para criar a maior parte da tarefa em andamento do cronômetro e, em seguida, o GDK para vincular à experiência do Google Glass. Veja uma lista de tópicos que você vai aprender:

  • Criar uma visualização personalizada para desenhar no cartão ao vivo
  • Criar um serviço para gerenciar o cartão ativo
  • Oferece um menu que permite aos usuários remover o cartão ao vivo da linha do tempo.
  • Declarar um gatilho de voz para iniciar o cronômetro no menu de voz principal

Design

Antes de começar a desenvolver, dedique um tempo e crie seu Glassware. Isso dá uma boa ideia de quais fluxos de IU funcionam melhor no Glass, qual comando de voz você vai usar e qual vai ser a aparência dos seus cards.

Obviamente, projetar o Glassware é um processo iterativo, e algumas coisas que você vai criar agora mudarão, mas ter uma boa parte desse trabalho no início é essencial para criar uma ótima experiência.

Fluxo da IU

Projetar o fluxo da IU é um exercício simples e permite que você visualize seu Glassware antes de escrever uma linha de código. Fazemos isso o tempo todo para o Glassware que criamos!

Vamos falar sobre os principais elementos da IU do cronômetro, para ter uma ideia de como a IU funciona e como esse processo pode ser útil ao criar seu próprio Glassware.

IU principal

O cronômetro contém apenas um fluxo principal, porque é uma experiência bastante simples.

Quando os usuários invocam o Glassware, eles veem um intersticial de contagem regressiva de três segundos antes do início do cronômetro real. O cronômetro é contado até que o usuário o remova da linha do tempo com um item de menu Stop.

Comando de voz

Você precisa descobrir um comando de voz no início do processo de design. Os comandos de voz permitem que os usuários iniciem o Glassware no menu de voz do Google Home (cartão de relógio), se necessário, e são uma parte importante de como você cria o Glassware.

Por exemplo, o comando Post a update funciona bem em um modelo de disparo manual, em que os usuários falam o texto, e o Glassware o processa sem nenhuma outra intervenção. Isso permite que os usuários retomem a ação rapidamente.

Por outro lado, para algo como Jogar, geralmente é preciso colocar os usuários em uma tela de apresentação para que eles possam ter uma orientação inicial. Como esse comando de voz provavelmente inicia uma imersão, é esperado que os usuários não se importem em ver telas e menus extras para iniciar o jogo. Jogar imediatamente os usuários em uma experiência de jogo logo após o comando de voz normalmente é uma experiência ruim para jogos.

O cronômetro usa o comando de voz Start a cronômetro. Depois que os usuários invocam o comando de voz, o cronômetro começa imediatamente depois de uma tela curta de contagem regressiva intersticial, que é melhor do que fornecer um item de menu para começar. Para tarefas contínuas, você geralmente precisa se concentrar em levar os usuários à experiência o mais rápido possível, onde fizer sentido.

Layouts de card

Ao criar imersões ou cards ao vivo, use os CardBuilder ou layouts XML sempre que possível.

Muitas vezes, ainda será necessário criar seu próprio layout, siga as diretrizes da IU para ter o Glassware mais bonito.

O cronômetro segue as diretrizes gerais de layout, mas tem layouts de IU personalizados usando componentes padrão do Android, como visualizações e layouts.

Desenvolvimento

Para desenvolver cards dinâmicos, use as mesmas ferramentas que você usaria em desenvolvimento para Android e criar a maior parte do Glassware e usar as APIs no complemento GDK para acessar funcionalidades específicas do Google Glass, como cards ao vivo e comandos de voz.

Você vai usar componentes comuns do Android para criar Glassware, mas lembre-se de que alguns conceitos são às vezes diferentes. Por exemplo, você renderiza e gerencia cards dinâmicos com um serviço Android, que não é uma maneira típica de usar serviços em apps Android tradicionais. Outro exemplo é que os cards dinâmicos não têm contexto de IU próprio. Portanto, é necessário usar uma atividade de shell que exiba um menu para o card ativo. Você vai aprender como esses componentes são criados mais adiante neste guia.

O restante das seções "Desenvolver" mostra a estrutura do cronômetro e os principais componentes do projeto que você importou anteriormente. É útil usar o Android Studio agora para que você possa acompanhá-lo. O próprio código-fonte é comentado. Portanto, esta seção aborda a finalidade geral de cada arquivo e dicas úteis que você pode aplicar ao seu próprio Glassware.

Comando de voz

Crie comandos de voz com um arquivo de recurso XML que especifique o comando que você está usando e, em seguida, especifique o recurso XML no arquivo AndroidManifest.xml.

Os arquivos a seguir estão associados ao comando de voz do cronômetro:

  • res/xml/voice_trigger_start.xml: declara o comando de voz a ser usado.
  • AndroidManifest.xml: declara o serviço do cartão em tempo real para iniciar quando o comando de voz for falado.

Visualização de contagem regressiva

O cronômetro mostra uma contagem regressiva antes que o horário seja realmente registrado para perceber que o tempo está prestes a decorrer.

Os arquivos a seguir estão associados à visualização da contagem regressiva:

  • res/layout/card_countdown.xml: define o layout do visualizador de contagem regressiva.
  • src/com/google/android/glass/sample/stopwatch/CountDownView.java: define a visualização para a contagem regressiva.

Visualização do cronômetro

Esta é a visualização principal do cronômetro. Ele exibe o tempo decorrido desde a conclusão do intersticial de contagem regressiva. Os arquivos a seguir estão associados à visualização do cronômetro:

  • res/layout/card_chronometer.xml: define o layout da visualização do cronômetro.
  • src/com/google/android/glass/sample/stopwatch/ChronometerDrawer.java: define como renderizar a visualização. O serviço de cartão ao vivo chama essa classe para desenhar para o serviço de cartão em tempo real.
  • src/com/google/android/glass/sample/stopwatch/ChronometerView.java: a visualização do cronômetro que usa o layout anterior como a IU.

Serviço de cronômetro

Esse é o serviço que gerencia o ciclo de vida e a renderização do cartão ativo. Os seguintes arquivos estão associados a este serviço:

  • src/com/google/android/glass/sample/stopwatch/StopwatchService.java: gerencia o cartão ativo do cronômetro e gerencia o ciclo de vida do serviço.

Os cards dinâmicos não têm um contexto de IU próprio para exibir um menu porque renderizam as IUs no contexto da linha do tempo.

Para contornar essa limitação, crie uma atividade translúcida que aparece acima da linha do tempo e exiba o menu imediatamente após o usuário tocar no cartão ao vivo.

  • src/com/google/android/glass/sample/stopwatch/MenuActivity.java: declara a atividade do menu translúcido que mostra imediatamente o menu quando a atividade está visível.
  • res/values/styles.xml: define o estilo translúcido aplicado ao menu.
  • res/menu/stopwatch.xml: o recurso de menu que contém o item de menu Stop obrigatório.

Manifesto do Android

O arquivo AndroidManifest.xml descreve os principais componentes do seu Glassware para que o sistema saiba como executá-lo. O manifesto de Charades declara o seguinte:

  • O nome e o ícone do Glassware. O Glass mostra essas informações no menu de toque principal se mais de um Glassware responder ao mesmo comando de voz.
  • Todos os serviços e atividades associados ao cronômetro. Isso é necessário para que o sistema saiba como iniciar os componentes do Glassware.
  • O comando de voz e um filtro de intent que inicia o serviço de cartão ao vivo quando o comando de voz é falado.
  • Um código de versão para o Glassware. Esse código precisa ser atualizado (e normalmente o nome da versão) sempre que uma nova versão desse APK for enviada para o MyGlass.