• Nenhum resultado encontrado

DESENVOLVIMENTO DE APLICAÇÕES PARA TV DIGITAL COM GINGA E JAVA

N/A
N/A
Protected

Academic year: 2021

Share "DESENVOLVIMENTO DE APLICAÇÕES PARA TV DIGITAL COM GINGA E JAVA"

Copied!
67
0
0

Texto

(1)

UNIVERSIDADE DO PLANALTO CATARINENSE

DEPARTAMENTO DE CIÊNCIAS EXATAS E TECNOLÓGICAS CURSO DE SISTEMAS DE INFORMAÇÃO

(BACHARELADO)

WAGNER LUSA MENDES

DESENVOLVIMENTO DE APLICAÇÕES PARA TV DIGITAL COM GINGA E JAVA

LAGES (SC)

2009

(2)

WAGNER LUSA MENDES

DESENVOLVIMENTO DE APLICAÇÕES PARA TV DIGITAL COM GINGA E JAVA

Trabalho de Conclusão de Curso submetido à Universidade do Planalto Catarinense para obtenção dos créditos de disciplina com nome equivalente no curso de Sistemas de Informação - Bacharelado.

Orientação: Prof. Wilson Castello Branco Neto, Dr.

LAGES (SC)

2009

(3)

WAGNER LUSA MENDES

DESENVOLVIMENTO DE APLICAÇÕES PARA TV DIGITAL COM GINGA E JAVA

ESTE RELATÓRIO, DO TRABALHO DE CONCLUSÃO DE CURSO, FOI

JULGADO ADEQUADO PARA

OBTENÇÃO DOS CRÉDITOS DA

DISCIPLINA DE TRABALHO DE

CONCLUSÃO DE CURSO, DO 8º.

SEMESTRE, OBRIGATÓRIA PARA

OBTENÇÃO DO TÍTULO DE:

BACHAREL EM SISTEMAS DE INFORMAÇÃO

Lages (SC), 01 de julho de 2009

Prof. Wilson Castello Branco Neto, Dr.

Orientador

BANCA EXAMINADORA:

Prof. Marcos André Pishing, M.Sc.

UNIPLAC

Prof. Daiana Petry Leite, MSc.

UNIPLAC

Prof. Wilson Castello Branco Neto, Dr.

Professor de TCC

Prof. Angelo Augusto Frozza, M.Sc.

Coordenador de Curso

(4)

Dedico a minha esposa, pais e filhos que

me apoiaram, incentivaram e dividiram o

peso destes quatro anos de jornada, para a

realização de um sonho, o qual esta se

realizando hoje, obrigado.

(5)

Agradeço aos mestres e amigos que ao

longo destes quatro anos nos mostraram o

caminho da sabedoria, nos incentivaram,

nos cobraram para hoje ver o resultado dos

seus esforços em formar e informar

cidadãos melhores para a sociedade e o

mercado de trabalho. Obrigado.

(6)

Uma paixão forte por qualquer sonho assegurará o sucesso, porque o desejo pelo objetivo mostrará os meios.

(William Hazlitt).

(7)

FIGURA 1 - Arquitetura do Ginga ... 23

FIGURA 2 - Ciclo de vida de um Xlet ... 30

FIGURA 3 - XletView. ... 33

FIGURA 4 - Propriedades do projeto ... 34

FIGURA 5 - Adicionando as bibliotecas ... 35

FIGURA 6 - Tela inicial XLetIMC. ... 36

FIGURA 7 - Painel inferior. ... 39

FIGURA 8 - Método calcular executado. ... 41

FIGURA 9 - Hierarquia de classes ... 43

FIGURA 10 - Tela Inicial do protótipo Show de Calouros ... 47

FIGURA 11 - Container Cantores. ... 49

FIGURA 12 - Container Votar. ... 51

FIGURA 13 - Container resultado. ... 52

QUADRO 1 - Código contendo a declaração dos imports necessários. ... 37

QUADRO 2 - Declaração da classe e dos componentes. ... 37

QUADRO 3 - Código mostrando o método initXlet ... 38

QUADRO 4 - Código do método startXlet ... 38

QUADRO 5 - Método getPanelMenuRodape... 39

QUADRO 6 - Código ButtonCalcular ... 40

QUADRO 7 - Código do método calcularIMC... 40

QUADRO 8 - Código do método keyPressed ... 41

QUADRO 9 - Código do método destroyXlet. ... 42

QUADRO 10 - Declaração dos imports da classe ShowDeCalourosXlet.java ... 43

QUADRO 11 - Método initXlet. ... 44

QUADRO 12 - Método startXlet. ... 45

QUADRO 13 - Métodos pauseXlet e destroyXlet ... 45

QUADRO 14 - Método keyPressed ... 45

QUADRO 15 - Declaração dos imports da classe ContainerPrincipal.java ... 46

QUADRO 16 - Declaração da classe ContainerPrincipal ... 47

QUADRO 17 - Construtor da classe ContainerPrincipal.java ... 47

QUADRO 18 - Método keypressed da classe ContainerPrincipal.java ... 48

QUADRO 19 - Imports da classe VideoPlayer.java ... 49

(8)

QUADRO 20 - Declaração da classe VideoPlayer.java ... 50

QUADRO 21 - Construtor da classe VideoPlayer.java ... 50

QUADRO 22 - Métodos que gerenciam a execução dos vídeos. ... 51

(9)

ABNT Associação Brasileira de Normas Técnicas ACATS Adivisory Commitee on Advanced Television API Application Programming Interface

ATSC Advanced Television Systems Committee AWT Abstract Window Toolkit

CA Conditional Access

CC Common-Core

CD Compact Disc

CDC Connected Device Configuration DAVIC Digital Audio Video Council DVB Digital Video Broadcasting DVD Digital Video Disc

HAVi Home Audio Video Interoperability HD High Definition

HDMI High Definition Multimedia Interface IDE Integrated Developement Environment IPTV Internet Protocol Television

ISDB Integrated Services Digital Broadcasting JDK Java Development Kit

JEE Java Enterprise Edition JME Java Micro Edition JMF Java Media Framework JSE Java Standard Edition JVM Java Virtual Machine LCD Liquid Crystal Display MHP Multimedia Home Platform

NASA National Aeronautics and Space Administration NBR Norma Brasileira

NCL Nested Context Language NCM Nexted Context Model

PUC-RJ Pontifícia Universidade Católica do Rio de Janeiro

SET/ABERT Sociedade de Engenharia de Televisão /Associação Brasileira de Emissoras de Rádio e Televisão

SI Service Information

(10)

TV Televisão

UFPB Universidade Federal da Paraíba

W3C World Wide Web Consortium

XML Extensible Markup Language

(11)

RESUMO

A transmissão de sinais televisivos é de fundamental importância para a propagação de informações, entretenimento e cultura no Brasil e no mundo. A TV Digital, além de uma maior qualidade nesta transmissão, tem como grande diferencial a capacidade de fornecer aos telespectadores novos serviços que antes não eram possíveis no sistema analógico, como a interatividade. Com ela, o telespectador deixa de ser um mero espectador e passa a interagir com a programação, podendo também usufruir de uma variedade de serviços computacionais através da TV. Em 2006, o governo brasileiro criou o Sistema Brasileiro de Televisão Digital o SBTVD, com base no padrão Japonês. Como o padrão brasileiro chegou depois dos internacionais, este pôde inovar utilizando tecnologias mais recentes, criando o Middleware Ginga. Com o rápido surgimento da TV Digital no Brasil surgiu à dúvida de qual padrão adotar, após estudos adotou-se o padrão japonês, dentre outros fatores o mais influenciou foi o não pagamento de royalties. Com isso, surge o problema da falta de conhecimento deste novo padrão por parte dos desenvolvedores de aplicações para TV Digital, o que leva as empresas desenvolvedoras destas aplicações a encontrar muita dificuldade em contratar mão-de-obra especializada. O objetivo é realizar um estudo técnico a cerca do padrão adotado no Brasil para a TV Digital e, com base neste estudo, desenvolver diferentes tipos de aplicações fazendo uso do Middleware Ginga e da API JavaTV.

