Realizzazione e test di una Xlet

In questo articolo, contributo del JUG siena, viene illustrato come poter realizzare una XLet, applicazione Java per il digitale terrestre.

Premessa

Questo articolo presenta un breve esempio di realizzazione di una XLet Java.
I requisiti sono:

 

ed infine un IDE di sviluppo (noi usiamo eclipse).

Le specifiche MHP e DVB

Le Multimedia Home Platform (MHP) forniscono le specifiche per la realizzazione di un ambiente per la TV digitale terrestre, indipendentemente dal “Vendor”. Alla base delle MHP vi è la piattaforma Java e la definizione di un generico set di API in grado di fornire l’interazione con i terminali di Tv digitale terrestre. Un’applicazione Java che sfrutta queste API è detta applicazione DVB-J.

Le MHP 1.1 aggiungono ulteriori funzinalità alle MHP 1.0.1:

  • download delle applicazioni dal canale;
  • supporto per la gestione di plug-ins;
  • persistenza delle applicazioni in memoria;
  • accesso al lettore di smart card;
  • una serie di clients (Web browser, e-mail, …);

 

Le applicazioni MHP non sono applicazioni Java™ complete, ma, piuttosto, Applets. Il gestore delle applicazioni (residente nel Set-Top-Box) controlla il loro ciclo di vita. Queste applicazioni sono chiamate Xlets

Le Xlet

Di fatto per realizzare una Xlet è necessario implementare una interfaccia “implements Xlet“. Di seguito l’implementazione di una Xlet (si noti l’import delle API TV):

Un Xlet di fatto prevede 4 metodi:

  1. initXlet : Chiamata quando il gestore delle applicazioni inizializza la Xlet.
  2. startXlet : Chiamata quando il gestore delle applicazioni esegue la Xlet.
  3. pauseXlet : Chiamata quando il gestore delle applicazioni decide di mettre in pausa la Xlet.
  4. destroyXlet : Chiamata quando il gestore delle applicazioni distrugge la Xlet.

Si noti che una Xlet ha a disposizione un contesto di applicazione Xlet context che è l’oggetto che la Xlet usa per accedere al sistema. Il contesto di una Xlt prevede i seguenti metodi:

  1. notifyDestroyed : Per la notifica di distruzione.
  2. notifyPaused : Per la notifica di pausa.
  3. java.lang.Object getXletProperty(java.lang.String key) : Per ottenere le propietà di contesto.
  4. resumeRequest : Per rinnovare la richiesta.

Gli stati possibili di una Xlet sono: Loaded, Active, Paused, e Destroyed. La figura seguente mostra il ciclo di vita completo

Xlet life cycle

Xlet life cycle

Java TV API

Le Java TV API sono molto di più di una specifica per definire le Xlet, forniscono infatti anche una serie di importanti classi per l’accesso alle risorse, lo streaming dati ecc.

  1. javax.tv.service e javax.tv.service.navigation : Per l’interazione con il servizio (il canale).
  2. javax.tv.service.guide : Per la gestione dell’EPG (electronic program guides).
  3. javax.tv.service.transport : Per la gestione dello stream MPEG-2.

Le Java TV API sfruttano le Java Media Framework APIs (JMF 1.0) per la gestione del media trasmesso in broadcast. Adesso è il caso di fissare le idee e di passare dalla teoria alla pratica. Il codice della Xlet riportato precedentemente può essere utilizzato per creare il nostro pacchetto JAR

Prima di installarlo occorre compilarlo aggiungendo come jar di riferimento il package javatv.jar.

Infine occorre eseguire l’emulatore XletView e installare l’applicazione: (1) Applications -> Manage Applications -> New Application, (2) quindi scegliere il path dove avete installato l’applicazione e (3) scegliere la classe applicazione

20060322145823697_2

L’esempio è abbastanza semplice (anzi vuoto!), ma mostra il ciclo di vita di una Xlet.
Per eseguire un test un po’ più completo è opportuno dotarsi di alcuni packages (in realtà sono già inclusi nel jar XletView) di utilità in grado di interagire graficamente con il STB: presso http://sourceforge.net/projects/xletview è possibile reperire un esempio completo.
Al contrario un esempio che sfrutti solamente le classi fornite dal package javatv.jar è presentato di seguito:

Il quale presenta una scritta “WOW” come in figura:

20060322145823697_3

E’ possibile testare direttamente l’esempio sopra mostrato con l’emulatore fornito dalle Java TV API:

20060322145823697_4

Il test è possibile effettuarlo aggiungendo il seguente metodo main della classe sopra riportata:

 

Bibliografia

DVB-HTML – an optional declarative language within MHP 1.1
DVB-MHP/Java TvTM Data Transport Mechanisms – John Jones
JavaTV™ API Technical Overview

Autori

Valeria Abbate
Giacomo Veneri

JUG Siena

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *