LiveCard

In API-Ebene XE12 hinzugefügt
öffentliche Klasse

LiveCard

Mit dieser Klasse können Sie aktive Karten erstellen und auf der Zeitachse veröffentlichen.

Weitere Informationen zum Erstellen von Livekarten findest du im Entwicklerleitfaden für Livekarten.

Leben einer Live-Karte

Für Live-Karten ist ein lang andauernder Kontext erforderlich, damit sie während der gesamten Zeit, in der sie veröffentlicht werden, Inhaber sind. Daher solltest du sie im Hintergrund Service verwalten. Sie können dann eine Live-Karte veröffentlichen, sobald der Dienst gestartet wird, oder als Reaktion auf andere Ereignisse, die der Dienst überwacht. Ebenso sollten Sie die Veröffentlichung von Karten aufheben, wenn sie nicht mehr relevant sind oder der Dienst gelöscht wurde.

Wenn Sie eine Live-Karte veröffentlichen, können Sie auswählen, wie sich dies auf die Nutzer auswirkt. Bei der Veröffentlichung im Hintergrund wird die Karte ohne sichtbare Effekt in die Zeitachse eingefügt: Nutzer müssen zum Anzeigen der Karte wischen. Du kannst die Live-Karte auch direkt nach der Veröffentlichung automatisch anzeigen lassen. Dies ist oft nützlich, wenn die Hauptbenutzeroberfläche Ihrer Anwendung eine Live-Karte und keine Aktivität ist.

Inhalte auf einer Live-Karte anzeigen

Auf einer Livekarte können Inhalte entweder aus einer Layoutressource angezeigt werden oder der Code kann direkt auf der Zeichenfläche gerendert werden. Wählen Sie die für Ihre Anwendung am besten geeignete Methode abhängig davon aus, wie häufig Sie den Inhalt der Karte aktualisieren müssen und ob Sie hauptsächlich Widgets oder Freiformgrafiken rendern.

Layout mit Remote-Ansichten erweitern

Wenn deine App nur Standard-Widgets und unregelmäßige Updates benötigt (zwischen den einzelnen Aktualisierungen nur ein paar Sekunden oder länger), kannst du deine Karte mithilfe der Klasse RemoteViews erstellen. Mithilfe des RemoteViews-Objekts kann die Glass-Zeitachse, die in einem anderen Prozess als Ihrem eigenen Anwendungscode ausgeführt wird, ein von Ihnen erstelltes Layout in die Höhe treiben.

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

Sobald eine Karte mit RemoteViews veröffentlicht wurde, sind Änderungen, die durch Aufrufen von set*-Methoden an den Ansichten vorgenommen werden, nur dann in der Zeitachse sichtbar, wenn du setViews für die Live-Karte noch einmal aufrufst, um eine Aktualisierung zu erzwingen.

Direkt auf der Live-Kartenoberfläche zeichnen

Wenn für deine App häufigere Updates (mehrmals pro Sekunde) erforderlich sind oder komplexere Grafiken gerendert werden müssen, als es die Standard-Widgets unterstützen, aktiviere das direkte Rendering und füge eine SurfaceHolder.Callback zur Oberfläche der Karte hinzu.

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

Sie können dann in einem Hintergrundthread direkt auf der Oberfläche oder als Reaktion auf externe Ereignisse (z. B. Sensor- oder Standortaktualisierungen) zeichnen. Mit den Methoden surfaceCreated und surfaceDestroyed können Sie die Renderinglogik starten und stoppen, wenn die Karte ein- oder ausgeblendet wird.

Beachten Sie, dass die Callback-Methoden des Oberflächeninhabers nicht im Haupt-UI-Thread aufgerufen werden.

Umgang mit der Live-Kartenauswahl

Eine Live-Karte muss eine Aktion enthalten (ein PendingIntent zum Starten einer Aktivität, eines Dienstes oder einer Übertragung), die ausgeführt wird, wenn der Nutzer auf die Karte tippt. Normalerweise verwenden Sie diese Aktion, um eine Aktivität zu starten, die ein Optionsmenü anzeigt oder den Nutzer zu einem anderen Teil Ihrer Anwendung führt. Sie sollten zumindest eine Option anbieten, mit der der Nutzer die Live-Karte aus der Zeitachse entfernen kann.

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

Live-Karten ohne Aktion werden nicht angezeigt.

Verschachtelte Klassen
enum LiveCard.PublishMode Hier wird festgelegt, wie dem Nutzer die Karte bei der Veröffentlichung präsentiert wird. 
Konstanten
String EXTRA_FROM_LIVECARD_VOICE Boolesches Extra, das angibt, dass ein Intent per Sprachbefehl von einer Live-Karte aktiviert wurde.
Public Constructors
LiveCard(Context-Kontext, String-Tag)
Public Methods
LiveCard
SurfaceHolder
boolean
void
void
LiveCard
LiveCard
setDirectRenderingEnabled(boolean enable)
LiveCard
LiveCard
setViews(RemoteViews-Ansichten)
LiveCard
setVoiceActionEnabled(boolean enable)
void
Übernommene Methoden

Konstanten

In API-Ebene XE21 hinzugefügt

public static final String EXTRA_FROM_LIVECARD_VOICE

Boolesches Extra, das angibt, dass ein Intent per Sprachbefehl von einer Live-Karte aktiviert wurde.

Konstanter Wert: "android.intent.extra.EXTRA_FROM_LIVECARD"

Public Constructors

In API-Ebene XE16 hinzugefügt