Enfim é demonstrada a construção do primeiro protótipo, o qual tem como finalidade calcular a massa corporal de uma pessoa, apresentando se esta pessoa esta acima, abaixo ou esta com o peso normal. Em seguida é apresentada a criação do segundo protótipo, que tem como objetivo a interação do telespectador com um programa de show de calouros. Estes protótipos demonstram parte do potencial desta nova tecnologia. O mercado de TV Digital mostra-se muito promissor para os próximos anos, tendo em vista que hoje em dia há poucas empresas desenvolvendo aplicativos com possibilidades de interação com o usuário. Prevista para o ano de 2009 a interação por parte do telespectador, resultará numa busca por mão-de-obra especializada e softwares interativos.

Palavras-chave:

TV Digital, Java, Ginga, Desenvolvimento de Aplicações.

(12)

The broadcasting of televising signals has fundamental importance for the propagation of information, entertainment and culture in Brazil and around the world. Digital TV, besides a better quality in this transmission, has as great differential the capacity to supply to the new viewers services that before were not possible in the analogical system, as interactivity. Thus, the viewer is not a mere spectator but interacts with the programming, also being able to usufruct a variety of computational services through TV. In 2006, the Brazilian government created the Brazilian Digital TV System - SBTVD, on the basis of the Japanese standard. As the Brazilian standard arrived after the international ones, it could innovate using more recent technologies, creating the Ginga middleware. With the sprouting of the Digital TV in Brazil it appeared a doubt of which standard to adopt; after studies it was adopted the Japanese standard due to the no payment of royalties. With that, there was a problem on the lack of knowledge about this new standard on the part of the researchers for Digital TV, what takes the development companies of those applications to find a lot of difficulty in contracting specialized handwork. The objective of this study is to make a technician study about the standard adopted in Brazil for Digital TV, based of this research, developing different types of applications making use of the Ginga middleware and Java TV API.

So, the construction of the first archetype is demonstrated, which has as purpose to calculate the corporal mass of a person, presenting if this person is over, above or with the normal weight. After that, it is presented the creation of the second archetype, which has as objective the interaction of the viewer with a talk show. These archetypes demonstrate part of the potential of this new technology. The market of Digital TV reveals itself very promising for the next years, because of nowadays there are few companies developing applicatory with possibilities of interaction with the user.

Foreseen for the year of 2009, the interaction on the part of the viewer will result in a search for specialized handwork and interactive software.

Keywords:

Digital TV, Java, Ginga, Development of Applications.

(13)

1 INTRODUÇÃO ... 13

1.1 Apresentação ... 13

1.2 Descrição do problema ... 15

1.3 Justificativa ... 15

1.4 Objetivo geral ... 17

1.5 Objetivos específicos ... 17

1.6 Metodologia ... 17

2 TV DIGITAL ... 19

2.1 Conceitos básicos ... 19

2.2 Tecnologias envolvidas ... 21

2.3 O middleware Ginga ... 23

2.4 Linguagem NCL ... 26

2.5 Linguagem Java ... 27

2.6 API JavaTV ... 28

2.7 Conclusão ... 31

3 DESENVOLVIMENTO E APRESENTAÇÃO DOS PROTÓTIPOS ... 32

3.1 Ferramentas Utilizadas ... 32

3.2 Configurando o ambiente ... 34

3.3 Protótipo 1 - Aplicação que calcula massa corporal ... 35

3.4 Protótipo 2 – Aplicação para programa de show de calouros. ... 42

3.5 Conclusão ... 52

4 CONSIDERAÇÕES FINAIS ... 53

REFERÊNCIAS BIBLIOGRÁFICAS ... 55

APÊNDICES ... 57

(14)

1 INTRODUÇÃO

1.1 Apresentação

Além de uma maior qualidade na transmissão, o grande diferencial da TV Digital é a capacidade de fornecer aos telespectadores novos serviços que antes não eram possíveis no sistema analógico. Dentre estes serviços, destacam-se: as recepções móveis; a gravação de programas no próprio aparelho, mesmo quando o espectador estiver assistindo outro canal; o acesso à Internet; jogos; enquetes; compras, entre outros.

Desde 1994, 17 emissoras de televisão e pouco mais de uma dezena de empresas interessadas criaram o grupo SET/ABERT (Sociedade de Engenharia de Televisão) /(Associação Brasileira de Emissoras de Rádio e Televisão) e, juntamente com a Universidade Mackenzie, passaram a pesquisar os três sistemas de transmissão de TV Digital: o modelo ATSC (Advanced Television Systems Comittee) americano, o modelo DVB (Digital Video Broadcasting) europeu e o modelo ISDB (Integrated Services Digital Broadcasting) japonês.

O ano de 1996 ficou marcado pela chegada ao Brasil da DirecTV padrão DVB, primeiro sistema de TV Digital no país, porém pago e inacessível à maioria da população. No final daquele ano chegou a SKY, também com o padrão europeu (DVB), para competir nesse mercado (TELEVISÃO, 2008).

Atualmente existem diferentes modelos, sistemas e padrões de TV Digital no

mundo. No Brasil, a definição final do padrão adotado dependeu da harmonização de

(15)

um modelo (arcabouço legal e institucional) e de diferentes sistemas (tecnologias de software e hardware). A legislação brasileira foi bastante flexível com relação à portabilidade da televisão digital no Brasil, permitindo a sua utilização nos mais variados dispositivos (TELEVISÃO, 2008).

A interatividade da TV Digital é possibilitada pela execução de programas sobre um middleware instalado no aparelho conversor, o set-top Box. Especificamente para o padrão brasileiro, foi criado o middleware Ginga, camada de software intermediária e open source que permite o desenvolvimento de aplicações NCL (Nested Context Language) e Java interativas para a TV Digital de forma independente da plataforma de hardware dos fabricantes de terminais de acesso (set- top Box) (GINGA, 2008).

O JavaTV é uma plataforma para o desenvolvimento e distribuição de serviços para televisão digital interativa, composto por um conjunto de APIs (Application Programming Interface). Por se tratar de uma API Java, possui um alto nível de controle e flexibilidade sobre o aspecto e comportamento das aplicações, tornando possível o desenvolvimento de aplicações interativas.

Desenvolvido pela Sun Microsystems, em parceria com empresas do ramo da televisão digital, o JavaTV é uma extensão da plataforma Java, que visa atender às funcionalidades dos receptores (set-top Box) de televisão digital interativa, como:

streaming de áudio/vídeo; acesso mediante identificação (CA - Conditional Access);

acesso às Informações de Serviço (SI - Service Information); controle e troca do canal do receptor; controle dos gráficos na tela, entre outros. As aplicações desenvolvidas em Java com a API JavaTV são chamadas de Xlets (JAVATV, 2007).

O estudo e o desenvolvimento de aplicações baseadas no Ginga e no JavaTV

são os temas abordados ao longo deste trabalho que se divide em 4 capítulos. O

primeiro capítulo é uma apresentação geral do problema abordado e dos objetivos a

serem atingidos neste trabalho. O segundo capítulo apresenta um estudo sobre a TV

Digital, com destaque para o middleware Ginga, Java e a API JavaTV. O terceiro

capítulo descreve a implementação dos protótipos desenvolvidos. O quarto capítulo

contém as conclusões do trabalho.

(16)

1.2 Descrição do problema

