LiveCard
Questo corso ti consente di creare schede attive e pubblicarle nella sequenza temporale.
Per ulteriori informazioni su come creare schede pubblicate, consulta la guida per gli sviluppatori Schede pubblicate.
Durata di una scheda pubblicata
Le schede pubblicate richiedono un contesto di lunga durata per poter essere proprietarie per l'intera volta che vengono pubblicate, quindi devi gestirle in background Service
. Potrai quindi pubblicare una scheda pubblicata non appena il servizio viene avviato o in risposta ad altri eventi monitorati. Analogamente, devi annullare la pubblicazione delle schede quando non sono più pertinenti o quando il servizio viene eliminato.
Quando pubblichi una scheda pubblicata, puoi scegliere l'impatto sugli utenti. Quando la pubblicazione avviene in modalità silenziosa, la scheda verrà inserita nella sequenza temporale senza alcun effetto visibile: gli utenti dovranno scorrere fino alla scheda per visualizzarla. Puoi anche visualizzare automaticamente la scheda pubblicata subito dopo la pubblicazione. Questo è spesso utile quando l'interfaccia utente principale della tua applicazione è una scheda pubblicata e non un'attività.
Visualizzazione di contenuti in una scheda pubblicata
Una scheda attiva può visualizzare i contenuti di una risorsa di layout o consentendo il rendering del codice direttamente sulla sua superficie di disegno. Scegli il metodo più appropriato per la tua applicazione in base alla frequenza con cui devi aggiornare i contenuti sulla scheda e al rendering principale di widget o di grafica in formato libero.
Gonfiare un layout utilizzando le visualizzazioni remote
Se la tua applicazione richiede solo widget standard e aggiornamenti non frequenti (circa qualche secondo o più tra un aggiornamento e l'altro), crea la tua scheda con l'aiuto della classe RemoteViews
.
L'oggetto RemoteViews
consente alla sequenza temporale di Glass, che viene eseguita in un processo separato dal codice della tua applicazione, di gonfiare un layout creato da te.
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 chiamando i metodi set*
non saranno visibili nella sequenza temporale a meno che non richiami esplicitamente setViews
sulla scheda pubblicata per forzare un aggiornamento.
Disegnare direttamente sulla superficie della carta in tempo reale
Se la tua applicazione richiede aggiornamenti più frequenti (diverse volte al secondo) o il rendering di immagini più elaborate rispetto al supporto dei widget standard, abilita il rendering diretto e aggiungi un elemento SurfaceHolder.Callback
alla superficie della scheda.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
Puoi quindi disegnare direttamente sulla superficie all'interno di un thread in background o in risposta a eventi esterni (ad esempio, sensori o aggiornamenti sulla posizione). Utilizza i metodi surfaceCreated
e surfaceDestroyed
per avviare e interrompere la logica di rendering quando la scheda viene visualizzata o nascosta.
Tieni presente che i metodi di callback del proprietario della piattaforma non vengono richiamati sul thread dell'interfaccia utente principale.
Gestione della selezione della scheda pubblicata
Una scheda pubblicata deve fornire un'azione (PendingIntent
per avviare un'attività, un servizio o una trasmissione) che verrà eseguita quando l'utente tocca per selezionare la scheda.
Normalmente utilizzerai questa azione per avviare un'attività che mostra un menu opzioni o porta l'utente in un'altra parte dell'applicazione. Devi fornire almeno un'opzione che consenta all'utente di rimuovere la scheda in tempo reale dalla sequenza temporale.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
Le schede pubblicate che non presentano un'azione non verranno visualizzate.
Lezioni nidificate | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
enum | LiveCard.PublishMode | Determina il modo in cui la scheda viene presentata all'utente al momento della pubblicazione. |
Costanti | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Stringa | ADDITIONAL_FROM_LIVECARD_VOICE | L'extra booleano che indica un Intent è stato attivato tramite comandi vocali da una scheda pubblicata. |
Costruttori pubblici | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Metodi pubblici | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
Supporto per piattaforma | |||||||||||
boolean | |||||||||||
nullo |
navigare()
|
||||||||||
nullo |
publish(modalità LiveCard.PublishMode)
|
||||||||||
LiveCard |
setAction(intent PendingIntent)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(attivazione booleana)
|
||||||||||
LiveCard |
setRenderer(renderer GlRenderer)
|
||||||||||
LiveCard |
setViews(RemoteViews viste)
|
||||||||||
LiveCard |
setVoiceActionEnabled(attivazione booleana)
|
||||||||||
nullo |
Metodi ereditati | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Costanti
Costruttori pubblici
pubblica LiveCard (contesto contesto, tag string)
Crea una scheda pubblicata con il tag specificato.
Tieni presente che la scheda non viene visualizzata fino alla pubblicazione esplicita.
Parametri
context | il contesto dell'applicazione |
---|---|
tag (m.) | un tag non null per la scheda, utile per il debug |
Metodi pubblici
pubblica LiveCard alleghi (servizio)
Allega uno sfondo Service
in modo che, quando questa scheda verrà pubblicata, il servizio specificato verrà impostato per essere eseguito in primo piano.
Il servizio verrà rimosso automaticamente dalla visualizzazione in primo piano quando viene annullata la pubblicazione di questa scheda pubblicata.
Parametri
servizio | verrà impostato in modo da essere eseguito in Foregound |
---|
Valori restituiti
- questo oggetto per la concatenazione delle chiamate
pubblico Surfaceholder getSurfaceholder ()
Se il rendering diretto è attivato, dà accesso a Surface
su cui disegnare.
Tieni presente che l'elemento SurfaceHolder
restituito dovrebbe essere utilizzato semplicemente come mezzo per accedere alla
piattaforma gestita. I metodi per modificare la forma e il tipo di superficie non sono interventi.
Tieni inoltre presente che i callback per questo oggetto non vengono effettuati nel thread dell'UI.
Vedi anche
pubblico booleano isPublication ()
Restituisce true
se la scheda è attualmente pubblicata.
pubblico void naviga ()
Indirizza l'utente a questa scheda nella sequenza temporale.
Genera
Eccezione stato illegale | se la carta non è stata pubblicata |
---|
pubblico null pubblica (modalità LiveCard.PublishMode)
Pubblica questa scheda nella sequenza temporale.
La scheda viene visualizzata solo se presenta un'azione e se è attiva la visualizzazione diretta o sono state impostate le visualizzazioni da remoto.
Parametri
modalità | determina il modo in cui la scheda viene presentata all'utente |
---|
pubblico LiveCard setAction (intentintent)
Modifica l'azione eseguita quando viene selezionata la scheda.
Parametri
intent | verrà attivato quando viene selezionata la scheda |
---|
Valori restituiti
- questo oggetto per la concatenazione delle chiamate
pubblico LiveCard setDirectRenderingEnabled (attivazione booleana)
Consente il rendering diretto.
In questa modalità, i contenuti della scheda dovranno essere visualizzati direttamente in un Surface
.
Tenete presente che questo metodo può essere chiamato solo quando la scheda non è pubblicata e altrimenti presenterà un'eccezione.
Parametri
Attiva | se il rendering diretto deve essere abilitato |
---|
Valori restituiti
- questo oggetto per la concatenazione delle chiamate
Vedi anche
pubblico LiveCard setRenderer (renderer GlRenderer)
Aggiunge un renderer basato su OpenGL.
Il renderer verrà utilizzato per disegnare su una superficie richiesta (automaticamente) per il rendering diretto.
Valori restituiti
- questo oggetto per la concatenazione delle chiamate
pubblica LiveCard setViews (ViewView)
Modifica il RemoteViews
utilizzato per visualizzare l'UI di questa scheda.
Questo metodo deve essere chiamato anche dopo aver apportato modifiche alle visualizzazioni remote di una scheda pubblicata, altrimenti queste modifiche non verranno riportate nella sequenza temporale.
Questo metodo non ha effetto se viene attivato il rendering diretto.
Parametri
di visualizzazioni | l'UI della scheda |
---|
Valori restituiti
- questo oggetto per la concatenazione delle chiamate
Vedi anche
pubblico LiveCard setVoiceActionEnabled (attivazione booleana)
Consente di attivare un'azione vocale quando la scheda viene visualizzata nella sequenza temporale.
Se impostata, la scheda rimane in ascolto se viene mostrato il comando "ok Glass" nella sequenza temporale e, quando viene pronunciata questa frase di guardia, attiva l'intent impostato dal metodo setAction(PendingIntent)
. Se l'intent avvia un'attività che implementa i menu vocali contestuali, l'attività si aprirà automaticamente sulle prime voci del menu (ad esempio, come se fosse stato pronunciato "ok Glass" all'interno dell'attività stessa). Questa funzionalità consente di implementare menu vocali contestuali sulle schede pubblicate.
Parametri
Attiva | se l'azione vocale deve essere abilitata |
---|
Valori restituiti
- questo oggetto per la concatenazione delle chiamate
Vedi anche
pubblico void annulla pubblicazione ()
Annulla la pubblicazione di questa scheda dalla cronologia.