public LiveCard (Context-Kontext, String-Tag)

Erstellt eine Live-Karte mit dem angegebenen Tag.

Beachte, dass eine Karte erst angezeigt wird, wenn sie explizit veröffentlicht wurde.

Parameter
context im Kontext der Anwendung
Tag Nicht-Null-Tag für die Karte; dies dient der Fehlerbehebung

Public Methods

In API-Ebene XE16 hinzugefügt

public LiveCard attach (Dienst-Dienst)

Füge eine Service im Hintergrund hinzu, damit der angegebene Dienst nach der Veröffentlichung dieser Karte im Vordergrund ausgeführt wird.

Der Dienst wird automatisch aus dem Vordergrund entfernt, wenn die Veröffentlichung dieser Live-Karte aufgehoben wird.

Parameter
Dienst wird wie oben beschrieben ausgeführt
Rückgabe
  • Dieses Objekt zur Aufrufverkettung
In API-Ebene XE12 hinzugefügt

public SurfaceHolder getSurfaceHolder ()

Wenn das direkte Rendering aktiviert ist, wird Zugriff auf das Surface gewährt, auf dem gezeichnet werden soll.

Die zurückgegebene SurfaceHolder sollte nur als Mittel für den Zugriff auf die verwaltete Oberfläche verwendet werden. Methoden zum Ändern der Form und des Oberflächentyps sind managementfrei.

Beachten Sie auch, dass Callbacks für dieses Objekt nicht im Benutzeroberflächen-Thread erfolgen.

Weitere Informationen
In API-Ebene XE12 hinzugefügt

public boolean isPublished ()

Gibt true zurück, wenn die Karte gerade veröffentlicht ist.

In API-Ebene XE16 hinzugefügt

public void navigieren ()

Leitet den Nutzer zu dieser Karte in der Zeitachse weiter.

Löst aus
IllegalStateException die Karte nicht veröffentlicht wurde
In API-Ebene XE12 hinzugefügt

public void publish (Modus LiveCard.PublishMode)

Veröffentlicht diese Karte in der Zeitachse.

Die Karte wird nur angezeigt, wenn sie eine Aktion enthält und wenn direktes Rendering aktiviert ist oder Remote-Ansichten festgelegt wurden.

Parameter
Modus legt fest, wie die Karte dem Nutzer präsentiert wird
In API-Ebene XE12 hinzugefügt

public LiveCard setAction (PendingIntent-Intent)

Ändert die Aktion, die ausgeführt wird, wenn die Karte ausgewählt wird.

Parameter
Intent wird ausgelöst, wenn die Karte ausgewählt wird
Rückgabe
  • Dieses Objekt zur Aufrufverkettung
In API-Ebene XE12 hinzugefügt

public LiveCard setDirectRenderingEnabled (boolean enable)

Aktiviert direktes Rendering.

In diesem Modus muss der Karteninhalt direkt in ein Surface gerendert werden.

Diese Methode kann nur aufgerufen werden, wenn die Karte nicht veröffentlicht ist. Andernfalls wird eine Ausnahme ausgelöst.

Parameter
enable ob direktes Rendering aktiviert werden soll
Rückgabe
  • Dieses Objekt zur Aufrufverkettung
Weitere Informationen
In API-Ebene XE16 hinzugefügt

public LiveCard setRenderer (GlRenderer-Renderer)

Fügt einen OpenGL-basierten Renderer hinzu.

Der Renderer wird verwendet, um auf einer Oberfläche zu zeichnen, die für das direkte Rendern angefordert wird (automatisch).

Rückgabe
  • Dieses Objekt zur Aufrufverkettung
In API-Ebene XE12 hinzugefügt

public LiveCard setViews (RemoteViews-Aufrufe)

Ändert den RemoteViews, der zum Anzeigen der UI dieser Karte verwendet wird.

Diese Methode sollte auch aufgerufen werden, nachdem Änderungen direkt an den Remote-Ansichten einer veröffentlichten Karte vorgenommen wurden. Andernfalls werden diese Änderungen nicht in der Zeitachse widergespiegelt.

Diese Methode hat keine Auswirkungen, wenn das direkte Rendering aktiviert ist.

Parameter
Aufrufe der Benutzeroberfläche der Karte
Rückgabe
  • Dieses Objekt zur Aufrufverkettung
Weitere Informationen
In API-Ebene XE21 hinzugefügt

public LiveCard setVoiceActionEnabled (boolean enable)

Aktiviert eine Sprachbedienung, wenn die Karte auf der Zeitachse angezeigt wird.

Wenn diese Option festgelegt ist, wartet die Karte auf "Ok Glass", wenn sie auf der Zeitachse angezeigt wird. Wird diese Guard-Anweisung gesprochen, wird der Intent ausgelöst, der mit der Methode setAction(PendingIntent) festgelegt wurde. Wenn der Intent eine Aktivität startet, die kontextbezogene Sprachmenüs implementiert, öffnet sich die Aktivität automatisch bei den ersten Menüpunkten (z. B. so, als würde in der Aktivität selbst „Ok Glass“ gesprochen). Mit dieser Funktion können kontextbezogene Sprachmenüs auf Live-Karten implementiert werden.

Parameter
enable ob die Sprachbedienung aktiviert werden soll
Rückgabe
  • Dieses Objekt zur Aufrufverkettung
Weitere Informationen
In API-Ebene XE12 hinzugefügt

public void Veröffentlichung aufheben ()

Hebt die Veröffentlichung dieser Karte in der Zeitachse auf.