LiveCard
Esta clase te permite crear tarjetas activas y publicarlas en el cronograma.
Si deseas obtener más información para crear tarjetas en vivo, consulta la guía para desarrolladores sobre tarjetas en vivo.
Ciclo de una tarjeta publicada
Las tarjetas dinámicas requieren un contexto de ejecución prolongada para poseerlas durante todo el tiempo en que se publican, por lo que debes administrarlas en segundo plano en Service
. Luego, puedes publicar una tarjeta publicada apenas se inicie el servicio o en respuesta a otros eventos que supervise el servicio. Del mismo modo, debes anular la publicación de las tarjetas una vez que ya no sean relevantes o cuando se destruya el servicio.
Cuando publicas una tarjeta publicada, puedes elegir cómo se verá afectada la experiencia de los usuarios. Cuando se publica de manera silenciosa, la tarjeta se inserta en el cronograma sin ningún efecto visible: los usuarios tienen que deslizar el dedo hacia la tarjeta para verla. También puedes hacer que la tarjeta publicada se muestre automáticamente justo después de publicarla. Esto suele ser útil cuando la interfaz de usuario principal de tu aplicación es una tarjeta publicada y no una actividad.
Cómo mostrar contenido en una tarjeta publicada
Una tarjeta publicada puede mostrar contenido desde un recurso de diseño o permitiendo que el código se renderice directamente en la superficie de dibujo. Elige el método más adecuado para tu aplicación según la frecuencia con la que necesites actualizar el contenido de la tarjeta y si renderizas principalmente widgets o gráficos de formato libre.
Cómo aumentar un diseño con vistas remotas
Si tu aplicación solo requiere widgets estándar y actualizaciones poco frecuentes (unos segundos o más entre actualizaciones), entonces crea tu tarjeta con la ayuda de la clase RemoteViews
.
El objeto RemoteViews
permite que el cronograma de Glass, que se ejecuta en un proceso separado del código de tu aplicación, aumente un diseño que creaste.
LiveCard liveCard; // initialized elsewhere RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.my_layout); liveCard.setViews(views);
Ten en cuenta que, una vez que se publique una tarjeta que usa RemoteViews
, los cambios realizados en las vistas mediante los métodos set*
no serán visibles en el cronograma, a menos que vuelvas a llamar explícitamente a setViews
en la tarjeta publicada para forzar una actualización.
Cómo dibujar directamente en la superficie de la tarjeta publicada
Si tu aplicación requiere actualizaciones más frecuentes (varias veces por segundo) o procesamiento de gráficos más elaborado que la compatibilidad con widgets estándar, habilita la renderización directa y agrega un SurfaceHolder.Callback
a la superficie de la tarjeta.
LiveCard liveCard; // initialized elsewhere liveCard.setDirectRenderingEnabled(true); liveCard.getSurfaceHolder().addCallback(callback);
Luego, puedes dibujar directamente en la superficie dentro de un subproceso en segundo plano o en respuesta a eventos externos (por ejemplo, actualizaciones de sensores o ubicaciones). Usa los métodos surfaceCreated
y surfaceDestroyed
para iniciar y detener tu lógica de procesamiento cuando se oculta o muestra la tarjeta.
Ten en cuenta que los métodos de devolución de llamada del contenedor de la superficie no se invocan en el subproceso de IU principal.
Controla la selección de tarjetas activas
Una tarjeta publicada debe proporcionar una acción (una PendingIntent
para iniciar una actividad, un servicio o realizar una transmisión) que se ejecutará cuando el usuario presione la tarjeta para seleccionarla.
Normalmente, usarás esta acción para iniciar una actividad que muestre un menú de opciones o lleve al usuario a otra parte de tu aplicación. Como mínimo, debes proporcionar una opción que permita al usuario quitar la tarjeta publicada del cronograma.
LiveCard liveCard; // initialized elsewhere Intent intent = new Intent(context, MyActivity.class); liveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
No se mostrarán las tarjetas activas que no tengan una acción específica.
Categorías anidadas | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Enum | LiveCard.PublishMode | Determina la forma en que se presenta la tarjeta al usuario cuando se publica. |
Constantes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | EXTRA_FROM_LIVECARD_VOICE | Extra booleano que denota un Intent se activó por voz desde una tarjeta en vivo. |
Constructores públicos | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Métodos públicos | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
LiveCard | |||||||||||
SurfaceHolder. | |||||||||||
boolean | |||||||||||
void |
navegar()
|
||||||||||
void |
publish(modo LiveCard.PublishMode)
|
||||||||||
LiveCard |
setAction(intent PendingIntent)
|
||||||||||
LiveCard |
setDirectRenderingEnabled(habilitación booleana)
|
||||||||||
LiveCard |
setRenderer(procesador GlRenderer)
|
||||||||||
LiveCard |
setViews(vistas RemoteViews)
|
||||||||||
LiveCard |
setVoiceActionEnabled(booleano habilitado)
|
||||||||||
void |
Métodos heredados | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constantes
Constructores públicos
public LiveCard (Contexto el contexto Etiqueta)
Crea una tarjeta publicada con la etiqueta específica.
Ten en cuenta que las tarjetas no aparecerán hasta que se publiquen de manera explícita.
Parámetros
Contexto | El contexto de la aplicación |
---|---|
etiqueta de política | etiqueta no nula para la tarjeta; esto es con fines de depuración |
Métodos públicos
público LiveCard adjuntar (servicio)
Adjunta un elemento Service
en segundo plano para que cuando se publique esta tarjeta, el servicio especificado esté configurado para ejecutarse en primer plano.
El servicio se quitará automáticamente del primer plano cuando se anule la publicación de esta tarjeta.
Parámetros
servicio | se configurará para ejecutarse en ejecución |
---|
Muestra
- este objeto para encadenar
public SurfaceHoldergetSurfaceHolder()
Cuando está habilitada la renderización directa, otorga acceso al Surface
en el que se dibujará.
Ten en cuenta que el objeto SurfaceHolder
que se muestra debe usarse simplemente como medio para acceder a la plataforma administrada. Los métodos para modificar la forma y el tipo de superficie son no-ops.
También ten en cuenta que las devoluciones de llamada para este objeto no se realizan en el subproceso de IU.
Consulta también
public boolean isPublished ()
Muestra true
si la tarjeta ya está publicada.
public void navigate ()
Envía al usuario a esta tarjeta en la línea de tiempo.
Arroja
IllegalStateException | si la tarjeta no está publicada |
---|
void void publish (Modo Card.PublishMode)
Publica esta tarjeta en el cronograma.
La tarjeta solo se mostrará si tiene una acción y si se habilitó el procesamiento directo o si se configuraron las vistas remotas.
Parámetros
medio | Determina cómo se presenta la tarjeta al usuario. |
---|
público LiveCard setAction (Intent)
Cambia la acción realizada cuando se selecciona la tarjeta.
Parámetros
intent | se activará cuando se seleccione la tarjeta |
---|
Muestra
- este objeto para encadenar
public LiveCard setDirectRenderingEnabled (booleano habilitado)
Habilita la renderización directa.
En este modo, el contenido de la tarjeta se deberá renderizar directamente en una Surface
.
Ten en cuenta que solo se puede llamar a este método cuando la tarjeta no está publicada y, de lo contrario, arroja una excepción.
Parámetros
habilitar | si se debe habilitar la renderización directa |
---|
Muestra
- este objeto para encadenar
Consulta también
public público LiveCard setRenderer (Procesador de GlRenderer)
Agrega un procesador basado en OpenGL.
Se usará el procesador para dibujar en una superficie solicitada (automáticamente) a fin de realizar el procesamiento directo.
Muestra
- este objeto para encadenar
público LiveCard setViews (Vistas remotas)
Cambia el RemoteViews
que se usa para mostrar la IU de esta tarjeta.
También se debe llamar a este método después de realizar cualquier cambio directamente en las vistas remotas de una tarjeta publicada; de lo contrario, esos cambios no se reflejarán en el cronograma.
Este método no tiene efecto si se habilita la renderización directa.
Parámetros
de vistas | la IU de la tarjeta |
---|
Muestra
- este objeto para encadenar
Consulta también
public público LiveCard setVoiceActionEnabled (booleano habilitado)
Habilita una acción de voz cuando la tarjeta se muestra en el cronograma.
Cuando se configura, la tarjeta escucha "ok Glass" cuando se muestra en el cronograma y, cuando se pronuncia esta frase de guardia, activa el intent que estableció el método setAction(PendingIntent)
. Si el intent inicia una actividad que implementa menús de voz contextuales, la actividad se abrirá automáticamente en los primeros elementos del menú (por ejemplo, como si se hablara "ok Glass" dentro de la actividad). Esta función permite implementar menús de voz contextuales en las tarjetas en vivo.
Parámetros
habilitar | si se debe habilitar la acción de voz |
---|
Muestra
- este objeto para encadenar
Consulta también
public void unpublish()
Anula la publicación de esta tarjeta en las rutas.