O rápido surgimento da televisão digital no Brasil, juntamente com a existência de diversos padrões em todo mundo, gerou a dúvida de qual a melhor solução para o país, em termos de tecnologia a ser utilizada. Após vários estudos e discussões optou-se por adotar o padrão Japonês (ISDB - Integrated Services Digital Broadcasting) de transmissão, entre outros motivos, por não ser necessário o pagamento de royalties. Para tanto, foi criado um Middleware nacional, chamado Ginga, que serve de base para as aplicações desenvolvidas para esta tecnologia. Com isso, surge o problema da falta de conhecimento deste novo padrão por parte dos desenvolvedores de aplicações para TV Digital, o que leva as empresas desenvolvedoras destas aplicações a encontrar muita dificuldade em contratar mão-de- obra especializada.

1.3 Justificativa

O Brasil esteve por muito tempo atrasado em termos de tecnologia, inclusive a de comunicação. Somente na década de noventa apareceram os primeiros serviços digitais, através de sistemas pagos e com custo acima do poder aquisitivo da grande maioria da população.

Atualmente, com a convergência dos meios de comunicação multimídia e a busca do Governo pela democratização da informação, a TV Digital Interativa parece ser a porta de entrada para esses usuários historicamente excluídos da era digital

A TV Digital oferece para o usuário não apenas melhor qualidade de imagem e som, mas também uma gama de novos serviços e aplicações de entretenimento e de informações. Assim sendo, a adoção da TV Digital no Brasil aliada ao avanço da tecnologia poderá permitir que serviços e aplicações sejam disponibilizados mesmo em localidades remotas, contribuindo para a universalização e democratização de informações e serviços eletrônicos, permitindo a inclusão social de uma parcela maior da população brasileira (JUCÁ, LUCENA e FERRAZ, 2006).

Com base neste histórico de exclusão digital, o Governo Federal optou por

(17)

desenvolver a TV digital no Brasil, como forma de contribuir para a inclusão digital de forma mais simples do que ocorre com outras tecnologias, como o computador. Para facilitar a integração de todas as pessoas, independente da sua familiaridade com a tecnologia, optou-se pela adoção de um padrão de Middleware totalmente novo, pois os padrões existentes em outros países já são utilizados há muitos anos e a interatividade dos usuários com eles é muito mais avançada, proporcionando interações mais sofisticadas, porém complexas.

Se aplicados no Brasil, esses padrões poderiam causar uma certa resistência dos futuros usuários, uma vez que apenas uma pequena parcela da população já possui algum contato com a TV interativa ou mesmo com outras tecnologias de interação, como a Internet (JUCÁ, LUCENA e FERRAZ, 2006).

Com esse intuito, foi criado um padrão próprio de middleware, chamado Ginga, para interagir com o equipamento de recepção, set-top Box, adaptado para o Brasil. Este padrão oferece uma interação mais simples e fácil de ser utilizada, de acordo com a realidade dos usuários do Brasil.

A adoção de um padrão totalmente novo de software de comunicação com o receptor leva à criação de tecnologias específicas para esse padrão, tanto em termos de infra-estrutura, como para desenvolvimento de aplicações. Isso se traduz em falta de conhecimento do padrão específico adotado no Brasil, entre os profissionais relacionados às tecnologias de comunicação. Como a área de comunicação é um mercado muito abrangente, a falta de profissionais com conhecimento sobre este padrão já assola a maioria das empresas e a tendência é aumentar a demanda de mão- de-obra (JUCÁ, LUCENA e FERRAZ, 2006).

A pesquisa através da Internet parece ser a principal, se não a única fonte de

informações. Os principais sites para obter informações a respeito são: o site da Sun

Microsystems (JAVATV, 2007), no qual se encontra vasta documentação sobre a API

JavaTV; o site da PUC-RJ - Pontifícia Universidade Católica do Rio de Janeiro (PUC-

RJ, 2008) que, em conjunto com a Universidade Federal de Paraíba, vem

desenvolvendo o Middleware Ginga (GINGA, 2008) e a própria Universidade Federal

de Paraíba (UFPB, 2008). Estas fontes possuem vários artigos e documentações

(18)

relacionados ao Ginga e à API JavaTV, como também exemplos básicos de aplicações para a TV Digital.

Apesar das informações disponibilizadas nestes sites, é importante o estudo contínuo sobre estas tecnologias, para que novos documentos com informações sobre os recursos sejam elaborados e disponibilizados em locais públicos estratégicos visando suprir a necessidade de documentos e exemplos com o uso destas tecnologias.

Dessa forma, esse material pode auxiliar para que profissionais das áreas afins possam interar-se do assunto de forma fácil e rápida, com textos e implementações usando a API JavaTV e o Middleware Ginga.

1.4 Objetivo geral

Realizar um estudo técnico a cerca do padrão adotado no Brasil para a TV Digital e, com base neste estudo, desenvolver diferentes tipos de aplicações fazendo uso do Middleware Ginga e da API JavaTV.

1.5 Objetivos específicos

Os objetivos específicos deste trabalho estão descritos a seguir:

a) Apresentar como são desenvolvidas aplicações para TV Digital com o padrão exclusivo de Middleware adotado no Brasil;

b) Explorar as potencialidades do Middleware Ginga e da API JavaTV;

c) Desenvolver protótipos para a interação do usuário com a televisão digital, através das tecnologias citadas no item anterior.

1.6 Metodologia

Primeiramente, foi realizado um estudo sobre a TV Digital, seu histórico pelo mundo, seus diversos padrões e as tecnologias adotadas nos principais padrões.

Paralelamente, foi estudado o Ginga, Middleware criado no Brasil, o histórico do seu

(19)

desenvolvimento, o seu diferencial em relação aos Middleware existentes e a tecnologia adotada em sua criação.

Após adquirir o conhecimento básico sobre o assunto com estes estudos, foi realizado um aprofundamento sobre a API do Java, o JavaTV, a qual foi a base do desenvolvimento de aplicações interativas para TV Digital. Com base neste estudo foi feita a redação do Capítulo 2, que aborda todos estes tópicos.

O próximo passo foi a modelagem das aplicações a serem desenvolvidas ao longo do trabalho. Após concluir a modelagem das aplicações, começou a etapa de implementação das mesmas, adotando-se nesta etapa, as seguintes tecnologias: Ginga para a comunicação com o receptor; Java para linguagem de programação, a API JavaTV como principal biblioteca; o Eclipse 3.4 Ganymede como ferramenta de desenvolvimento; e para emular o set-top Box o XletView.

Concluída a etapa de desenvolvimento, foram realizados os testes para correção de possíveis erros. Concluída a fase de testes, foi feita a redação do capítulo três, que descreve as aplicações desenvolvidas e os resultados dos testes.

Por fim, foram elaboradas as conclusões deste trabalho, as quais são

apresentadas no Capítulo quatro.

(20)

2 TV DIGITAL

Este capítulo tem como objetivo apresentar algumas das tecnologias envolvidas na transmissão e captação de sinal digital para TV (Televisão). Ele aborda, primeiramente, o modo analógico e como começou a transmissão do sinal televisivo.

Em seguida, descreve como começou a transmissão digital no mundo e sua evolução.

Ainda neste capítulo são apresentadas as tecnologias com as quais é possível se transmitir e receber o sinal digital como: set-top Box, aparelho responsável pela conversão do sinal digital para a Televisão, o Middleware Ginga, software responsável pela comunicação entre o software aplicativo e o hardware, no caso o set-top Box, e a linguagem Java e a API (Application Program Interface) JavaTV.

2.1 Conceitos básicos

A televisão, no mundo, vem evoluindo de forma lenta. Em março de 1935 iniciou-se oficialmente as transmissões de televisão na Alemanha e, em novembro na França, sendo a Torre Eiffel o posto emissor (TELEVISÃO, 2008).

