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 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Méthodes publiques | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceSupporter | |||||||||||
booléen | |||||||||||
void |
navigate()
|
||||||||||
void |
publish(mode LiveCard.PublishMode)
|
||||||||||
LiveCard |
setAction(intent PendingIntent)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(activer la valeur booléenne)
|
||||||||||
LiveCard |
setRenderer(moteur de rendu GlRenderer)
|
||||||||||
LiveCard |
setViews(vues RemoteViews)
|
||||||||||
LiveCard |
setVoiceActionEnabled(activation booléenne)
|
||||||||||
void |
Méthodes héritées | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constantes
Constructeurs publics
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
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
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.
Voir également
public booléen isPublished ()
Renvoie true
si la carte est actuellement publiée.
public void parcourir ()
Redirige l'utilisateur vers cette fiche dans la chronologie.
Génère
IllegalStateException | si la carte n'est pas publiée |
---|
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 |
---|
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
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
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
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
Voir également
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
public void annuler la publication ()
Annule la publication de cette fiche dans la chronologie.