Inmersiones

Las inmersiones te ofrecen más formas de consumir las entradas de los usuarios y crear interfaces de usuario. Esto te permite crear la experiencia más personalizada, pero implica más trabajo.

Si es la primera vez que desarrollas para Glass, consulta la guía de inmersión. En ese documento, se explica cómo compilar una Glassware completa con experiencias envolventes, según nuestras prácticas recomendadas de diseño.

Cómo funcionan

Las inmersiones se muestran fuera del cronograma, lo que te brinda un control total sobre la experiencia del usuario desde el momento en que Glass inicia la inmersión.

Compilarás inmersiones con actividades, diseños, widgets de IU y el resto de la plataforma de Android. Luego, usa el GDK para integrar la experiencia de Glass, como la integración de comandos por voz, tarjetas con estilo de Glass y mucho más.

Cuando comienzan las inmersiones, aparecen sobre el cronograma. Cuando los usuarios terminen la inmersión, deslizarán hacia abajo para salir.

Cuándo usarlos

Las inmersiones son ideales para las experiencias que requieren la atención prolongada de los usuarios. Te permiten crear una IU especializada que aparece fuera del cronograma para que los usuarios puedan profundizar en una experiencia personalizada.

Las inmersiones también son necesarias cuando necesitas reemplazar la funcionalidad específica del cronograma, como deslizar hacia adelante y hacia atrás, y controlar el tiempo de espera de la pantalla.

Sin embargo, usa las inmersiones solo si es necesario, ya que requieren más trabajo de compilación y más tiempo para diseñar bien. Las tarjetas en vivo ofrecen funciones y capacidades suficientes para la mayoría de los tipos de cristalería.

Crear inmersiones

Crea inmersiones con actividades de Android estándar, pero ten en cuenta lo siguiente cuando escribas actividades para Glass:

  • Diseña tus IU para una pantalla de 640 × 360 píxeles.
  • Diseña interacciones que tengan sentido en Glass en lugar de transferirse desde actividades de otros dispositivos Android.
  • No dependas de gestos táctiles complejos ni patrones de la IU.
  • El deslizamiento hacia abajo siempre vuelve a la pila de actividades hasta que los usuarios alcanzan la línea de tiempo. Debería funcionar de manera muy similar al botón Atrás de Android en smartphones y tablets.
  • Crea un ícono de 50 × 50 píxeles y especifícalo para el atributo android:icon del elemento <activity> en tu manifiesto de Android. También especifica texto para android:label. Esto permite que un elemento del menú por voz o táctil asociado con Glassware muestre el ícono y el nombre de Glassware como opción.
  • Especifica android:immersive="true" para que tu elemento <activity> se enfoque en la inmersión después de que una pantalla se suspenda y se active.

Crea y muestra un menú

Glass muestra el estilo correcto de los menús si los compilas con las API de menús estándares de Android dentro de una actividad.

A fin de mostrar un menú para una actividad, crea recursos de menú y, luego, muéstralos en una acción del usuario, por ejemplo, un toque cuando tu actividad esté enfocada.

Crea recursos de menú

La creación de recursos de menú es la misma que en la plataforma de Android, pero sigue estos lineamientos:

  • Para cada elemento del menú, proporciona un ícono de elemento de menú de 50 × 50 píxeles. El ícono de menú debe ser de color blanco sobre un fondo transparente. Descarga los íconos del menú de Glass para usarlos o como ejemplo.
  • Usa una frase corta que describa la acción y esté en mayúscula inicial. Un verbo imperativo funciona bien (por ejemplo, "Compartir" o "Responder a todos").

Aquí tienes un mensaje sencillo para comenzar:

<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 obtener más información sobre cómo crear menús de Android, consulta el tema Menú en la documentación del SDK de Android.

Cómo controlar las devoluciones de llamada del menú

La clase Activity contiene devoluciones de llamada que anulas para controlar la creación, la visualización y la desconexión de un menú:

  1. onCreateOptionsMenu() aumenta el recurso de menú XML.
  2. onPrepareOptionsMenu() muestra u oculta los elementos de menú si es necesario. Por ejemplo, puedes mostrar diferentes elementos del menú en función de lo que hacen los usuarios.
  3. onOptionsItemSelected() controla la selección de usuarios.

    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);
            }
        }
    }
    

Muestra el menú

Para mostrar el menú, llama a openOptionsMenu() cuando sea necesario, por ejemplo, presionando el panel táctil. En los siguientes ejemplos, se detecta un gesto de toque en una actividad y, luego, se llama a 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);
    }
}

Hay algunos métodos auxiliares disponibles para modificar el aspecto y el comportamiento de los menús. Consulta MenuUtils para obtener más información.