Primeiramente, existia apenas imagem Preto/Branco. Depois, agregou-se o som à imagem ainda em Preto/Branco e, apenas após alguns anos, criou-se a televisão colorida. As transmissões regulares em cores começaram, nos Estados Unidos, em 1954 (TELEVISÃO, 2008).

A transmissão de tudo isso, porém, ocorria de forma analógica. Na

transmissão analógica são utilizadas ondas eletromagnéticas contínuas, sendo estas

uma combinação de um campo elétrico e um campo magnético que se propagam

através do espaço transportando energia, análogas aos sinais originais (TV-

(21)

ANALOGICA, 2008).

Depois de muitos anos transmitindo desta forma, em 1987, pesquisadores nos Estados Unidos iniciaram estudos com o objetivo de desenvolver novos conceitos no serviço de televisão. Foi então criado o ACATS (Adivisory Commitee on Advanced Television) (TELEVISÃO, 2008).

Em 1993, sete empresas e instituições participantes dos testes (AT&T, GI, MIT, Phillips, Sarnoff, Thomson e Zenith) se uniram formando a Grande Aliança para desenvolver um padrão juntas. Desenvolveram, então, a primeira forma de transmissão e recepção de TV Digital: o padrão ATSC (Advanced Television Systems Comittee).

Essa mudança na forma de transmitir de analógico para digital trouxe como benefício imediato a qualidade da imagem e som (RAIO X, 2007).

Na transmissão digital é utilizada uma corrente de bits, em código binário, formada de zeros e uns, ou seja, a mesma linguagem digital dos computadores, dos CDs (Compact Disc), dos DVDs (Digital Video Disc) e do celular. Conversores transformam as ondas eletromagnéticas contínuas do sinal analógico, que representam sons, imagens, fotos, gráficos, textos, vídeos em bits (TV-ANALOGICA, 2008).

Esta tecnologia possibilita, assim, uma transmissão de imagem e som de alta qualidade, onde a onda é codificada em bits, diferentemente da forma de transmissão analógica que é feita através de propagação de ondas, que podem se perder, e são de difícil recuperação. Já na transmissão digital, quando uma parte do sinal é perdida a mesma pode ser recuperada, já que a onda está representada em código binário, sendo reconstituída antes de mostrar a imagem.

No final de 1993, os europeus também decidiram desenvolver um padrão totalmente digital e criaram o padrão DVB (Digital Video Broadcasting), que, além de melhorar a qualidade do sinal, permitia alguma interação com o usuário (RAIO X, 2007).

Só em 1997, os Japoneses decidiram desenvolver o seu padrão digital: o

padrão ISDB (Integrated Services Digital Broadcasting), que entrou em operação com

transmissão via satélite em 2000. Este padrão agrega à qualidade da transmissão

digital, a interação com o usuário e a possibilidade de se transmitir em aparelhos

(22)

móveis em velocidade, como dentro de um carro, trem ou avião, além de transmitir inúmeros programas simultaneamente de acordo com os canais de transmissão (RAIO X, 2007).

No Brasil, a história da TV Digital começou com a DirecTV que adota o padrão Europeu. Logo em seguida veio a Sky, também com o padrão europeu e, em 2008, a TV aberta com base no sistema Japonês, o qual possibilita uma maior interação com os usuários (TELEVISÃO, 2008).

Um dos fatores que influenciou na escolha do padrão japonês, além do não pagamento de royalties, foi justamente a interação com o usuário. Desta forma, o governo pretende incluir usuários excluídos da era digital, já que, praticamente, toda a população possui um ou mais aparelho de televisão em casa.

Os serviços serão oferecidos não só pelas emissoras, mas também pelo governo, tanto para programas sociais, como jurídicos e burocráticos. Já as emissoras terão jogos interativos com os telespectadores, pesquisas de opiniões, venda de produtos e serviços na hora que eles aparecem para o telespectador, como hoje são as propagandas.

Todos estes serviços serão disponibilizados através de aplicativos de software. Os aplicativos para TV Digital podem ter os mais variados objetivos, assim como é na computação, mas pode-se destacar como mais relevantes, os aplicativos de interação com o telespectador como: enquete, guia de programação das emissoras, pesquisas ao vivo, gravação de programas, jogos on-line e off-line, compras entre outros.

2.2 Tecnologias envolvidas

Para que a recepção do sinal digital seja possível, algumas mudanças nos aparelhos de TV são necessárias, já que os mesmos estão preparados somente para captar o sinal analógico. Para isso foi criado um aparelho receptor chamado set-top Box.

O set-top Box é um aparelho eletrônico, na sua grande maioria, dotado de

(23)

processador, memória volátil e não-volátil, entradas e saídas, responsável por captar o sinal digital e converter para a TV (TV DIGITAL, 2007).

Há dois tipos de conversores no mercado. Os mais simples contam apenas com saída de áudio/vídeo e, por isso, são indicados para televisores de tubo. O outro modelo de conversor, mais caro, que tem duas saídas uma de áudio/vídeo e outra HDMI (High Definition Multimedia Interface), é recomendado para quem possui TV de plasma e LCD (Liquid Crystal Display) com resoluções de 720 ou 1.080 linhas.

Porém, esses modelos mais caros podem ser usados também para os televisores convencionais, pois têm saída de áudio/vídeo (TV DIGITAL, 2007).

Há aparelhos de TV de três tipos à venda. Os de definição padrão podem exibir uma imagem melhor que a analógica; os HD Ready têm resolução ainda melhor e os Full HD são os únicos preparados para exibir a alta definição, com uma imagem seis vezes superior à atual. Qualquer um destes aparelhos pode vir com o set-top Box embutido ou não (TV DIGITAL, 2007).

É no set-top Box onde estão as aplicações e o Middleware. Este é a camada de software localizada entre as aplicações e o sistema operacional ou entre um software e um hardware. No caso da TV Digital, o Middleware foi desenvolvido totalmente no Brasil e batizado com o nome de Ginga (MDIC, 2007).

Este Middleware é responsável pela comunicação de um aplicativo diretamente com o set-top Box (Hardware). Atualmente, ele suporta as linguagens de Programação C++, Java e NCL, sendo esta última criada especialmente para o Middleware Ginga (MDIC, 2007).

O processo de produção de aplicações para televisão digital é muito

semelhante ao desenvolvimento de qualquer aplicação para computador. A grande

diferença está na distribuição e nas características dessa aplicação que, depois de

prontas, são transmitidas juntamente com o sinal de televisão e executadas no set-top-

box (JUCÁ, LUCENA e FERRAZ, 2006).

(24)

2.3 O middleware Ginga

O Ginga é um software intermediário, um Middleware gratuito que permite que aplicações desenvolvidas para a TV Digital possam ser utilizadas de forma independente da plataforma e do hardware dos fabricantes de terminais de acesso (set-top Box) (GINGA, 2008).

Este Middleware é resultado de anos de pesquisas feitas pela Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio) e pela Universidade Federal da Paraíba (UFPB). O Ginga reúne várias tecnologias de ponta e inovações brasileiras que o tornam a especificação de middleware mais avançada e, ao mesmo tempo, mais adequada à realidade do país (GINGA, 2008).

O Middleware Ginga pode ser dividido em três partes: Ginga-CC, Ginga-J e Ginga-NCL, mostrados na Figura 1 (GINGA, 2008).

FIGURA 1 - Arquitetura do Ginga

 Ginga-CC (Ginga Common-Core): Oferece o suporte básico para os ambientes declarativo (Ginga-NCL) e orientado a objetos (Ginga-J).

Dependendo das funcionalidades requeridas no projeto de cada aplicação, um paradigma de programação (declarativo ou procedural) possui uma melhor adequação que o outro;

 Ginga-J: Desenvolvido pela UFPB para prover uma infra-estrutura de

(25)

execução de aplicações baseada na linguagem Java, com facilidades, especificamente, voltadas para o ambiente de TV digital;

