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 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceHolder | |||||||||||
boolean | |||||||||||
void | |||||||||||
void |
publish(Modus LiveCard.PublishMode)
|
||||||||||
LiveCard |
setAction(PendingIntent-Intent)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(boolean enable)
|
||||||||||
LiveCard |
setRenderer(GlRenderer-Renderer)
|
||||||||||
LiveCard |
setViews(RemoteViews-Ansichten)
|
||||||||||
LiveCard |
setVoiceActionEnabled(boolean enable)
|
||||||||||
void |
Übernommene Methoden | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Konstanten
Public Constructors
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
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
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
public boolean isPublished ()
Gibt true
zurück, wenn die Karte gerade veröffentlicht ist.
public void navigieren ()
Leitet den Nutzer zu dieser Karte in der Zeitachse weiter.
Löst aus
IllegalStateException | die Karte nicht veröffentlicht wurde |
---|
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 |
---|
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
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
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
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
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
public void Veröffentlichung aufheben ()
Hebt die Veröffentlichung dieser Karte in der Zeitachse auf.