Immersion

Les immersions offrent davantage de moyens de consommer les entrées utilisateur et de créer des interfaces utilisateur. Cela vous permet de créer l'expérience la plus personnalisée, mais implique le plus de travail.

Si c'est la première fois que vous développez pour Glass, consultez plutôt le guide d'immersion. Ce document explique comment créer un Glassware complet immersif, en suivant nos bonnes pratiques de conception.

Fonctionnement

Les immersions s'affichent en dehors de la chronologie, ce qui vous permet de contrôler entièrement l'expérience utilisateur à partir du moment où Glass lance l'immersion.

Vous pouvez créer des immersions avec des activités Android standards, des mises en page, des widgets d'interface utilisateur et le reste de la plate-forme Android. Vous utilisez ensuite GDK pour intégrer les fonctionnalités de Glass, par exemple en intégrant des commandes vocales ou des cartes stylisées.

Lorsque les immersions commencent, elles apparaissent en haut de la timeline. Lorsque les utilisateurs ont terminé leur travail, ils le font glisser vers le bas.

Quand les utiliser

Les immersions sont idéales pour les expériences qui requièrent une attention prolongée. Ils vous permettent de créer une UI spécialisée qui apparaît en dehors de la chronologie, afin que les utilisateurs puissent explorer une expérience personnalisée plus en détail.

Des immersions sont également nécessaires lorsque vous devez écraser des fonctionnalités propres à la chronologie, telles que des balayages avant et arrière et le contrôle du délai d'inactivité de l'écran.

Cependant, n'utilisez des immersions que si cela est nécessaire, car ils nécessitent davantage de travail de création et de temps pour la conception. Les cartes en direct offrent suffisamment de fonctionnalités pour la plupart des types de verrerie Glassware.

Créer des immersions

Vous créez des immersions à l'aide des activités Android standards, mais tenez compte des points suivants lorsque vous écrivez des activités pour Glass:

  • Concevez vos interfaces utilisateur pour un écran de 640 x 360 pixels.
  • Concevez des interactions qui ont du sens sur Glass au lieu de transférer les activités d'autres appareils Android.
  • N'utilisez pas de gestes tactiles complexes ni de modèles d'interface utilisateur.
  • Le déplacement vers le bas revient toujours à la pile d'activités jusqu'à ce que les utilisateurs atteignent la chronologie. Il devrait fonctionner comme le bouton "Retour" d'Android sur les smartphones et les tablettes.
  • Créez une icône de 50 × 50 pixels et spécifiez-la pour l'attribut android:icon de l'élément <activity> dans votre fichier manifeste Android. Spécifiez également du texte pour android:label. Cela permet à un élément de menu vocal ou tactile associé à plusieurs Google Glass d'afficher le nom et l'icône de ce service.
  • Spécifiez android:immersive="true" pour que l'élément <activity> donne un certain niveau d'immersion après la mise en veille et l'activation d'un écran.

Créer et afficher un menu

Glass affiche le style correct des menus si vous les compilez avec les API de menu Android standards dans une activité.

Pour afficher le menu d'une activité, créez des ressources de menu, puis affichez-les en fonction de l'action de l'utilisateur (par exemple, appuyer lorsque votre activité est sélectionnée).

Créer des ressources de menu

La création de ressources de menu est la même que sur la plate-forme Android, mais suivez ces consignes:

  • Pour chaque élément de menu, fournissez une icône d'élément de menu de 50 x 50 pixels. L'icône du menu doit être blanche, sur un arrière-plan transparent. Téléchargez les icônes du menu Glass pour les utiliser ou à titre d'exemple.
  • Utilisez une phrase courte décrivant l'action, en respectant la casse utilisée. Un verbe impératif fonctionne bien (par exemple, "Partager" ou "Répondre à tous").

Voici une méthode simple pour commencer:

<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>

Pour en savoir plus sur la création de menus Android, consultez la page Menu dans la documentation du SDK Android.

Gérer les rappels de menu

La classe Activity contient des rappels que vous remplacez pour gérer la création, l'affichage et la suppression des menus:

  1. onCreateOptionsMenu() gonfle la ressource du menu XML.
  2. onPrepareOptionsMenu() affiche ou masque des éléments de menu si nécessaire. Par exemple, vous pouvez afficher différents éléments de menu en fonction de ce que font les utilisateurs.
  3. onOptionsItemSelected() gère la sélection des utilisateurs.

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

Afficher le menu

Pour afficher le menu, appelez openOptionsMenu() si nécessaire, par exemple en appuyant sur le pavé tactile. Les exemples suivants détectent un geste d'appui sur une activité, puis appellent 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);
    }
}

Certaines méthodes d'assistance sont disponibles pour modifier l'apparence et le comportement des menus. Pour en savoir plus, consultez MenuUtils.