JavaTV: extensão para a plataforma Java para sustentar a produção de conteúdo interativo de forma procedural para a televisão digital, com base nas tecnologias Java.

 DAVIC: Digital Audio Video Council (Conselho de Áudio e Vídeo Digital): conjunto de especificações que têm como principal objetivo sustentar uma interoperabilidade real de ponta a ponta para as plataformas envolvidas na execução de serviços de áudio e vídeo transmitidos via radiodifusão.

 HAVi: Home Audio Video Interoperability (Interoperabilidade Doméstica de Áudio e Vídeo): determinam uma rede doméstica padrão focada na interoperabilidade de dispositivos de áudio e vídeo, de forma que todos os dispositivos de áudio e vídeo componentes de uma rede HAVi possam interagir uns com os outros.

 DVB: incluiu alguns pacotes para estender as funcionalidades oferecidas pelo JavaTV, HAVi e DAVIC. Essas funcionalidades incluem API de Informações de Serviço, Intercomunicação entre Xlets, persistência entre outras.

 Ginga-NCL: Desenvolvido pela PUC-Rio para prover uma infra-estrutura de apresentação de aplicações baseadas em documentos hipermídia escritos na linguagem NCL, com facilidades para a especificação de aspectos de interatividade, sincronismo espaço-temporal de objetos de mídia, adaptabilidade e suporte a múltiplos dispositivos. NCL possui Lua como sua linguagem de script.

 NCL é o responsável pelo processamento de documento NCL.

 XHTML é o responsável pela interpretação de arquivos contendo html, css e javascript.

 LUA responsável pela interpretação de scripts Lua.

(26)

Com o intuito de facilitar o desenvolvimento de aplicações Ginga-NCL, a PUC-Rio desenvolveu também a ferramenta Composer, um ambiente de autoria voltado para a criação de programas NCL para TV digital interativa (GINGA, 2008).

Nessa ferramenta, as abstrações são definidas em diversos tipos de visões que permitem simular um tipo específico de edição (estrutural, temporal, layout e textual). Essas visões funcionam de maneira sincronizada, a fim de oferecer um ambiente integrado de autoria (GINGA, 2008).

Cabe observar que os desenvolvimentos relacionados à linguagem NCL e à ferramenta Composer estão aplicados ao cenário de TV Digital, mas já são aplicados em outros cenários de aplicações multimídia e hipermídia, como Web, IPTV (Internet Protocol Television) etc. TV Digital Interativa é apenas um caso particular de aplicação multimídia (GINGA, 2008).

Independente da linguagem adotada para o desenvolvimento de aplicações para TV Digital, o Ginga permite que sejam criados canais de interatividade entre o usuário da TV Digital e empresas que queiram vender produtos ou disponibilizar informações pela TV, como é feito pela Sky, por exemplo.

Somente com o Ginga instalado no set-top Box, é possível ter acesso à transmissão digital no Brasil. Ele vem instalado de fábrica nos set-top Box nacionais.

Desta forma, se for importado um conversor ou aparelho de TV de outro país, o mesmo não funcionará, já que esta tecnologia é especifica do Brasil e segue as normas ABNT (Associação Brasileira de Normas Técnicas).

As Normas ABNT relativas ao Ginga fazem parte do grupo Codificação de dados e especificações de transmissão para radiodifusão digital. Nesse grupo, as normas aprovadas e publicadas até março de 2008 são as seguintes:

 ABNT (Associação Brasileira de Normas Técnicas) NBR (Norma Brasileira) 15606-1:2007 - Televisão digital terrestre - Codificação de dados e especificações de transmissão para radiodifusão digital - Parte 1:

Codificação de dados (ABNT, 2007);

 ABNT NBR 15606-2:2007 - Televisão digital terrestre - Codificação de

(27)

dados e especificações de transmissão para radiodifusão digital - Parte 2:

Ginga-NCL para receptores fixos e móveis - Linguagem de aplicação XML para codificação de aplicações (ABNT, 2007);

 ABNT NBR 15606-3:2007 - Televisão digital terrestre - Codificação de dados e especificações de transmissão para radiodifusão digital - Parte 3:

Especificação de transmissão de dados (ABNT, 2007);

 ABNT NBR 15606-5:2008 - Televisão digital terrestre - Codificação de dados e especificações de transmissão para radiodifusão digital - Parte 5:

Ginga-NCL para receptores portáteis - Linguagem de aplicação XML para codificação de aplicações (ABNT, 2007).

2.4 Linguagem NCL

A linguagem NCL (Nested Context Language) é uma linguagem declarativa para criação de documentos de hipermídia baseados no modelo conceitual NCM (Nexted Context Model) seguindo os princípios adotados pelo W3C (World Wide Web Consortium) (NCL, 2003).

Seguindo padrões atuais, a NCL foi especificada de forma modular, possibilitando a combinação de seus módulos em perfis de linguagem. Cada perfil pode agrupar um subconjunto de módulos de NCL, proporcionando a criação de linguagens de acordo com a necessidade (NCL, 2003).

O Ginga-NCL foi desenvolvido pela PUC-Rio para fornecer uma infra- estrutura de apresentação para aplicações multimídia/hipermídia sob o paradigma declarativo, escritas em linguagem NCL. A linguagem NCL proporciona facilidades para a especificação de aspecto de interatividade, sincronismo espaço-temporal entre objetos de mídia, adaptabilidade e suporte a múltiplos dispositivos (GINGA-NCL, 2008).

Para o desenvolvimento de aplicações utilizando GINGA-NCL foi

desenvolvida também pela PUC-Rio uma ferramenta chamada Composer com o

intuito de facilitar a criação das aplicações (GINGA-NCL, 2008).

(28)

2.5 Linguagem Java

Java é uma linguagem de programação orientada a objetos, desenvolvida em 1991 por uma pequena equipe de pessoas. Entre eles trabalhavam James Grosling, Mike Sheridan e Patrik Naughton na Sun Microsystems, com o nome de Oak. Por problemas de copyrigth (já existia uma linguagem chamada Oak) o nome foi mudado, em 1995, para Java, em homenagem à ilha de Java, de onde vinha o café consumido pela equipe da Sun (JAVAFREE, 2006).

No início, foi desenvolvida para ser uma linguagem-base de projetos de software para produtos eletrônicos como microondas, geladeiras entre outros. Com sua sintaxe muito parecida com a linguagem C e sua orientação a objetos herdada da linguagem Smalltalk, foi de fácil adesão por parte de programadores de todo mundo.

Java ficou mundialmente conhecida em 1995 com o sucesso da Word Wide Web (JAVAFREE, 2006).

Java é multiplataforma. Quando um programa Java é compilado um código intermediário é gerado, chamado de bytecode. Este bytecode é interpretado pelas máquinas virtuais java (JVM) para a maioria dos sistemas operacionais. A máquina virtual é a responsável por criar um ambiente multiplataforma, ou seja, se alguém construir um sistema operacional novo, basta criar uma máquina virtual java que traduza os bytecodes para código nativo para que todas as aplicações java rodem sem problemas (JAVAFREE, 2006).

Entre outras funções, a máquina virtual Java também é responsável por carregar de forma segura todas as classes do programa, verificar se os bytecodes aderem a especificação JVM e se eles não violam a integridade e a segurança do sistema (JAVAFREE, 2006).

Java é uma linguagem que não se prende a nenhuma arquitetura e a nenhuma

empresa, é rápida e estável. Pode construir sistemas críticos, sistemas que precisam de

velocidade e até sistemas que vão para fora do planeta, como a sonda Spirit enviada

pela NASA (National Aeronautics and Space Administration) para Marte

(JAVAFREE, 2006).

(29)

