Utilizando o framework AppTV no desenvolvimento de aplicações para TV
Digital Interativa
Lile Palma Hattori
1, Sylvio Siqueira Silva
1,Tatiana Aires Tavares
1, Manoel Carvalho Marques
Neto
1, Celso Saibel
11
Núcleo Interdepartamental de Pesquisas em Redes de Computadores – Universidade Salvador
(UNIFACS) Rua Ponciano de Oliveira, 126 – 41.950-275 – Salvador – BA - Brasil
{lile,sylvio}@frb.br {tati,manoel.netom}@unifacs.br,
Abstract
The development of interactive applications for television with digital transmission standard is a little explored area with lack of documentation. The tools that help this proccess offering some level of automatation are rare. In this context, this article proposes a framework to help building applications for Digital TV using Java.
Resumo
O desenvolvimento de aplicações interativas para televisão com padrão de transmissão digital ainda é uma área pouco explorada e carente de documentação. São raras as ferramentas que auxiliam esse processo através do fornecimento de um certo nível de automação. Nesse contexto, este artigo apresenta algumas aplicações piloto construídas com o framework para auxiliar a construção de aplicativos para a TV Digital utilizando Java.
1. Introdução
De acordo com o Ministério das Comunicações a transmissão digital do sinal de televisão deverá estar disponível no Brasil ainda em 2006 [1].
Uma das principais vantagens da chegada da TV digital no país é a possibilidade do aumento da interatividade entre o telespectador e a televisão através do fornecimento de serviços como jogos, vídeo sob demanda, compras através da TV, acesso à Internet, canais interativos, dentre outros [2].
No entanto, por ser uma tecnologia relativamente nova, com poucos padrões definidos e informações escassas, a construção de aplicativos para TV Digital e Interativa ainda é vista como desafio por muitos. O que parece ser apenas uma adaptação do desenvolvimento de aplicações para computadores a um ambiente semelhante, mostra-se extremamente diferente no que
se refere à estrutura de funcionamento, aos recursos utilizados e à forma de implementação [3,4].
Nesse contexto, este artigo tem o objetivo de apresentar algumas experiências desenvolvidas através do uso do framework AppTV. Esse framework foi concebido para auxiliar a construção de aplicativos para essa nova modalidade de software. Sua principal função é abstrair e encapsular parte dos conceitos da TV Digital que o desenvolvedor necessitaria assimilar para produzir software baseado nesse novo paradigma de programação. Além disso, possibilita que editores de TV “criem” aplicativos através da edição de documentos XML, abstraindo a linguagem de programação para uma de mais alto nível, com tags intuitivas e de simples manipulação.
Este artigo apresenta a seguinte estrutura: na seção 2 é apresentado o framework desenvolvido, com enfoque na sua arquitetura e modelo; na seção 3, é descrito um estudo de uma aplicação criada com o apoio do AppTV; a seção 4 demonstra como estão sendo planejados os testes para a validação; e, por fim, a seção 5 descreve as considerações finais e trabalhos futuros.
2. O framework AppTV
Os middlewares dos diversos padrões de TV Digital, existentes mundialmente, inclusive o DVB [5], o ATSC [6] e o ISDB [7], estão adotando suporte a aplicações desenvolvidas para a plataforma Java [8]. A concepção do AppTV baseou-se nesse fato e visou proporcionar, aos programadores Java, um nível de abstração, sobre os conceitos da TV Digital, suficiente para que produzam conteúdo sem se tornarem especialistas no assunto.
O AppTV é um framework flexível – possibilita sua utilização nos diversos middlewares que suportem a plataforma JavaTV, extensível – admite que classes sejam criadas para aumentar sua funcionalidade, e
componentizado – possui componentes, inacabados ou default, que representam a estrutura de um aplicativo específico [3].
Na construção do AppTV, utitilizou-se, essencialmente, a API JavaTV [8]. No módulo que fornece suporte a particularidades do middleware MHP, empregou-se, também, a API HAVi Level 2 UI [9]. A arquitetura divide-se em duas camadas inter-relacionadas, ilustradas na Figura 1: base e aplicações.
Figura 1. Arquitetura do AppTV
A base é a camada de apoio à criação de aplicativos, desenvolvida com o objetivo de fornecer os elementos essenciais à existência de uma aplicação. É formada por classes abstratas e interfaces, como observado no diagrama de classes da Figura 2.
As classes DataXMLFactory, DataType e DataXMLIf, são responsáveis por ler o documento XML com as informações que serão exibidas na aplicação, caso esta as contenha.
As classes ComponentProperties e ContainerProperties, têm a função de guardar as informações modificáveis sobre a interface visual de um aplicativo.
Por fim, a classe abstrata XletAb implementa a interface javax.tv.xlet.Xlet da API JavaTV, além da XletMHPAb, que estende da XletAb e contém particularidades do middleware MHP. Essas últimas classes devem ser estendidas pela classe principal de qualquer aplicação e são a chave para o correto aproveitamento das funcionalidades oferecidas pelo AppTV.
A camada de aplicações é formada por módulos que representam, individualmente, um aplicativo. Esses módulos são construídos com base num modelo rígido, criado com o objetivo de padronizar o processo de construção de aplicativos como uma enquete, ou um boletim de previsão de tempo.
Esse modelo prevê que cada aplicativo criado poderá ser personalizado por um editor de TV1, que
não dispõe de conhecimento sobre linguagens de programação. Essa personalização acontece tanto na interface visual como no conteúdo de um aplicativo, através da manipulação de dois documentos XML.
1 Profissional responsável pela edição de programas em
uma emissora de TV.
Portanto, cada módulo deve conter dois conjuntos de classes: um responsável por ler esses documentos, separadamente; e outro, com a finalidade de reunir todas essas informações aos elementos essenciais fornecidos pela camada base. A camada de aplicativos é composta, inicialmente, por dois módulos que representam os aplicativos quiz e informativo de esportes. Ela tem como princípio a componentização e pode ser estendida a partir da criação de outros módulos correspondentes a novos aplicativos.
3. Utilizando o AppTV
Para demonstrar a utilização prática do AppTV elaboramos dois componentes iniciais, o quiz e o informativo de esportes, utilizando toda a infra-estrutura disponível no AppTV. Ambos seguem o modelo apresentado na seção 2 e serão detalhados nas subseções seguintes.
3.1. Cenário de Uso: Informativo de Esportes
O informativo de esportes tem o objetivo de fornecer informações gerais sobre dois times que estejam disputando um campeonato. Dessa forma, o telespectador, enquanto estiver assistindo a uma partida entre esses dois times, pode obter informações sobre os jogadores e técnicos envolvidos na partida, bem como verificar a classificação atual do campeonato.Para atender aos requisitos acima, o informativo de esportes foi modelado de acordo com o digrama ilustrado na Figura 3.
A classe Info é a principal e será acessada diretamente pelo gerenciador de aplicativos do set-top box. A InfoConfig é a responsável por ler o documento XML que contém as propriedades visuais e a InfoProperties armazena as informações lidas. A classe InfoControl é responsável por chamar a classe do módulo base do AppTV para preencher as informações que serão exibidas no informativo.
O documento XML fornece a possibilidade de modificar as propriedades de cada um dos componentes existentes no aplicativo, como pode ser visto abaixo.
Figura 2. Diagrama de classes da base do AppTV
Figura 3. Diagrama de classes do informativo de esportes
Cada tag do documento corresponde a uma classe e cada atributo de uma tag, a uma propriedade de uma das classes. Esse mapeamento é feito com as classes InfoProperties, ContainerProperties e ComponentProperties. Essa semelhança facilita a leitura do arquivo, através da biblioteca JDOM, e o armazenamento das informações.
A seguir será detalhado o documento XML que possibilita a edição das propriedades visuais da aplicação.
<CONFIGURE>
<CONTAINER NAME="MAIN">
<COMPONENT NAME="TITLE" LABEL="INFO"> <FONT NAME="VERDANA" SIZE="16" STYLE="PLAIN"> </FONT>
<BACKGROUND COLOR="RED"> </BACKGROUND>
<FOREGROUND COLOR="BLACK"></FOREGROUND> </COMPONENT> .... </COMPONENT> </CONTAINER> ... </CONFIGURE>
O documento XML que contém as informações a serem disponibilizadas segue a mesma lógica apresentada para o documento acima. As classes correspondentes são Informative, Championship, Team e Player.
<INFO NAME="FUTEBOL">
<CHAMPIONSHIP NAME="COPA DO MUNDO"> <CLASSIFICATION
<CLASSIFICATION TEAMNAME="ALEMANHA"> </CLASSIFICATION> <CLASSIFICATION TEAMNAME="FRANCA"> </CLASSIFICATION> ... </CHAMPIONSHIP> <TEAM NAME="BRASIL"> <COACH NAME="PARREIRA"> <COACHDETAIL NAME="Idade: 58"> </COACHDETAIL> ... </COACH> <PLAYER NAME="RONALDO"> <DETAIL NAME="GOLS: 0"> </DETAIL> </PLAYER> ... </TEAM> ... </INFO>
A Figura 4 ilustra o resultado da implementação das classes apresentadas no diagrama da figura 3 em conjunto com as informações lidas dos documentos XML. Como se pode observar, o informativo foi associado a uma partida de futebol e apresenta detalhes dos jogadores e técnicos de cada um dos times, bem como informações gerais sobre o campeonato. Nota-se que o primeiro documento XML apresentado possibilita, dentre outras funções, a edição das cores dos componentes vistos na figura, bem como tamanho e cor da fonte, enquanto o segundo é responsável apenas pelo conteúdo disponibilizado.
3.2. Cenário de Uso: Quiz
O Quiz foi concebido com a finalidade de oferecer um jogo de perguntas e respostas que possa ser associado a um programa de televisão.
Um exemplo de sua utilização seria permitir que o telespectador participasse indiretamente de um programa como o “Show do Milhão”. Enquanto os convidados estivessem respondendo às perguntas feitas pelo apresentador, o telespectador também poderia respondê-las em sua casa. No fim do programa, saberia quantas perguntas acertou, podendo comparar seu desempenho ao dos convidados.
Para atender aos requisitos descritos, o pacote quiz foi modelado como mostrado na Figura 5. A classe Quiz é a principal e será acessada pelo gerenciador de aplicações do set-top box. Como se pode observar, o diagrama de classes do quiz é semelhante ao do informativo de esportes, apresentado na seção 3.1 e também segue o modelo descrito na seção 2. Essa semelhança é proposital e tem como principal objetivo a padronização da criação de aplicações.
As classes Game, Question e Answer são as responsáveis por armazenar as informações referentes às perguntas que compõem o quiz. Essas informações são buscadas pela classe DataGameXML no respectivo documento XML, que, assim como no informativo, tem seu conjunto de tags baseado nas propriedades dessas três classes.
Figura 4. Interface de Usuário da Aplicação Informativo de Esportes.
Figura 5. Diagrama de classes do Quiz A seguir, pode-se observar um trecho desse
documento.
<GAME THEME="GEOGRAFIA">
<QUESTION NAME="QUANTAS CAPITAIS DO BRASIL SÃO ILHAS?">
<ANSWER STATUS="TRUE" NAME="3"> </ANSWER>
<ANSWER STATUS="FALSE" NAME="5"> </ANSWER>
<ANSWER STATUS="FALSE" NAME="2"> </ANSWER>
<ANSWER STATUS="FALSE" NAME="1"> </ANSWER>
</QUESTION>
<QUESTION NAME="QUANTOS ESTADOS TEM O BRASIL?">
<ANSWER STATUS="FALSE" NAME="30"> </ANSWER>
<ANSWER STATUS="FALSE" NAME="51"> </ANSWER>
<ANSWER STATUS="TRUE" NAME="27"> </ANSWER>
<ANSWER STATUS="FALSE" NAME="13"> </ANSWER>
</QUESTION>
...
</GAME>
As propriedades visuais do quiz são armazenadas no mesmo documento apresentado no informativo de esportes e relacionam-se com as classes QuizProperties, ContainerProperties e ComponentProperties.
É importante ressaltar que o objetivo do uso de documentos XML para a edição das informações de uma aplicação é possibilitar a uma pessoa da área de televisão, que não entende sobre programação, editar e modificar as aplicações pré-concebidas para de atender aos requisitos específicos de um contexto.
A Figura 6 apresenta o resultado da implementação do quiz. Foram criados alguns protótipos que se diferenciam pelo posicionamento dos componentes na tela. Este pode ser centralizado, alinhado abaixo, na esquerda, na direita, ou acima. Na figura abaixo são ilustrados os dois últimos citados.
Figura 6. Interface de Usuário da Aplicação Quiz
5. Conclusão
Este artigo tem como proposta a apresentação de resultados provenientes de experiências-piloto na construção de aplicações de TV Digital e Interativa a partir do uso do framework AppTV. Estas experiências visam validar o framework concebido para facilitar a criação de aplicações para a TV Digital.
Nossa intenção é atender, especificamente, dois grupos envolvidos da produção de conteúdo digital, programadores e editores de televisão. É importante frisar que o AppTV, apesar de prever, inicialmente, a criação de aplicativos que não necessitam de canal de retorno, também suporta a construção de aplicações mais robustas.
O AppTV está, atualmente, sendo validado através de testes com programadores. Além da validação, outros trabalhos futuros relacionados ao AppTV, que estão sendo planejados, são a criação de outros módulos de aplicativos específicos, a especialização do framework para os diversos middleware e o incremento da camada base.
6. Referências
[1] Ministério das Comunicações (2005) “TV digital - Modelo de referência fica para fevereiro de 2006”, http://sbtvd.cpqd.com.br, Março.
[2] Peng, C. (2002) “Digital Television Applications”, Tese (Doutorado em ciência de tecnologia) – Helsinki University of Technology, Espoo, 2002.
[3] Marques, M.; Hattori, L; Silva, S (2005) “TV Digital: Estamos preparados?”, In: Revista Cientifico, Ano V, volume I, Janeiro- Junho 2005, Salvador: FRB.
[4] Silva, R. (2000) “Suporte ao desenvolvimento e uso de frameworks e componentes”, Tese (Doutorado em ciência da
computação) – Universidade Federal do Rio Grande do Sul, Porto Alegre, 2000.
[5] DVB (2005) “Digital Vídeo Broadcasting”, http://www.dvb.org, Outubro.
[6] ATSC. (2005) “Advanced Television Systems Commitee”, http://www.atsc.org, Outubro.
[7] ISDB (2005) “Integrated Services Digital Broadcasting”, http://www.dibeg.org, Outubro.
[8] Sun Microsystems (2005) “Java TV API”, http://java.sun.com/products/javatv/, Março.
[9] HAVi (2004) “Home Audio Video Interoperability”, http://www.havi.org, Abril.