Imersão

As imersões oferecem mais maneiras de consumir entradas do usuário e criar interfaces de usuário. Isso permite criar a experiência mais personalizada, mas envolve mais trabalho.

Se esta é a primeira vez que você desenvolve para o Glass, leia o guia de imersão. Este documento mostra como criar um Glassware completo com imersões, seguindo nossas práticas recomendadas de design.

Como funcionam

As imersões são exibidas fora da linha do tempo, oferecendo controle total sobre a experiência do usuário desde o momento em que o Glass inicia a imersão.

Crie imersões com atividades, layouts, widgets de IU e o restante da plataforma Android. Em seguida, use o GDK para integrar à experiência do Google Glass, como comandos de voz, cartões com estilo do Google Glass e muito mais.

Quando as imersões começam, elas aparecem na parte de cima da linha do tempo. Quando os usuários terminam de usar uma imersão, deslizam para baixo.

Quando usar os recursos

As imersões são ótimas para experiências que exigem atenção prolongada do usuário. Eles permitem que você crie uma IU especializada que aparece fora da linha do tempo, para que os usuários possam se aprofundar em uma experiência personalizada.

As imersões também são necessárias quando você precisa substituir recursos específicos da linha do tempo, como deslizar para frente e para trás e controlar o tempo limite da tela.

No entanto, use imersões somente se for necessário, porque elas exigem mais trabalho para a criação e mais tempo para o design. Os cards em tempo real oferecem recursos e recursos suficientes para a maioria dos tipos de Glasswares.

Como criar imersões

Você cria imersões usando atividades padrão do Android, mas lembre-se do seguinte ao programar atividades para o Glass:

  • Projete suas IUs para uma tela de 640 x 360 pixels.
  • Crie interações que façam sentido no Google Glass em vez de transferir de atividades de outros dispositivos Android.
  • Não confie em gestos de toque complexos ou padrões de IU.
  • Deslizar para baixo sempre volta para a pilha de atividades até que os usuários atinjam a linha do tempo. Ele funcionará como o botão "Voltar" do Android em smartphones e tablets.
  • Crie um ícone de 50 × 50 pixels e especifique-o para o atributo android:icon do elemento <activity> no manifesto do Android. Especifique também o texto de android:label. Isso permite que um item de menu de voz ou toque associado a vários Glassware mostre o nome e o ícone do Glassware como uma opção.
  • Especifique android:immersive="true" para o elemento <activity> para que o foco seja mostrado depois que uma tela for suspensa e acorda.

Como criar e exibir um menu

O Google Glass vai exibir o estilo correto para menus se você os criar com as APIs de menu padrão do Android dentro de uma atividade.

Para exibir um menu para uma atividade, crie recursos de menu e os exiba em uma ação do usuário, como um toque quando a atividade estiver em foco.

Como criar recursos de menu

A criação de recursos de menu é a mesma usada na plataforma Android, mas siga estas diretrizes:

  • Para cada item, forneça um ícone de menu de 50 x 50 pixels. O ícone do menu precisa ser branco com um fundo transparente. Faça o download dos ícones do menu do Google Glass para uso ou como exemplo.
  • Use uma frase curta que descreva a ação e esteja em letra maiúscula. Um verbo imperativo funciona bem (por exemplo, "Compartilhar" ou "Responder a todos").

Veja um exemplo simples para começar:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/reply_menu_item"
        android:title="@string/reply"                <!-- imperative verb -->
        android:icon="@drawable/icons_50_reply" />   <!-- white in color on
                                                     transparent background
                                                     -->
</menu>

Para mais informações sobre como criar menus do Android, consulte o tópico Menu na documentação do SDK do Android.

Como processar callbacks de menu

A classe Activity contém callbacks que você substitui para processar a criação, a exibição e a desmontagem do menu:

  1. onCreateOptionsMenu() infla o recurso do menu XML.
  2. onPrepareOptionsMenu() mostra ou oculta itens de menu se necessário. Por exemplo, é possível mostrar itens de menu diferentes com base no que os usuários estão fazendo.
  3. O onOptionsItemSelected() processa a seleção do usuário.

    public class MyActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.stopwatch, menu);
            return true;
        }
    
        @Override
        public boolean onPrepareOptionsMenu(Menu menu) {
            // Implement if needed
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            // Handle item selection. Menu items typically start another
            // activity, start a service, or broadcast another intent.
            switch (item.getItemId()) {
                case R.id.stop:
                    startActivity(new Intent(this,
                    StopStopWatchActivity.class));
                    return true;
                default:
                    return super.onOptionsItemSelected(item);
            }
        }
    }
    

Como mostrar o cardápio

Para exibir o menu, chame openOptionsMenu() quando necessário, como um toque no touchpad. Os exemplos abaixo detectam um gesto de toque em uma atividade e chamam openOptionsMenu().

public class MainActivity extends Activity {
    // ...
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
              openOptionsMenu();
              return true;
          }
          return super.onKeyDown(keyCode, event);
    }
}

Alguns métodos auxiliares estão disponíveis para modificar a aparência e o comportamento dos menus. Consulte MenuUtils para ver mais informações.