LiveCard

Ajouté dans le niveau d'API XE12
cours public

LiveCard

Ce cours vous permet de créer des fiches actives et de les publier sur la chronologie.

Pour en savoir plus sur la création de fiches en direct, consultez le guide du développeur Fiches en direct.

La vie d'une carte en direct

Les cartes en direct nécessitent un contexte de longue durée pour les conserver pendant toute la durée de leur publication. Vous devez donc les gérer en arrière-plan Service. Vous pouvez ensuite publier une fiche active dès le démarrage du service ou en réponse à d'autres événements surveillés par le service. De même, vous devez annuler la publication des cartes lorsqu'elles ne sont plus pertinentes ou lorsque le service est détruit.

Lorsque vous publiez une fiche en direct, vous pouvez choisir l'impact de ce changement sur les utilisateurs. Lorsque vous publiez votre carte en mode silencieux, la fiche est insérée dans la chronologie sans aucun effet visible: les utilisateurs doivent balayer l'écran pour la voir. Vous pouvez également afficher automatiquement la fiche en ligne juste après sa publication. Cela s'avère souvent utile lorsque l'interface utilisateur principale de votre application est une carte active et non une activité.

Afficher du contenu sur une fiche en ligne

Une fiche active peut afficher du contenu à partir d'une ressource de mise en page ou en permettant à votre code de s'afficher directement sur sa surface de dessin. Choisissez la méthode la plus adaptée à votre application en fonction de la fréquence à laquelle vous devez mettre à jour le contenu de la carte et si vous affichez principalement des widgets ou des graphiques de forme libre.

Gonflement de la mise en page à l'aide de vues à distance

Si votre application ne nécessite que des widgets standards et des mises à jour peu fréquentes (environ quelques secondes ou plus entre les actualisations), créez votre carte à l'aide de la classe RemoteViews. L'objet RemoteViews permet à la chronologie Glass, qui s'exécute dans un processus distinct de votre propre code d'application, d'améliorer une mise en page que vous avez créée.

     LiveCard liveCard; // initialized elsewhere
     RemoteViews views = new RemoteViews(context.getPackageName(),
             R.layout.my_layout);
     liveCard.setViews(views);
 

Notez qu'une fois qu'une fiche utilisant RemoteViews est publiée, les modifications apportées aux vues en appelant les méthodes set* ne sont pas visibles dans la chronologie, sauf si vous appelez explicitement setViews sur la carte en direct pour forcer la mise à jour.

Dessiner directement sur la surface de la carte active

Si votre application nécessite des mises à jour plus fréquentes (plusieurs fois par seconde) ou affiche des graphismes plus élaborés que ceux compatibles avec les widgets standards, activez le rendu direct et ajoutez un SurfaceHolder.Callback à la surface de la carte.

     LiveCard liveCard; // initialized elsewhere
     liveCard.setDirectRenderingEnabled(true);
     liveCard.getSurfaceHolder().addCallback(callback);
 

