LiveCard
Te zajęcia pozwalają tworzyć aktywne karty i publikować je na osi czasu.
Więcej informacji o tworzeniu kart na żywo znajdziesz w przewodniku dla deweloperów na temat aktywnych kart.
Żywotna karta
Karty na żywo wymagają kontekstu od dłuższego czasu przez cały czas ich publikacji, dlatego należy nimi zarządzać w tle: Service
. Następnie możesz opublikować aktywną kartę zaraz po uruchomieniu usługi lub w odpowiedzi na inne zdarzenia, które usługa monitoruje. I podobnie, należy cofnąć publikację kart, gdy nie będą już istotne lub gdy usługa zostanie zniszczona.
Podczas publikowania karty możesz wybrać, jaki ma to wpływ na użytkowników. Podczas publikowania dyskretnego karta jest wstawiana na osi czasu bez widocznego efektu. Aby ją zobaczyć, użytkownik musi ją przesunąć. Opublikowaną kartę możesz też automatycznie wyświetlać bezpośrednio po jej opublikowaniu. Jest to często przydatne, gdy głównym interfejsem aplikacji jest karta aktywna, a nie aktywność.
Wyświetlam treści na aktywnej karcie
Karta aktywna może wyświetlać treść z zasobu układu lub przez umożliwienie renderowania kodu bezpośrednio na jego powierzchni roboczej. Wybierz metodę, która najlepiej pasuje do Twojej aplikacji na podstawie tego, jak często musisz aktualizować zawartość karty i czy renderujesz głównie widżety czy grafikę swobodną.
Zawyżanie układu za pomocą widoków zdalnych
Jeśli Twoja aplikacja wymaga tylko standardowych widżetów i rzadkich aktualizacji (co najmniej kilka sekund między odświeżeniami), utwórz kartę za pomocą klasy RemoteViews
.
Obiekt RemoteViews
umożliwia oś czasu Google Glass uruchamianą w ramach niezależnego procesu od własnego kodu aplikacji. Umożliwia załadowanie utworzonego wcześniej układu.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
Pamiętaj, że gdy opublikujesz kartę za pomocą RemoteViews
, zmiany w widokach wywołanych przez metody set*
nie będą widoczne na osi czasu, chyba że ponownie wywołasz setViews
na aktywnej karcie, aby wymusić aktualizację.
Rysowanie bezpośrednio na aktywnej karcie
Jeśli Twoja aplikacja wymaga częstszych aktualizacji (kilka razy na sekundę) lub renderowania bardziej wyrafinowanej grafiki niż standardowa widżety, włącz bezpośrednie renderowanie i dodaj SurfaceHolder.Callback
na ekranie karty.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
Możesz potem rysować bezpośrednio na powierzchni w wątku w tle lub w odpowiedzi na zdarzenia zewnętrzne (np. aktualizacje czujników lub lokalizacji). Użyj metod surfaceCreated
i surfaceDestroyed
, aby uruchomić lub zatrzymać logikę renderowania, gdy karta jest widoczna lub ukryta.
Pamiętaj, że metody wywołania zwrotnego właściciela platformy nie są wywoływane w głównym wątku UI.
Obsługa aktywnej karty
Karta na żywo musi zawierać działanie (PendingIntent
umożliwiające uruchomienie aktywności, usługi lub transmisji), które zostanie wykonane, gdy użytkownik kliknie kartę.
Zwykle wykonuje się to działanie, które powoduje wyświetlenie menu opcji lub przeniesienie użytkownika do innej części aplikacji. Udostępnij przynajmniej opcję, która pozwala użytkownikowi usunąć aktywną kartę z osi czasu.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
Karty na żywo, które nie zawierają akcji, nie są wyświetlane.
Zajęcia zagnieżdżone | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
enum | typ wyliczeniowy | LiveCard.OpublikujTryb | Określa sposób prezentowania karty użytkownikowi po jej opublikowaniu. |
Stałe | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Ciąg | EKSPERYMENT_Z_KARTY_LIVE | Wartość logiczna wskazująca, że Intent został aktywowany głosowo na podstawie karty na żywo. |
Konstruktorzy publiczny | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Metody publiczne | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceHolder, | |||||||||||
wartość logiczna | |||||||||||
nieważny | |||||||||||
nieważny | |||||||||||
LiveCard |
setAction(intencja PendingIntent)
|
||||||||||
LiveCard |
setDirectrenderEnabled(wartość logiczna włączona)
|
||||||||||
LiveCard |
setRenderer (mechanizm renderowania GlRenderer)
|
||||||||||
LiveCard |
setViews(widoki RemoteViews)
|
||||||||||
LiveCard |
setVoiceActionEnabled(wartość logiczna włączona)
|
||||||||||
nieważny |
Metody dziedziczone | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Stałe
publiczna statyczna, ostateczna ciąg znaków EXTRA_FROM_LIVECARD_VOICE
Wartość logiczna wskazująca, że Intent
został aktywowany głosowo na podstawie karty na żywo.
Konstruktorzy publiczny
Metody publiczne
public LiveCard dołącz (usługa)
Dołącz tło Service
, aby po opublikowaniu tej karty nastąpiło uruchomienie na pierwszym planie.
Usługa zostanie automatycznie usunięta z pierwszego planu po cofnięciu publikacji aktywnej karty.
Parametry
usługa | zostanie uruchomione w prasie |
---|
Zwraca
- ten obiekt na potrzeby łańcucha połączeń
publicznie SurfaceHolder getSurfaceHolder ()
Gdy włączone jest renderowanie bezpośrednie, użytkownik otrzymuje dostęp do Surface
, na którym może rysować.
Zwróć wartość SurfaceHolder
, aby uzyskać dostęp do platformy zarządzanej. Metody zmiany kształtu i typu powierzchni nie są operacją.
Pamiętaj, że wywołania zwrotne tego obiektu nie są wykonywane w wątku użytkownika.
Zobacz również
publiczne wartość logiczna isOpublikowano ()
Zwraca wartość true
, jeśli karta jest obecnie opublikowana.
public void nawigacja ()
Wysyła użytkownika na tę kartę na osi czasu.
Wyrzuca
ExceptionStateState | jeśli karta nie została opublikowana; |
---|
publiczne nieważne publish (tryb LiveCard.publishMode)
Publikuje tę kartę na osi czasu.
Karta zostanie wyświetlona tylko wtedy, gdy zawiera działanie, a renderowanie bezpośrednie jest włączone lub ustawiono widoki zdalne.
Parametry
tryb | określa sposób wyświetlania karty użytkownikowi |
---|
publicznie LiveCard setAction (PendingIntent)
Zmienia działanie wykonane po wybraniu karty.
Parametry
intencja | zostaną uruchomione po wybraniu karty |
---|
Zwraca
- ten obiekt na potrzeby łańcucha połączeń
publicznie LiveCard setDirectrenderEnabled (wartość logiczna włączona)
Umożliwia renderowanie bezpośrednie.
W tym trybie treść karty musi być renderowana bezpośrednio w Surface
.
Tę metodę można wywołać tylko wtedy, gdy karta nie została opublikowana. W przeciwnym razie zostanie wywołany wyjątek.
Parametry
włącz | Określa, czy ma być włączone renderowanie bezpośrednie. |
---|
Zwraca
- ten obiekt na potrzeby łańcucha połączeń
Zobacz również
publicznie LiveCard setRenderer (render GlRenderer)
Dodaje mechanizm renderowania oparty na OpenGL.
Wyrenderer będzie używany do rysowania na żądanej powierzchni (automatycznie) na potrzeby bezpośredniego renderowania.
Zwraca
- ten obiekt na potrzeby łańcucha połączeń
publicznie LiveCard setViews (Wyświetlenia zdalne)
Zmienia atrybuty interfejsu RemoteViews
używane do wyświetlania interfejsu tej karty.
Tę metodę należy też wywołać po wprowadzeniu zmian bezpośrednio w zdalnych widokach opublikowanej karty. Takie zmiany nie zostaną odzwierciedlone na osi czasu.
Ta metoda nie działa, jeśli włączone jest renderowanie bezpośrednie.
Parametry
wyświetleń | interfejs karty |
---|
Zwraca
- ten obiekt na potrzeby łańcucha połączeń
Zobacz również
publicznie LiveCard setVoiceActionEnabled (wartość logiczna włączona)
Włącza komendę głosową, gdy karta jest wyświetlana na osi czasu.
Po ustawieniu karta nasłuchuje komunikatu „OK Glass” na osi czasu, a gdy wypowiadana jest fraza zabezpieczająca, uruchamia intencję określoną metodą setAction(PendingIntent)
. Jeśli intencja uruchomi działanie, które implementuje kontekstowe menu głosowe, zostanie ono automatycznie otwarte w przypadku pierwszych elementów menu (np. jakby w oknie było wypowiadane „OK Google”). Ta funkcja pozwala wdrożyć kontekstowe menu głosowe na kartach na żywo.
Parametry
włącz | Określa, czy komenda głosowa powinna być włączona. |
---|
Zwraca
- ten obiekt na potrzeby łańcucha połączeń
Zobacz również
public void cofnięcie publikacji ()
Cofnięcie publikacji tej karty na osi czasu.