Suas versões são JSE (Java Standard Edition) voltada para desenvolvimento de aplicações para desktop, JME (Java Micro Edition) para dispositivos móveis e JEE (Java Enterprise Edition) para desenvolvimento de aplicações Web (JAVAFREE, 2006).

Java, atualmente, tem uma comunidade de desenvolvedores muito grande e ativa, proporcionando a criação das mais variadas APIs, bibliotecas de suporte a tipos específicos de aplicações, entre elas esta a API JavaTV (JAVAFREE, 2006).

2.6 API JavaTV

Um dos motivos que levam a linguagem Java a ser difundida mundialmente e uma das mais utilizadas atualmente é a sua versatilidade, ou seja, se deseja-se um aplicativo para um automóvel, existe a Java Car, se deseja que um anel com capacidades de processamento execute um programa específico, existe a API JavaRing, além de inúmeros outros casos como celular e web. Não é diferente com TV Digital, onde, existe uma API completa, chamada de JavaTV, que é um pacote opcional para a plataforma JME (Java Micro Edition), mais especificamente para a configuração CDC (Connected Device Configuration), que fornece, segundo (LOUREIRO, 2004), as seguintes funcionalidades:

 Fluxo de áudio e vídeo;

 Acesso condicional;

 Acesso aos dados nos canais de transmissão;

 Acesso aos dados do Service Information;

 Controle do sintonizador de canais;

 Sincronização da mídia;

 Gerenciamento do ciclo de vida das aplicações.

JavaTV necessita de um ambiente PersonalJava e usa um subconjunto do

AWT (Abstract Window Toolkit) para construir as interfaces do usuário e o JMF (Java

Media Framework) para o controle da mídia. A API está organizada nos seguintes

(30)

pacotes:

 javax.tv.xlet – modelo de ciclo de vida das aplicações e classes de apoio;

 javax.tv.locator – provê mecanismos para referências em formato de URL para serviços de broadcast e clipes de mídia broadcast;

 javax.tv.net – provê mecanismo para acessar datagramas IP contidos em um fluxo de broadcast;

 javax.tv.carousel – acesso a arquivos de broadcast agregados em um sistema de arquivos no fluxo de vídeo;

 javax.tv.graphics – adiciona um suporte mínimo à biblioteca gráfica AWT, para solução de questões específicas em TV (sobreposição de imagens em vídeo, etc.);

 javax.tv.util – classes utilitárias para aplicações JavaTV, incluindo gerência de temporizadores e eventos temporizados;

 javax.tv.media – extensões para suporte à integração JMF;

 javax.tv.media.protocol – suporte JMF para protocolos de streaming broadcast;

 javax.tv.service – descrição de alto nível de serviços de TV Digital, incluindo também mecanismos básicos para a coleta de informações sobre serviço do fluxo broadcast;

 javax.tv.service.guide – suporte para aplicações do tipo EPG (Eletronic Program Guide) um Guia Eletrônico de Programação e seus conceitos associados (horário, classificação etária, etc.).

 javax.tv.service.navigation – suporte à navegação em serviços de TV Digital. Isso inclui suporte à lista de serviços favoritos, componentes agregados a serviços, etc.;

 javax.tv.service.transport – conceitos descrevendo os mecanismos de transporte para um serviço de TV Digital;

 javax.tv.service.selection – conceitos descrevendo como os serviços são apresentados ao usuário e como um novo serviço pode ser selecionado.

Há também a possibilidade de apresentação de múltiplos serviços de uma

(31)

só vez (picture-in-picture).

A API JavaTV fornece um gerenciamento do ciclo de vida dos aplicativos.

Como os applets ou os MIDlet, os programas em JavaTV são chamados de Xlet e sua estrutura é mostrada na Figura 2.

FIGURA 2 - Ciclo de vida de um Xlet

Uma vez que a classe é carregada no aparelho, ela está no estado Loaded (entra neste estado uma única vez), a partir deste momento, a aplicação pode ser executada através dos métodos initXlet() e StartXlet(), entrando no estado Started, e, posteriormente, ser pausada (Paused, estado onde a aplicação Xlet é paralisada) ou destruída (Destroyed, onde termina o ciclo de vida). Semelhante ao que ocorre com applets e MIDlets, as Xlets também fornecem métodos para um completo gerenciamento do ciclo de vida de uma aplicação (JAVATV, 2007).

Toda Xlet deve possuir um contexto, que de maneira geral serve para isolar a aplicação do resto da máquina virtual. Um objeto XletContext é passado a uma Xlet quando ele é inicializado. É através desta interface que o Gerenciador de Aplicações controla o estado de um Xlet. Entre outras funções, o contexto permite a Xlet descobrir informações a respeito do ambiente de execução. A interface XletContext define os seguintes métodos (JAVATV, 2007):

notifyDestroyed: Este método sinaliza ao Gerenciador de Aplicações que

(32)

a Xlet entrou no estado Destruída após a Xlet ter completado sua execução e estar pronto para ser destruído;

notifyPaused: Este método sinaliza ao Gerenciador de Aplicações que a Xlet entrou no estado Pausada. Deve-se entrar neste estado quando a Xlet não for prover um serviço por um curto período de tempo;

getXletProperty: Este método possibilita a Xlet obter informações sobre o ambiente de execução;

resumeRequest: Este método sinaliza ao Gerenciador de Aplicações que a Xlet deseja entrar no estado em execução.

2.7 Conclusão

O desenvolvimento deste capítulo foi de fundamental importância para adquirir o conhecimento necessário para a implementação dos protótipos propostos neste trabalho e, também, conhecer as tecnologias de forma mais abrangente.

Com este conhecimento, tanto sobre TV Digital quanto sobre Ginga e Java, é possível explorá-los para tirar melhor proveito destas tecnologias com os protótipos de TV Interativa.

As maiores dificuldades foram encontrar material de entidades renomadas,

pois devido à tecnologia ser recente o material é escasso. Contudo, isto não impediu o

avanço do trabalho e possibilitou um bom fundamento sobre as tecnologias envolvidas

na TV Digital.

(33)

3 DESENVOLVIMENTO E APRESENTAÇÃO DOS PROTÓTIPOS

Este Capítulo apresenta o processo de desenvolvimento de dois protótipos para TV Digital utilizando a API (Application Programming Interface) JavaTV. Ele descreve as ferramentas utilizadas, o que precisa ser configurado antes de iniciar o desenvolvimento, faz uma breve descrição das API utilizadas e explica o ciclo de vida de uma Xlet, demonstrando, com exemplos práticos, como construir uma Xlet e como executá-la utilizando o Xletview.

3.1 Ferramentas Utilizadas

Para implementar e executar o projeto proposto é necessário utilizar um conjunto de programas, que são: o Kit de Desenvolvimento Java (JDK), uma IDE (Integrated Development Environment) para desenvolvimento Java e o Emulador XletView.

Java Development Kit (JDK) é um conjunto de ferramentas, composto por compilador e bibliotecas, que permite criar sistemas de software para a plataforma Java.

IDE, ou Ambiente Integrado de Desenvolvimento, é um programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de software com o objetivo de facilitar este processo. Para o desenvolvimento de aplicações Java é bastante recomendável o uso de uma IDE. As duas mais conhecidas e utilizadas são Eclipse e Netbeans. Os exemplos apresentados nas próximas seções foram implementados na IDE Eclipse 3.4.0 Ganymed.

Como os programas desenvolvidos neste projeto serão executados a partir de

(34)

um computador, existe a necessidade de um emulador para simular o ambiente do set- top Box, com seus recursos e limitações. Neste projeto foi utilizado o XletView.

O XletView, cuja interface é apresentada na Figura 3, é uma ferramenta que emula Xlets para TV Digital em um computador. Ele possui código aberto (Open Source), recursos multimídias implementados para utilização dos componentes HAVi

(

Home Audio Video Interoperability

) e