Vous pouvez ensuite dessiner directement sur la surface à l'intérieur d'un fil de discussion en arrière-plan ou en réponse à des événements externes (par exemple, des mises à jour du capteur ou de l'emplacement). Utilisez les méthodes surfaceCreated et surfaceDestroyed pour démarrer et arrêter votre logique de rendu lorsque la fiche est affichée ou masquée.

Notez que les méthodes de rappel du conteneur de surface ne sont pas appelées sur le thread UI principal.

Gérer la sélection des cartes en direct

Une carte en direct doit fournir une action (une PendingIntent pour démarrer une activité, un service ou effectuer une diffusion) qui sera exécutée lorsque l'utilisateur appuiera pour sélectionner la fiche. Normalement, vous utiliserez cette action pour lancer une activité qui affiche un menu d'options ou redirige l'utilisateur vers une autre partie de votre application. Vous devez au moins proposer une option permettant à l'utilisateur de supprimer la fiche en direct de la chronologie.

     LiveCard liveCard; // initialized elsewhere
     Intent intent = new Intent(context, MyActivity.class);
     liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
 

Les fiches en direct qui n'ont enregistré aucune action ne seront pas affichées.

Cours imbriqués
enum LiveCard.PublishMode Détermine comment la fiche est présentée à l'utilisateur lorsqu'elle est publiée. 
Constantes
Chaîne EXTRA_FROM_LIVECARD_VOICE Valeur booléenne supplémentaire indiquant qu'une Intent a été activée par commande vocale à partir d'une carte active.
Constructeurs publics
LiveCard(contexte Context, tag String)
Méthodes publiques
LiveCard
attach(service Service)
SurfaceSupporter
booléen
void
void
LiveCard
LiveCard
setDirectRenderingEnabled(activer la valeur booléenne)
LiveCard
setRenderer(moteur de rendu GlRenderer)
LiveCard
LiveCard
setVoiceActionEnabled(activation booléenne)
void
Méthodes héritées

Constantes

Ajouté au niveau de l'API XE21

public static final Chaîne EXTRA_FROM_LIVECARD_VOICE

Valeur booléenne supplémentaire indiquant qu'une Intent a été activée par commande vocale à partir d'une carte active.

Valeur constante : "android.intent.extra.FROM_FROM_LIVECARD"

Constructeurs publics

Ajouté dans le niveau d'API XE16

public LiveCard (contexte Context, balise String)

Crée une fiche active avec le tag donné.

Notez qu'une fiche n'apparaît pas tant qu'elle n'a pas été publiée explicitement.

Paramètres
context le contexte de l'application
tag Tag non nul pour la fiche (à des fins de débogage)

Méthodes publiques

Ajouté dans le niveau d'API XE16

public LiveCard attach (service)

Ajoutez un Service d'arrière-plan afin que, lorsque cette fiche est publiée, le service donné soit configuré pour s'exécuter au premier plan.

Le service sera automatiquement supprimé du premier plan lorsque la publication de cette fiche en direct sera annulée.

Paramètres
service s'exécutera dans l'avant-projet
Renvoie
  • cet objet pour la chaîne d'appel
Ajouté dans le niveau d'API XE12

public SurfaceHolder getSurfaceHolder ()

Lorsque l'affichage direct est activé, donne accès au Surface sur lequel dessiner.

Notez que le SurfaceHolder renvoyé doit être utilisé simplement pour accéder à la surface gérée. Les méthodes permettant de modifier la forme et le type de la surface sont no-ops.

Notez également que les rappels pour cet objet ne sont pas effectués dans le thread UI.

Ajouté dans le niveau d'API XE12

public booléen isPublished ()

Renvoie true si la carte est actuellement publiée.

Ajouté dans le niveau d'API XE16

public void parcourir ()

Redirige l'utilisateur vers cette fiche dans la chronologie.

Génère
IllegalStateException si la carte n'est pas publiée
Ajouté dans le niveau d'API XE12

public void publish (LiveCard.PublishMode)

Publier cette fiche dans la timeline

La fiche ne s'affiche que si elle comporte une action et si le rendu direct est activé ou si des vues à distance ont été définies.

Paramètres
mode détermine la manière dont la carte est présentée à l'utilisateur
Ajouté dans le niveau d'API XE12

public LiveCard setAction (intentIntent)

Modifie l'action effectuée lorsque la fiche est sélectionnée.

Paramètres
intent se déclenche lorsque la carte est sélectionnée
Renvoie
  • cet objet pour la chaîne d'appel
Ajouté dans le niveau d'API XE12

public LiveCard setDirectRenderingEnabled (activation booléenne)

Active l'affichage direct.

Dans ce mode, le contenu de la fiche doit être affiché directement dans un Surface.

Notez que cette méthode ne peut être appelée que lorsque la carte n'est pas publiée. Sinon, elle générera une exception.

Paramètres
activer l'activation ou non de l'affichage direct
Renvoie
  • cet objet pour la chaîne d'appel
Voir également
Ajouté dans le niveau d'API XE16

public LiveCard setRenderer (moteur de rendu GlRenderer)

Ajoute un moteur de rendu OpenGL.

Le moteur de rendu sera utilisé pour dessiner sur une surface demandée (automatiquement) pour un rendu direct.

Renvoie
  • cet objet pour la chaîne d'appel
Ajouté dans le niveau d'API XE12

public LiveCard setViews (ViewViews vues)

Modifie les RemoteViews utilisés pour afficher l'UI de cette carte.

Cette méthode doit également être appelée après toute modification directe des vues à distance d'une carte publiée. Sinon, ces modifications n'apparaîtront pas dans la chronologie.

Cette méthode n'a aucun effet si l'affichage direct est activé.

Paramètres
de vues l'interface utilisateur de la carte
Renvoie
  • cet objet pour la chaîne d'appel
Ajouté au niveau de l'API XE21

public LiveCard setVoiceActionEnabled (activation booléenne)

Active une commande vocale lorsque la carte s'affiche sur la chronologie.

Lorsqu'elle est définie, la carte écoute "ok verre" lorsqu'elle est affichée sur la chronologie et, lorsque cette phrase de garde est prononcée, déclenche l'intent défini par la méthode setAction(PendingIntent). Si l'intent démarre une activité qui implémente des menus vocaux contextuels, l'activité s'ouvre automatiquement sur les premiers éléments de menu (comme si le son du "OK Glass" était énoncé à l'intérieur de l'activité). Cette fonctionnalité permet d'implémenter des menus vocaux contextuels sur les fiches en direct.

Paramètres
activer activer ou non les commandes vocales
Renvoie
  • cet objet pour la chaîne d'appel
Voir également
Ajouté dans le niveau d'API XE12

public void annuler la publication ()

Annule la publication de cette fiche dans la chronologie.