LiveCard

Aggiunto nel livello API XE12
lezione pubblica

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
LiveCard(contesto Context, tag String)
Metodi pubblici
LiveCard
attach (servizio Service)
Supporto per piattaforma
boolean
nullo
nullo
LiveCard
LiveCard
setDirectRenderingEnabled(attivazione booleana)
LiveCard
LiveCard
LiveCard
setVoiceActionEnabled(attivazione booleana)
nullo
Metodi ereditati

Costanti

Aggiunto nel livello API XE21

pubblico statico finale Stringa extra_FROM_LIVECARD_VOICE

L'extra booleano che indica un Intent è stato attivato tramite comandi vocali da una scheda pubblicata.

Valore costante: "android.intent.extra.extra_FROM_LIVECARD"

Costruttori pubblici

Aggiunto nel livello API XE16

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

Aggiunto nel livello API XE16

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
Aggiunto nel livello API XE12

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.

Aggiunto nel livello API XE12

pubblico booleano isPublication ()

Restituisce true se la scheda è attualmente pubblicata.

Aggiunto nel livello API XE16

pubblico void naviga ()

Indirizza l'utente a questa scheda nella sequenza temporale.

Genera
Eccezione stato illegale se la carta non è stata pubblicata
Aggiunto nel livello API XE12

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
Aggiunto nel livello API XE12

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
Aggiunto nel livello API XE12

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
Aggiunto nel livello API XE16

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
Aggiunto nel livello API XE12

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
Aggiunto nel livello API XE21

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
Aggiunto nel livello API XE12

pubblico void annulla pubblicazione ()

Annulla la pubblicazione di questa scheda dalla cronologia.