uma API que permite ao programador criar elementos para a interface com o usuário. Ele provê uma extensão ao pacote java.awt, permitindo, assim, suporte a controle remoto, transparência, entre outros (ALBUQUERQUE e LOPES, 2008).

O XletView é baseado no padrão MHP (Multimedia Home Platform - Plataforma Doméstica de Multimídia) e fornece uma maneira fácil e rápida de testar as aplicações.

FIGURA 3 - XletView.

Como é programado totalmente em Java, o XletView pode ser executado

tanto em plataforma Linux como Windows, bastando para isso utilizar o Java 2

Standard Development Kit para compilar Xlets e executar o XletView. É recomendado

executar o Xletview através da linha de comando java –jar xletview.jar, pois desta

forma é possível ver no terminal o resultado de comandos como System.out.println() e

(35)

mensagens de erro.

A versão utilizada deste emulador foi a 0.3.6 em conjunto com o JMF 2.1.1.

O XletView possui muitas limitações, pois não dá suporte a todas as funcionalidades oferecidas pela API JavaTV e não reproduz muitas das codificações de vídeo.

3.2 Configurando o ambiente

O projeto deve conter as bibliotecas necessárias para a construção de aplicativos para TV Digital. Para isso é necessário informar o caminho onde estas se encontram, ou seja, importar o arquivo javatv.jar referente a biblioteca da API JavaTV. Para que a aplicação possa referenciar as bibliotecas do MHP, HAVi, DAVIC e JMF é necessário importar, também, o arquivo xletview.jar.

FIGURA 4 - Propriedades do projeto

Para realizar esta operação, no Eclipse, após ter um projeto criado, deve-se

(36)

acessar suas propriedades, como mostra a Figura 4, a qual apresenta a opção Java Build Path. Na aba Libraries existe a opção de adicionar o .jar externo como mostra a Figura 5.

FIGURA 5 - Adicionando as bibliotecas

3.3 Protótipo 1 - Aplicação que calcula massa corporal

Esta seção apresenta a implementação de um exemplo de aplicação interativa, desenvolvida para calcular a massa corporal, que permite o usuário informar seu peso e altura e obter o resultado e informar se esta acima ou a baixo do peso ideal.

O usuário está assistindo, por exemplo, um conteúdo que fala sobre bons hábitos de saúde ou qualquer outro programa de TV. Através do controle remoto, o usuário digita sua altura e seu peso e a aplicação calcula seu índice de massa corporal.

Com base neste índice, o telespectador pode saber se está ou não acima do peso e, se

necessário, ir ao consultório médico.

(37)

Essa mesma aplicação pode ser expandida e utilizada para marcar uma consulta com um médico da rede pública em caso de obesidade sem a necessidade de deslocamento até o posto mais próximo.

A Figura 6 apresenta a tela inicial da aplicação com os campos para informar os valores usados no cálculo, que são peso e altura. Através dos botões de navegação do controle remoto do XletView acontece a escolha dos campos para edição e dos botões com ações.

FIGURA 6 - Tela inicial XLetIMC.

O Quadro 1 mostra as bibliotecas necessárias para executar a aplicação.

Dentre elas esta a AWT, responsável pela criação dos textos, painéis, campos para edição e os botões. A API JavaTV é utilizada para a criação do Xlet cuja classe principal implementa a interface javax.tv.xlet.Xlet.

Outra API utilizada é a HAVi que é responsável pela cena que contém o

painel da aplicação e o vídeo que esta rodando em segundo plano.

(38)

QUADRO 1 - Código contendo a declaração dos imports necessários.

01 import java.awt.Button;

02 import java.awt.Color;

03 import java.awt.Component;

04 import java.awt.Label;

05 import java.awt.Panel;

06 import java.awt.Rectangle;

07 import java.awt.TextArea;

08 import java.awt.TextField;

09 import java.awt.event.KeyEvent;

10 import java.awt.event.KeyListener;

12 import javax.media.Player;

13 import javax.tv.media.AWTVideoSize;

14 import javax.tv.media.AWTVideoSizeControl;

15 import javax.tv.service.selection.ServiceContentHandler;

16 import javax.tv.service.selection.ServiceContextFactory;

17 import javax.tv.xlet.Xlet;

18 import javax.tv.xlet.XletContext;

19 import javax.tv.xlet.XletStateChangeException;

20 import org.havi.ui.HScene;

21 import org.havi.ui.HSceneFactory;

22 import org.havi.ui.HScreen;

23 import org.havi.ui.HStaticText;

24 import org.havi.ui.event.HRcEvent;

O código do Quadro 2 mostra a declaração da classe que implementa a interface Xlet responsável pelo ciclo de vida da aplicação, contendo os métodos básicos de uma aplicação para TV Digital e o KeyListener, responsável por conter os métodos referentes ao eventos.

O Quadro 2 mostra, ainda, a declaração dos componentes responsáveis pela construção da tela (os componentes Panel responsáveis por agrupar os demais componentes, os TextField para entrada de informação, Label para texto estático e Button para criação dos botões, fazem parte da API AWT) e os componentes context e scene que são específicos de aplicações para TV Digital.

QUADRO 2 - Declaração da classe e dos componentes.

