LiveCard
In diesem Kurs können Sie aktive Karten erstellen und auf der Zeitachse veröffentlichen.
Weitere Informationen zum Erstellen von Live-Karten findest du im Entwicklerleitfaden Live-Karten.
Leben einer Live-Karte
Live-Karten erfordern einen lang andauernden Kontext, damit sie für die gesamte Dauer der Veröffentlichung zur Verfügung stehen. Du solltest sie daher im Hintergrund Service
verwalten. Sie können dann eine Livekarte 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, sobald sie nicht mehr relevant sind oder der Dienst gelöscht wird.
Wenn Sie eine Live-Karte veröffentlichen, können Sie auswählen, wie sich das auf die Nutzer auswirkt. Bei der automatischen Veröffentlichung wird die Karte ohne erkennbaren Effekt in die Zeitachse eingefügt: Nutzer müssen zur Karte wischen, um sie zu sehen. Du kannst die Live-Karte auch automatisch direkt nach der Veröffentlichung anzeigen lassen. Dies ist oft nützlich, wenn die Hauptbenutzeroberfläche Ihrer Anwendung eine Livekarte und keine Aktivität ist.
Inhalte auf einer Live-Karte anzeigen
Auf einer Livekarte können Inhalte entweder aus einer Layoutressource oder direkt auf der Zeichenfläche angezeigt werden. Wählen Sie die für Ihre Anwendung am besten geeignete Methode aus. Diese hängt davon ab, wie häufig Sie den Inhalt der Karte aktualisieren müssen und ob Sie hauptsächlich Widgets oder Grafiken in freiem Format rendern.
Layout mit Remote View aufblähen
Wenn für deine Anwendung nur Standard-Widgets und unregelmäßige Aktualisierungen erforderlich sind (etwa einige Sekunden oder länger zwischen den Aktualisierungen), dann erstelle deine Karte mithilfe der Klasse RemoteViews
.
Mit dem Objekt RemoteViews
kann die Glass-Zeitachse, die in einem separaten Prozess von Ihrem eigenen Anwendungscode ausgeführt wird, ein von Ihnen erstelltes Layout aufblähen.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
Nachdem eine Karte mit RemoteViews
veröffentlicht wurde, sind Änderungen an den Ansichten durch Aufrufen von set*
-Methoden in der Zeitachse nur dann sichtbar, wenn du setViews
auf der Livekarte explizit noch einmal aufrufst, um eine Aktualisierung zu erzwingen.
Direkt auf der Oberfläche der Livekarte zeichnen
Wenn deine Anwendung häufiger (mehrmals pro Sekunde) aktualisiert werden muss oder komplexere Grafiken rendern muss, als die Standard-Widgets unterstützen, aktiviere das direkte Rendering und füge der Karte eine SurfaceHolder.Callback
hinzu.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
Sie können dann direkt auf der Oberfläche in einem Hintergrundthread 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 beenden, wenn die Karte ein- oder ausgeblendet wird.
Die Callback-Methoden des Oberflächeninhabers werden im Haupt-UI-Thread nicht aufgerufen.
Live-Kartenauswahl
Eine Live-Karte muss eine Aktion (PendingIntent
, um eine Aktivität, einen Dienst oder eine Übertragung zu starten) bereitstellen, die ausgeführt wird, wenn der Nutzer auf die Karte tippt, um sie auszuwählen.
Normalerweise werden Sie damit eine Aktivität starten, die ein Optionsmenü anzeigt oder den Nutzer in einen anderen Bereich Ihrer Anwendung führt. Sie sollten zumindest eine Option anbieten, mit der Nutzer die Live-Karte aus der Zeitachse entfernen können.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
Livekarten ohne Aktion werden nicht angezeigt.
Verschachtelte Klassen | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
enum | LiveCard.PublishMode | Bestimmt, wie die Karte dem Nutzer bei der Veröffentlichung präsentiert wird. |
Konstanten | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | EXTRA_FROM_LIVECARD_VOICE | Boolescher Extra-Code, der eine Intent kennzeichnet, wurde per Sprachbefehl von einer Live-Karte aktiviert. |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceHolder | |||||||||||
boolean | |||||||||||
voidm | |||||||||||
voidm |
publish(LiveCard.PublishMode-Modus)
|
||||||||||
LiveCard |
setAction(PendingIntent-Intent)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(Boolesche Aktivierung)
|
||||||||||
LiveCard |
setRenderer(GlRenderer-Renderer)
|
||||||||||
LiveCard |
setViews(RemoteViews-Ansichten)
|
||||||||||
LiveCard |
setVoiceActionEnabled(Boolesche Aktivierung)
|
||||||||||
voidm |
Übernommene Methoden | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Konstanten
Public Constructors
Public Methods
öffentlich LiveCard Anhängen (Dienst)
Hängen Sie eine Service
im Hintergrund an, damit der entsprechende Dienst beim Veröffentlichen 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 künftig ausgeführt |
---|
Gibt Folgendes zurück:
- dieses Objekt für die Aufrufkette
public SurfaceHolder getSurfaceHolder ()
Wenn das direkte Rendering aktiviert ist, wird der Zugriff auf Surface
gewährt, auf dem gezeichnet wird.
Das zurückgegebene SurfaceHolder
sollte einfach als Mittel für den Zugriff auf die verwaltete Oberfläche verwendet werden. Die Methode zum Ändern der Form und des Oberflächentyps ist „No-Ops“.
Beachten Sie auch, dass Callbacks für dieses Objekt nicht im UI-Thread erfolgen.
Weitere Informationen
Öffentlich Boolesch isPublish ()
Gibt true
zurück, wenn die Karte derzeit veröffentlicht ist.
öffentlich void navigieren ()
Der Nutzer wird in der Zeitachse zu dieser Karte weitergeleitet.
Löst aus
IllegalStateException | wenn die Karte nicht veröffentlicht ist |
---|
öffentlich void Veröffentlichen (LiveCard.PublishMode-Modus)
Die Karte wird auf der Zeitachse veröffentlicht.
Die Karte wird nur angezeigt, wenn eine Aktion vorhanden und das direkte Rendering aktiviert oder Remote-Ansichten festgelegt sind.
Parameter
Modus | bestimmt, 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 |
---|
Gibt Folgendes zurück:
- dieses Objekt für die Aufrufkette
public LiveCard setDirectRenderingEnabled (boolesche Aktivierung)
Aktiviert das direkte Rendering.
In diesem Modus muss der Karteninhalt direkt in einem Surface
gerendert werden.
Diese Methode kann nur aufgerufen werden, wenn die Karte nicht veröffentlicht ist. Andernfalls wird eine Ausnahme ausgelöst.
Parameter
aktivieren | ob das direkte Rendering aktiviert werden soll |
---|
Gibt Folgendes zurück:
- dieses Objekt für die Aufrufkette
Weitere Informationen
öffentlich LiveCard setRenderer (GlRenderer-Renderer)
Fügt einen OpenGL-basierten Renderer hinzu.
Der Renderer wird zum Zeichnen auf einer Oberfläche verwendet, die für das direkte Rendering (automatisch) angefordert wird.
Gibt Folgendes zurück:
- dieses Objekt für die Aufrufkette
public LiveCard setViews (RemoteViews-Aufrufe)
Ändert die RemoteViews
, mit der die Benutzeroberfläche dieser Karte angezeigt 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 auf der Zeitachse berücksichtigt.
Diese Methode hat keine Auswirkungen, wenn das direkte Rendering aktiviert ist.
Parameter
Aufrufe | Benutzeroberfläche der Karte |
---|
Gibt Folgendes zurück:
- dieses Objekt für die Aufrufkette
Weitere Informationen
öffentlich LiveCard setVoiceActionEnabled (boolesche Aktivierung)
Aktiviert die Sprachbedienung, wenn die Karte auf der Zeitachse zu sehen ist
Wenn diese Option festgelegt ist, wartet die Karte auf der Zeitachse auf „Ok Glass“ und löst, wenn die Guard-Anweisung ausgesprochen wird, den Intent aus, der von der Methode setAction(PendingIntent)
festgelegt wurde. Wenn der Intent eine Aktivität startet, mit der kontextbezogene Sprachmenüs implementiert werden, wird die Aktivität automatisch bei den ersten Menüelementen geöffnet (wie so, als ob "Ok Glass" in der Aktivität selbst gesprochen wurde). Mit dieser Funktion können Sie Kontextmenüs mit gesprochenem Text auf Live-Karten implementieren.
Parameter
aktivieren | ob die Sprachbedienung aktiviert werden soll |
---|
Gibt Folgendes zurück:
- dieses Objekt für die Aufrufkette
Weitere Informationen
öffentlich void Nicht veröffentlichen ()
Veröffentlichung dieser Karte auf der Zeitachse wird aufgehoben.