LiveCard

In API-Ebene XE12 hinzugefügt
öffentlicher Kurs

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
LiveCard(Context-Kontext, String-Tag)
Public Methods
LiveCard
SurfaceHolder
boolean
voidm
voidm
LiveCard
LiveCard
setDirectRenderingEnabled(Boolesche Aktivierung)
LiveCard
LiveCard
setViews(RemoteViews-Ansichten)
LiveCard
setVoiceActionEnabled(Boolesche Aktivierung)
voidm
Übernommene Methoden

Konstanten

In API-Ebene XE21 hinzugefügt

public static final String EXTRA_FROM_LIVECARD_VOICE

Boolescher Extra-Code, der eine Intent kennzeichnet, wurde per Sprachbefehl von einer Live-Karte aktiviert.

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

Public Constructors

In API-Ebene XE16 hinzugefügt

public LiveCard (Context context, String tag)

Erstellt eine Live-Karte mit dem angegebenen Tag.

Eine Karte wird erst angezeigt, wenn sie explizit veröffentlicht wurde.

Parameter
Kontext Kontext der Anwendung
Tag Tag, das nicht null ist, für die Fehlerbehebung

Public Methods

In API-Ebene XE16 hinzugefügt

ö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
In API-Ebene XE12 hinzugefügt

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
In API-Ebene XE12 hinzugefügt

Öffentlich Boolesch isPublish ()

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

In API-Ebene XE16 hinzugefügt

öffentlich void navigieren ()

Der Nutzer wird in der Zeitachse zu dieser Karte weitergeleitet.

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

ö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
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
Gibt Folgendes zurück:
  • dieses Objekt für die Aufrufkette
In API-Ebene XE12 hinzugefügt

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
In API-Ebene XE16 hinzugefügt

ö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
In API-Ebene XE12 hinzugefügt

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
In API-Ebene XE21 hinzugefügt

ö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
In API-Ebene XE12 hinzugefügt

öffentlich void Nicht veröffentlichen ()

Veröffentlichung dieser Karte auf der Zeitachse wird aufgehoben.