LiveCard
Questo corso ti consente di creare schede attive e pubblicarle nella sequenza temporale.
Per ulteriori informazioni su come creare schede attive, consulta la Guida per gli sviluppatori sulle schede attive.
La vita di una scheda pubblicata
Le schede live richiedono un contesto di lunga durata per essere loro proprietarie
pubblicate, quindi dovresti gestirle in background Service
. Puoi quindi
pubblicare una scheda dal vivo non appena viene avviato il servizio o in risposta ad altri eventi che
il monitoraggio del servizio. Allo stesso modo, dovresti annullare la pubblicazione delle schede quando non sono più pertinenti o quando
viene eliminato il servizio.
Quando pubblichi una scheda pubblicata, puoi scegliere l'impatto che avrà sugli utenti. Quando pubblichi in modalità silenziosa, la scheda verrà inserita nella sequenza temporale senza alcun effetto visibile: gli utenti devono scorrere per la scheda per vederla. Puoi anche fare in modo che la scheda live venga visualizzata automaticamente subito dopo pubblicato. Ciò è spesso utile quando l'interfaccia utente principale dell'applicazione è una scheda online. e non un'attività.
Visualizzazione dei contenuti in una scheda pubblicata
Una scheda live può mostrare contenuti provenienti da una risorsa di layout o consentendo il rendering del codice direttamente sulla superficie di disegno. Scegli il metodo più appropriato per la tua applicazione sulla frequenza con cui devi aggiornare i contenuti della scheda e se il rendering principale è widget o grafiche in formato libero.
gonfiare un layout utilizzando le visualizzazioni remote
Se la tua applicazione richiede solo widget standard e aggiornamenti non frequenti (circa alcuni secondi o
più a lungo tra un aggiornamento e l'altro), quindi crea la tua scheda con l'aiuto del corso RemoteViews
.
L'oggetto RemoteViews
consente alla sequenza temporale di Glass, che viene eseguita in un processo separato da
il codice della tua applicazione, gonfia un layout che hai creato.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
Tieni presente che, una volta pubblicata una scheda che utilizza RemoteViews
, le modifiche apportate alle visualizzazioni
la chiamata ai metodi set*
non sarà visibile nella sequenza temporale a meno che non richiami esplicitamente
setViews
sulla scheda pubblicata per forzare di nuovo un aggiornamento.
Disegnare direttamente sulla superficie della scheda pubblicata
Se la tua applicazione richiede aggiornamenti più frequenti (diverse volte al secondo) o un numero maggiore di
una grafica elaborata rispetto al supporto standard per i widget, abilitano il rendering diretto e aggiungono un
SurfaceHolder.Callback
sulla superficie della carta.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
Puoi quindi disegnare direttamente sulla superficie all'interno di un thread sullo sfondo o in risposta a
eventi (ad esempio aggiornamenti di sensori o di posizione). Utilizza surfaceCreated
e
surfaceDestroyed
metodi per avviare e interrompere la logica di rendering quando la scheda viene
visualizzate o nascoste.
Tieni presente che i metodi di callback del Proprietario della superficie non sono richiamati sul thread della UI principale.
Gestione della selezione delle schede attive
Una scheda attiva deve fornire un'azione (PendingIntent
per iniziare un'attività,
servizio o una trasmissione) che verrà eseguita quando l'utente tocca per selezionare la carta.
Normalmente userai questa azione per avviare un'attività che mostra un menu di opzioni o
l'utente in un'altra parte della tua applicazione. Come minimo, dovresti offrire la possibilità
che consente all'utente di rimuovere
la scheda pubblicata dalla sequenza temporale.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
Le schede attive che non contengono un'azione non verranno visualizzate.
Classi nidificate | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
enum | LiveCard.PublishMode | Determina il modo in cui la scheda viene presentata all'utente quando viene pubblicata. |
Costanti | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | EXTRA_FROM_LIVECARD_VOICE | Extra booleano che indica che Intent è stato attivato dalla voce da una scheda in tempo reale. |
Costruttori pubblici | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Metodi pubblici | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceHolder | |||||||||||
booleano | |||||||||||
null |
navigate()
|
||||||||||
null |
publish(modalità LiveCard.PublishMode)
|
||||||||||
LiveCard |
setAction(intent PendingIntent)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(abilitazione booleana)
|
||||||||||
LiveCard |
setRenderer(Renderer GlRenderer)
|
||||||||||
LiveCard |
setViews(RemoteViews viste)
|
||||||||||
LiveCard |
setVoiceActionEnabled(abilitazione booleana)
|
||||||||||
null |
Metodi ereditati | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Costanti
Costruttori pubblici
pubblica . LiveCard (Contesto Contesto, tag Stringa)
Crea una scheda attiva con il tag specificato.
Tieni presente che una scheda non viene visualizzata finché non viene pubblicata esplicitamente.
Parametri
contesto | il contesto dell'applicazione |
---|---|
tag | un tag non null della carta. per eseguire il debug |
Metodi pubblici
pubblica LiveCard allega (servizio servizio)
Allega uno sfondo Service
in modo che quando questa carta venga
pubblicato, il servizio verrà impostato per l'esecuzione in primo piano.
Il servizio verrà rimosso automaticamente dal primo piano quando la pubblicazione della scheda live è stata annullata.
Parametri
servizio | verrà impostato per essere eseguito in futuro |
---|
Resi
- questo oggetto per il concatenamento delle chiamate
pubblica SurfaceHolder getSurfaceHolder ()
Quando il rendering diretto è attivo, consente l'accesso all'elemento Surface
su cui disegnare.
Tieni presente che il valore SurfaceHolder
restituito deve essere utilizzato semplicemente come mezzo per accedere a
piattaforma gestita. I metodi per alterare la forma e il tipo di superficie non sono operazioni di questo tipo.
Tieni inoltre presente che i callback per questo oggetto non vengono effettuati nel thread dell'interfaccia utente.
Argomenti correlati
pubblica booleano . isPublished ()
Restituisce true
se la carta è attualmente pubblicata.
pubblica null . navigare ()
Invia l'utente a questa scheda nella sequenza temporale.
Lanci
IllegalStateException | se la scheda non è pubblicata |
---|
pubblica null . pubblica (modalità LiveCard.PublishMode)
Pubblica questa scheda nella sequenza temporale.
La scheda verrà mostrata solo se ha un'azione e se il rendering diretto è abilitato oppure visualizzazioni remote sono state impostate.
Parametri
modalità | determina il modo in cui la scheda viene presentata all'utente |
---|
pubblica LiveCard setAction (intent PendingIntent)
Modifica l'azione eseguita quando viene selezionata la scheda.
Parametri
intent | verrà attivato quando la carta sarà selezionata |
---|
Resi
- questo oggetto per il concatenamento delle chiamate
pubblica LiveCard setDirectRenderingEnabled (booleano abilitato)
Attiva il rendering diretto.
In questa modalità, i contenuti della scheda dovranno essere visualizzati direttamente in un Surface
.
Tieni presente che questo metodo può essere chiamato solo quando la scheda non è pubblicata, in caso contrario genera un'eccezione.
Parametri
attiva | se attivare il rendering diretto |
---|
Resi
- questo oggetto per il concatenamento delle chiamate
Argomenti correlati
pubblica LiveCard setRenderer (Renderer GlRenderer)
Aggiunge un renderer basato su OpenGL.
Il renderer verrà utilizzato per disegnare su una piattaforma richiesta (automaticamente) per per il rendering delle immagini.
Resi
- questo oggetto per il concatenamento delle chiamate
pubblica LiveCard setViews (RemoteViews)
Modifica il valore RemoteViews
utilizzato per visualizzare l'UI di questa scheda.
Questo metodo deve essere chiamato anche dopo aver apportato modifiche direttamente alle viste remote una scheda pubblicata, altrimenti tali modifiche non si rifletteranno sulla cronologia.
Questo metodo non ha alcun effetto se il rendering diretto è abilitato.
Parametri
visualizzazioni | nell'interfaccia utente della scheda |
---|
Resi
- questo oggetto per il concatenamento delle chiamate
Argomenti correlati
pubblica LiveCard setVoiceActionEnabled (booleano abilitato)
Consente di attivare un'azione vocale quando la scheda viene mostrata nella sequenza temporale.
Se impostata, la scheda rimane in ascolto di "ok Glass" quando vengono mostrati nella sequenza temporale
quando viene pronunciata questa frase di guardia, attiva l'intento stabilito dal
setAction(PendingIntent)
. Se l'intent avvia un
all'attività che implementa i menu vocali contestuali, l'attività verrà automaticamente
apri le prime voci di menu (come se all'interno dell'attività si pronunciasse "ok glass"
). Questa funzionalità consente di implementare menu vocali contestuali nelle schede attive.
Parametri
attiva | se attivare l'azione vocale |
---|
Resi
- questo oggetto per il concatenamento delle chiamate
Argomenti correlati
pubblica null . annullare la pubblicazione ()
Consente di annullare la pubblicazione di questa scheda dalla cronologia.