LiveCard

Se agregó en el nivel de API XE12.
clase pública

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
LiveCard(contexto Context, etiqueta String)
Métodos públicos
LiveCard
adjuntar(servicio servicio)
SurfaceHolder.
boolean
void
void
LiveCard
LiveCard
setDirectRenderingEnabled(habilitación booleana)
LiveCard
setRenderer(procesador GlRenderer)
LiveCard
LiveCard
setVoiceActionEnabled(booleano habilitado)
void
Métodos heredados

Constantes

Se agregó en el nivel de API XE21.

publica estática estática String EXTRA_FROM_LIVECARD_VOICE

Extra booleano que denota un Intent se activó por voz desde una tarjeta en vivo.

Valor de la constante: "android.intent.extra_EXTRA_FROM_LIVECARD"

Constructores públicos

Se agregó en el nivel de API XE16.

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

Se agregó en el nivel de API XE16.

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
Se agregó en el nivel de API XE12.

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.

Se agregó en el nivel de API XE12.

public boolean isPublished ()

Muestra true si la tarjeta ya está publicada.

Se agregó en el nivel de API XE16.

public void navigate ()

Envía al usuario a esta tarjeta en la línea de tiempo.

Arroja
IllegalStateException si la tarjeta no está publicada
Se agregó en el nivel de API XE12.

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.
Se agregó en el nivel de API XE12.

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
Se agregó en el nivel de API XE12.

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
Se agregó en el nivel de API XE16.

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
Se agregó en el nivel de API XE12.

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
Se agregó en el nivel de API XE21.

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
Se agregó en el nivel de API XE12.

public void unpublish()

Anula la publicación de esta tarjeta en las rutas.