tv digital_ Aplicações para TV Digital com Ginga-J do ambiente à execução Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre a TV Digital, como, por exemplo, principais diferenças entre a TV analógi- bientes de desenvolvimento para TV Digital, emuladores e APIs que foram utilizadas para o desenvolvimento da aplicação. Depois de apresentar todos esses conceitos, é mostrado como desenvolver uma aplicação simples para a TV Digital. Agnaldo Soares Imperiano (agnaldo.si@gmail.com) é formado em Ciência da Computação pela Universidade Nove de Julho, trabalha com desenvolvimento de aplicativos Web utilizan- Microsoft Visual Fox Pro 9. Possui conhecimentos nas linguagens: C e Visual Basic 6. Claudio Cesar C. Silva (claudiocienciacomp@gmail.com) é formado em Ciência da Computação pela Universidade Nove de Julho, desenvolvedor Java, vb6, Mysql e TSO. C - - - - - - - 53 \
Conceitos de TV Digital - - - - - - - - - - - Receptor de TV Digital interativa (Set-top-Box) - - - - - - - Arquitetura Ginga Aplicativos para TV Digital - - Conceitos de Xlet - - - TV DIGITAL» melhor som» melhor imagem» aplicações Figura 2. Diferenças entre a TV Analógica e a TV Digital. Figura 1. Equipamentos com acesso a TV Digital. APLICAÇÕES MIDDLEWARE ÁUDIO VÍDEO TRANSPORTE TRANSMISSÃO Figura 3. Camadas de um receptor (Set-top Box). / 54
PAUSEXLET NEW MEUXLET( ) LOADED PAUSED STARTED INITXLET STARTXLET DESTROYED Figura 4. Composição do Middleware Ginga. Figura 5. Ciclo de vida de um Xlet. - Listagem 1. Interface de uma Xlet. public interface Xlet() { //carrega a aplicação public void initxlet(xletcontext context) throws XletStateChangeException; //começa a aplicação public void startxlet() throws XletStateChangeException; - //pausa a aplicação public void pausexlet(); Figura 6. Aparência do XletView. public void destroyxlet(boolean unconditional) throws XletStateChangeException; - - - XletView - Preparação para o desenvolvimento - Bibliotecas necessárias - -»» Ambiente e desenvolvimento Desenvolvimento da aplicação utilizando o NetBeans 55 \
- - Figura 7. Bibliotecas adicionadas no projeto. - Figura 10. - Figura 8. Abrindo a janela de gerenciamento. Figura 11. Selecionando o diretório onde está o arquivo.class. - Figura 9. Tela para adicionar a aplicação. / 56
Figura 12. Tela para selecionar o arquivo.class. - Figura 13. - Figura 14. Tela que mostra a aplicação criada. Figura 15. Aplicação sendo executada. Explicando o código da aplicação - - - - - - - - - - - - - - - - 57 \
Listagem 2. Código-fonte da aplicação. package br.com.mundoj; import java.awt.color; import java.awt.font; import javax.tv.xlet.xlet; import javax.tv.xlet.xletcontext; import javax.tv.xlet.xletstatechangeexception; import org.havi.ui.*; //Classe principal da Aplicação que implementa a // inteface Xlet public class AplicacaoMundoJ implements Xlet { this.labelmeio.setfont(new Font( Agency FB, Font.BOLD,45)); this.labelmeio.setbounds(10, 200, 700, 200); this.labelmeio.setforeground(color.white); this.labelmeio.setbackground(color.black); // Label que será impressa abaixo this.labelabaixo = new HStaticText( Agnaldo Soares \n Claudio Cesar ); this.labelabaixo.setfont(new Font( Agency FB, Font.BOLD,60)); this.labelabaixo.setbounds(10, 370, 700, 200); this.labelabaixo.setforeground(color.black); this.labelabaixo.setbackground( Color.LIGHT_GRAY); //Adicionando os objetos a cena this.cena.add(this.labelabaixo); this.cena.add(this.labelmeio); this.cena.add(this.labelacima); private XletContext contexto; private HStaticText labelacima; private HStaticText labelmeio; private HStaticText labelabaixo; private HScene cena; public AplicacaoMundoJ(){ public void destroyxlet(boolean arg0) throws XletStateChangeException { this.contexto.notifydestroyed(); public void initxlet(xletcontext contexto) throws XletStateChangeException { this.contexto = contexto; this.cena = HSceneFactory.getInstance(). getfullscreenscene(hscreen. getdefaulthscreen(). getdefaulthgraphicsdevice()); //Label que será impressa acima this.labelacima = new HStaticText( Revista MundoJ ); this.labelacima.setfont(new Font( Agency FB, Font.BOLD,60)); this.labelacima.setbounds(10, 10, 700, 200); this.labelacima.setforeground(color.yellow); this.labelacima.setbackground( Color.DARK_GRAY); // Label que será impressa meio this.labelmeio = new HStaticText( Meu Primeiro Xlet \n em \n TV DIGITAL ); public void pausexlet() { public void startxlet() throws XletStateChangeException { this.cena.setvisible(true); - - - /para saber mais / 58
Figura 16. Diagrama de funcionamento da TV Digital sem interação. Figura 17. Diagrama de funcionamento da TV Digital com interação. - - - - - /referências - - - - 59 \