01 public class IMCXlet implements Xlet, KeyListener { 02 private XletContext contexto;

03 private HScene scene;

04 private Panel panelMenuRodape = null;

05 private Button buttonCalcular = null;

(39)

06 private Button buttonDietas = null;

07 private Panel panelMenuLateral = null;

08 private Label labelPeso = null;

09 private TextField textFieldPeso = null;

01 private Label labelAltura = null;

02 private TextField textFieldAltura = null;

03 private Label labelResultado = null;

04 private Label labelResultadoDesc = null;

05 private Button buttonLimpar;

06 private TextArea textAreaInformacoes;

No código do Quadro 3 é mostrado o método responsável por carregar a aplicação o initXlet, que recebe como parâmetro um XletContext, o qual é chamado pelo Middleware do set-top Box passando o xletContext. É através deste objeto que o gerenciador de aplicações controla o estado de um Xlet. O xletContext permite ao Xlet descobrir informações a respeito do ambiente de execução, ou seja, dos recursos disponíveis no hardware set-top Box, e no Middleware Ginga.

QUADRO 3 - Código mostrando o método initXlet 01 public void initXlet(XletContext xletContext) throws 02 XletStateChangeException {

03 this.contexto = xletContext;

04 05 }

O código apresentado no Quadro 4 mostra o método responsável por iniciar a aplicação. Ele contém o componente ou container scene da API HAVi responsável por adicionar os painéis da aplicação, gerenciar as camadas de apresentação e transparência.

QUADRO 4 - Código do método startXlet

01 public void startXlet() throws XletStateChangeException {

02 HSceneFactory hsceneFactory = HSceneFactory.getInstance();

03 scene =

04 hsceneFactory.getFullScreenScene(HScreen.getDefaultHScreen().

05 getDefault.HGraphicsDevice());

06 scene.setSize(640, 480 07 scene.setLayout(null);

08 scene.add(getPanelMenuRodape());

09 scene.add(getPanelMenuLateral());

10 scene.setVisible(true);

11 textFieldPeso.requestFocus();

12 }

(40)

O código do Quadro 5 mostra a criação de um panel da API AWT. Ele é instanciado e são definidos a cor, o tamanho, a posição e também são adicionados outros componentes dentro dele. O panel instanciado pode ser visualizado na Figura 7.

A criação do painel é a mesma utilizada na programação desktop. O método do panel lateral responsável por mostrar informação sobre a tabela de massa corporal segue o mesmo contexto do painel rodape.

QUADRO 5 - Método getPanelMenuRodape.

01 private Panel getPanelMenuRodape() { 02 if (panelMenuRodape == null) {

03 panelMenuRodape = new Panel();

04 panelMenuRodape.setLayout(null);

05 panelMenuRodape.addKeyListener(this);

06 panelMenuRodape.setBounds(new Rectangle(0, 476, 525, 07 115));

08 panelMenuRodape.setBackground(Color.BLUE);

09 panelMenuRodape.add(getButtonCalcular(), null);

10 panelMenuRodape.add(getButtonDietas(), null);

11 panelMenuRodape.add(getLabelPeso(), null);

12 panelMenuRodape.add(getTextFieldPeso(), null);

13 panelMenuRodape.add(getLabelAltura(), null);

14 panelMenuRodape.add(getTextFieldAltura(), null);

15 panelMenuRodape.add(getLabelResultado(), null);

16 panelMenuRodape.add(getLabelResultadoDesc(), null);

17 panelMenuRodape.add(getButtonLimpar(), null);

18 }

19 return panelMenuRodape;

20 }

FIGURA 7 - Painel inferior.

O método mostrado no Quadro 6 é responsável pela instanciação do botão

calcular mostrado na Figura 7, com seu tamanho, localização e cor, nele também é

adicionada uma ação chamada actionListener, responsável pela ação do botão, que

chama o método calcularIMC, cuja implementação é mostrada no Quadro 7.

(41)

QUADRO 6 - Código ButtonCalcular 01 private Button getButtonCalcular() {

02 if (buttonCalcular == null) {

03 buttonCalcular = new Button();

04 buttonCalcular.setName("Start");

05 buttonCalcular.setBounds(new Rectangle(72, 57, 89, 06 23));

07 buttonCalcular.setLabel("Calcular");

08 buttonCalcular.addKeyListener(this);

09 buttonCalcular.addActionListener(new 10 java.awt.event.ActionListener() {

11 public void

12 actionPerformed(java.awt.event.ActionEvent e) {

13 calcularIMC();

14 }

15 });

16 }

17 return buttonCalcular;

18 }

O método apresentado no Quadro 7 é responsável por calcular a massa corporal através da formula de IMC. Este método é chamado ou disparado através do evento executado pelo botão calcular mostrado na linha 13 do Quadro 6. Este evento se dá quando o usuário seleciona o botão calcular através do controle remoto e pressiona o botão OK do mesmo.

QUADRO 7 - Código do método calcularIMC 01 protected void calcularIMC() {

02 Double resultado = peso / (altura * altura);

03 setResultado(resultado);

04 setInf();

(42)

FIGURA 8 - Método calcular executado.

A Figura 8 mostra a tela da aplicação após executar o método calcularIMC(), através da ação do botão executar. É mostrado o resultado do calculo e uma relação dos pesos e a descrição se esta acima ou abaixo do normal.

O Quadro 8 mostra o método que implementa a interface KeyListener. Ele é responsável pelos eventos do controle remoto do emulador. Quando é pressionada uma tecla do controle remoto é chamado este método. O parâmetro passado é o evento o qual é interpretado para saber qual botão foi pressionado, chamando o seu método específico. A navegação através do controle remoto é feita através das setas e o Enter é obtido através da tecla OK.

QUADRO 8 - Código do método keyPressed 01 @Override

02 public void keyPressed(KeyEvent e) {

03 if (e.getKeyChar()==HRcEvent.VK_ENTER) { 04 if(buttonCalcular.isFocusOwner())

05 calcularIMC();

06 else if(buttonLimpar.isFocusOwner())

(43)

07 limpar();

08 }

09 else if (e.getKeyChar()==HRcEvent.VK_0) { 10 if(textFieldPeso.isFocusOwner())

11 textFieldPeso.setText(textFieldPeso.getText()+"0");

12 else

13 textFieldAltura.setText(textFieldAltura.getText()+"0");14 14 }else if (e.getKeyChar()==HRcEvent.VK_1) {

15 if(textFieldPeso.isFocusOwner())

16 textFieldPeso.setText(textFieldPeso.getText()+"1");

17 else

18 textFieldAltura.setText(textFieldAltura.getText()+"1");

Por fim, é apresentado o método no Quadro 9, que é chamado em uma aplicação Xlet ao finalizá-la, para isto deve-se implementar o método destroyXlet() da interface Xlet. Este método é chamado neste caso através do botão Exit do controle remoto.

QUADRO 9 - Código do método destroyXlet.

01 public void destroyXlet(boolean unconditional) throws 02 XletStateChangeException {

03 if (scene!=null) {

04 scene.setVisible(false);

05 scene.removeAll();

06 scene = null;

07 }

08 contexto.notifyDestroyed();

3.4 Protótipo 2 – Aplicação para programa de show de calouros.

O segundo protótipo consiste em uma aplicação para TV Digital onde o telespectador interage com um programa de show de calouros, assistindo os candidatos, votando no seu preferido e vendo os resultados parciais. Como a aplicação é somente um protótipo, ela não terá canais de transmissão e recepção. Os vídeos dos candidatos estão armazenados em disco e são carregados em tempo de execução.

A Figura 9 mostra a estrutura do projeto separado pelos pacotes bussines,

container, vo e xlet. As classes do pacote container são responsáveis por adicionar os

painéis laterais e inferiores na aplicação. As classes do pacote vo são responsáveis por

armazenar os atributos manipulados pela aplicação. A classe do pacote bussines é

responsável por manipular os vídeos apresentados na aplicação. O pacote xlet contém

(44)

a classe responsável pelo gerenciamento da aplicação, que implementa a interface javax.tv.xlet.Xlet. Esta classe é denominada ShowDeCalourosXlet.java e contém os métodos definidos na interface Xlet como initXlet(), startXlet(), pauseXlet() e destroyXlet().

FIGURA 9 - Hierarquia de classes

O Quadro 10 mostra as bibliotecas utilizadas pela classe ShowDeCalourosXlet.java que implementa a interface Xlet da API JavaTV, são elas: a API AWT, responsável pela parte gráfica da aplicação; HAVI, responsável pela cena que contém o painel da aplicação e o vídeo que esta rodando em segundo plano. Ainda no Quadro 10 é mostrada a declaração da classe ShowDeCalourosXlet.java a qual estende a classe HContainer e implementa as interfaces Xlet e KeyListener.

QUADRO 10 - Declaração dos imports da classe ShowDeCalourosXlet.java 01 package com.br.tvInterativa.xlet;

02 import java.awt.Rectangle;

03 import java.awt.event.KeyEvent;

04 import java.awt.event.KeyListener;

05 import javax.media.Player;

06 import javax.tv.media.AWTVideoSize;

07 import javax.tv.media.AWTVideoSizeControl;

08 import javax.tv.service.selection.ServiceContentHandler;

09 import javax.tv.service.selection.ServiceContextFactory;

Referências

Documentos relacionados

Para isso foi importante saber se o construto consentimento está presente entre professores que atuam na escola alvo deste estudo e sobre o nível de interferência do vínculo

A Figura 2 mostra um exemplo de Carta de Risco a Inundações, Enchentes e Alagamentos obtido para uma área no Litoral Norte de São Paulo (município de

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

nomeação do primeiro candidato PCD para a 5ª (quinta) vaga surgida, qualquer que seja o percentual de vagas PCD, no mínimo de 5% e no máximo de 20%

Assim que o cupim estiver configurado e com o botão de controle ligado e a porta RS232 conectada ao PC, você pode usar os seguintes comandos para configurar o rotor Ham.... Lista

de acordo com uma autorização de débito previamente emitida por si (autorização de débito em Conta) ou numa instrução de cobrança remetida pelo credor. A autorização de

Nestes dados, obviamente estão incluídas situações de urgência colectiva, com envolvimento de alguns tipos de produtos, designadamente químicos e biológicos; no

No decorrer deste estágio houve a oportunidade de mobilizar e adquirir novas competências relacionadas com a prescrição de exercício físico de acordo com os objetivos