Xlets Multimedia Home Protocol Xlets Mapa de Índice 10/04/2005 E.T.S de Ingenieros de Telecomunicación .2 INTRODUCCIÓN Introducción a las Xlets Introducción Diferencia entre Aplicación Xlet e Interface Xlet Las Xlets como aplicaciones, parecidas a los Applets o Midlets Una aplicación debe implementar el javax.tv.xlet.Xlet Interface Aplicaciones iniciadas automáticamente por el Broadcaster o manualmente por el Set-top Box (Mando a distancia Usuario) 10/04/2005 E.T.S de Ingenieros de Telecomunicación .4 Introducción Cómo localizamos a la Xlet? Un registro en la AIT nos localiza la clase inicial de la Xlet (Initial_class_byte) 10/04/2005 E.T.S de Ingenieros de Telecomunicación .5 CICLO DE VIDA LifeCycle de una aplicación Xlet CICLO DE VIDA Una aplicación entra en el estado Loaded cuando es cargada bien sea desde Set-top Box o bien desde el Carrousel de datos. Después de esto, el Application manager señaliza a la aplicación para iniciarse a si misma, por lo que pasa al estado Paused. El estado Active (Running) significa que la aplicación está en ejecución y puede volver al estado Paused o bien terminar la aplicación pasando al estado Destroyed. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .7 Ciclo de Vida 10/04/2005 E.T.S de Ingenieros de Telecomunicación .8 APLICATION MANAGER ¿Qué Es? ¿Qué hace? Aplication Manager Reside en el Set-top Box y se inicia cuando se enciende el mismo, hasta que se apaga Se encarga de manejar los estados de cada Aplicación y hacer de puente a los recursos del Set-top Box Aministra la memoria, key events, errores de ejecución de las aplicaciones Define el modelo de ciclo de vida 10/04/2005 E.T.S de Ingenieros de Telecomunicación .10 Aplication Manager (2) Establece el XletContext para cada Aplicación Mediante el XletContext Inteface, el Application Manager se comunica con las Xlets para ser notificado de sus cambios de estado. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .11 Aplication Manager (2) Identifica y Cachea la información de las aplicaciones procedentes de las Tablas 10/04/2005 E.T.S de Ingenieros de Telecomunicación .12 Aplication Manager (3) Define el protocolo de comunicación entre la Aplicación y él mismo. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .13 Interfaces: Xlet y XletContext Definen una serie de métodos abstractos pero no los implementan Xlet Interface initXlet() - startXlet() - pauseXlet() - destroyXlet() Una aplicación debe sobreescribir estos métodos para implementar la interface Xlet El aplication manager llamará a estos métodos para iniciar, comenzar, pausar o eliminar una aplicación de la memoria. Es una interface muy parecida al de las Applets o los Midlets (J2me) 10/04/2005 E.T.S de Ingenieros de Telecomunicación .15 Xlet Interface pauseXlet() A menudo ignorado por los desarrolladores También ignorado por algunas herramientas de desarrollo Los receptores y servicios confían en que esté bien implementado • El navegador puede poner en modo pausado cuando se presenta la aplicación Ofrece grandes ventajas (explicadas más adelante) 10/04/2005 E.T.S de Ingenieros de Telecomunicación .16 Xlet Interface destroyXlet() Una aplicación puede ser terminada en cualquier momento cuando se evoca el destroyXlet() Esta llamada la debe hacer el Application Manager o bien la propia aplicación. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .17 XletContext Interface getXletProperties() notifyPaused() notifyDestroyed() resumeRequest() Actúa como puente entre el Xlet y el Application Manager Permite que el Application Manager sea correctamente notificado de cualquier cambio en los estados de las Xlet’s 10/04/2005 E.T.S de Ingenieros de Telecomunicación .18 Como implementar Bien Formas y maneras de implementar bien el Xlet Interface Como implementar Bien Optimización del tiempo de recarga de la Xlet. La Xlet puede ser precargada por un lanzador de aplicaciones • Se ejecuta initXlet() • Carga los recursos e inicializa la aplicación • La carga puede ser ejecutada en menos de 1 seg cuando el espectador quiere comenzar la aplicación. – Siemplemente se hace visible la Hscene. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .20 Como implementar Bien Tiempo de Carga o Cambio de Aplicación en condiciones normales 10/04/2005 E.T.S de Ingenieros de Telecomunicación .21 Como implementar Bien La carga de aplicaciones tiene mejor sincronización. La aplicación interactiva salta (se hace visible) en cuanto el anuncio empieza. Evita cargas y recargas sucesivas. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .22 Como implementar Bien Linea de tiempo con y sin precarga. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .23 Como implementar Bien initXlet() vs. startXlet() En InitXlet() ejecuta tareas de inicializacion de una vez. Construye el Hscene, registra los listeners y carga los recursos. StartXlet() y PauseXlet() son parejas. • Imágenes cargadas en StartXlet() son limpiadas PauseXlet(). • Hace la Hscene visible. • También realiza la carga de recursos abundantes y escasos. También considera otras aplicaciones • Si las imágenes son cargadas en InitXlet(), la Xlet comienza más rápido. • Si muchas aplicaciones corren simultaneamente, se reserva mucha cantidad de memoria y el estado de PauseXlet() es inestable. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .24 Como implementar Bien Xlets corriendo simultaneamente. Facilmente pueden correr unas 10 pequeñas aplicaciones. Generalmente el ancho de banda es el mayor problema. El manejo de recursos necesita ser diseñado. • No usar recursos escasos en modo Pausa. Los escenarios deben ser testeados. • Todas las Xlets corriendo simultaneamente en un escenario de máxima demanda con el receptor más restrictivo. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .25 Como implementar Bien Recursos disponibles. 1.5MB de memoria para datos. 4MB de memoria para imágenes. 4MB de contenido de carrusel, dividido en varios carruseles Limitada cantidad de filtros. • Usado para ficheros dinámicos, stream events, datos del SI… • Un uso máximo de 10 ficheros dinámicos. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .26 Como implementar Bien Ejemplo de lanzador: Menú 10/04/2005 E.T.S de Ingenieros de Telecomunicación .28 Como implementar Bien Ejemplo de lanzador: icono de testeo. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .29 Como implementar Bien Linea de tiempo del icono de testeo. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .30 Como implementar Bien Linea de tiempo de la carga del mensaje. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .31 Como implementar Bien Evitar implementaciones extra Cuando empieza la aplicación muestra un icono, es el comportamiento habitual de aplicaciones autoejecutables. Aplicaciones minimizadas muestran un icono • No permite que otras aplicaciones sean usadas. Ambos casos serán mejor implementados con un lanzador. • Evita confusiones. • Las aplicaciones tienen un modelo más simple. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .32 Como implementar Bien Destroy o Pause para salir de la aplicación? Pause cuando: La aplicación es usada con frecuencia y necesita ser de acceso rápido (EPG). Cuando la aplicación contiene datos de actualización dinámica (teletexto digital). Cuando el tiempo de ejecución es largo y es como si continuara más tarde (banking, T-commerce). Destroy cuando: Aplicaciones que están disponibles a menudo pero que son usadas ocasionalmente (juegos). 10/04/2005 E.T.S de Ingenieros de Telecomunicación .33 Como implementar Bien Destroying Xlet: Prepararse para un cambio rapido de servicio. • Muchos receptores tienen preferencia por un zapping rápido entre servicios • Los recursos pueden no estar disponibles. Suministra un mensaje de salida DestroyXlet(false). • Señalizar DESTROY a la AIT 1 minuto antes • También llamado si el receptor se queda sin recursos No necesita notificar al XletContext 10/04/2005 E.T.S de Ingenieros de Telecomunicación .34 Como implementar Bien Conclusiones Implementar el estado Pausa en aplicaciones • Para comportarse mejor. • Para obtener mejor rendimiento en entornos agiles. Cuando corren múltiples aplicaciones simultaneamente • Verificar los requisitos de memoria de las aplicaciones. • Diseñar la comunicación y compartición de recursos. No implementar estados extras en Xlets. • Permitir a un manejador de aplicaciones manejar esto. Considerar el comportamiento de la aplicación • Antes de la extraccion de la señalización. 10/04/2005 E.T.S de Ingenieros de Telecomunicación .35 Ejemplo de Xlet Ejemplo sencillo de Xlet Ejemplo de Xlet public class MyFirstExampleXlet implements javax.tv.xlet.Xlet { public MyFirstExampleXlet() {…} public void initXlet(javax.tv.xlet.XletContext context) throws javax.tv.xlet.XletStateChangeException {…} public void startXlet() throws javax.tv.xlet.XletStateChangeException {…} public void pauseXlet() {…} public void destroyXlet(boolean unconditional) throws javax.tv.xlet.XletStateChangeException {…} } 10/04/2005 E.T.S de Ingenieros de Telecomunicación .37