ESTRATÉGIA DE DESENVOLVIMENTO DE SOFTWARE
INTERATIVO COM GINGA-NCL PARA TV DIGITAL
João Vitor Carvalho de Melo – [email protected]
Universidade Federal do ABC
Avenida dos Estados, 5001 - Bairro Bangú
09210-580 – Santo André – São Paulo
Iann Vicari Mascarenhas – [email protected]
Universidade Federal do ABC
Avenida dos Estados, 5001 - Bairro Bangú
09210-580 – Santo André – São Paulo
Geiza Caruline Costa – [email protected]
Universidade Federal do ABC
Avenida dos Estados, 5001 - Bairro Bangú
09210-580 – Santo André – São Paulo
Celso Setsuo Kurashima – [email protected]
Universidade Federal do ABC
Avenida dos Estados, 5001 - Bairro Bangú
09210-580 – Santo André – São Paulo
Resumo: Com o início da operação da TV Digital aberta no Brasil e a disseminação do
sistema em todo território nacional, a criação de conteúdo interativo vem crescendo
gradativamente pela utilização em diversas emissoras brasileiras da TV aberta. O objetivo
deste trabalho é apresentar de uma maneira simples e didática a criação de um aplicativo de
TV digital baseado na linguagem Ginga-NCL. Espera-se que um desenvolvedor iniciante ou
interessado em contato com este guia tenha facilidade para compreender e criar seus
próprios conteúdos para TV digital. Este artigo visa contribuir com o aumento de
desenvolvedores de aplicativos interativos, facilitando a compreensão sobre o conteúdo
interativo e ampliando o estudo sobre aplicativos para TV.
Palavras-chave: TV Digital Interativa, Ginga-NCL, Programação de Software para TV
1.
INTRODUÇÃO
O Sistema Brasileiro de TV Digital (SBTVD), criado em função do decreto nº 5.820
no ano de 2006, estabeleceu as diretrizes para a migração do sistema analógico para o novo
sistema digital da televisão aberta terrestre. Em 2015, a transmissão do sinal digital já é uma
realidade, segundo o Ministério das Comunicações (MINISTÉRIO DAS COMUNICAÇÕES,
2014), em 2018 haverá a interrupção total das transmissões do sinal analógico.
Além da melhoria da qualidade de áudio e vídeo, o SBTVD permite a interatividade
através de aplicativos disponibilizados pela emissora juntamente com a programação. Isso
permite que novas oportunidades de negócio sejam exploradas, tanto no âmbito de
entretenimento, educação ou comercial, como para fins de utilidade pública.
O objetivo deste artigo é propor uma estratégia para o desenvolvimento de software
aplicativo em linguagem NCL (Nested Context Language) que são executados no middleware
Ginga – responsável pela apresentação dos programas interativos no SBTVD.
Diferentemente das linguagens de programação imperativas como as orientadas a
objetos ou procedurais, a linguagem NCL é declarativa e provê suporte para a especificação
de objetos de mídias com sincronização espaço-temporal.
O ambiente de desenvolvimento de aplicações interativas para a TV digital também é
diferenciado uma vez que as aplicações em teste devem ser executadas no Ginga – em
máquina virtual ou e um programa equivalente para Windows ou outro sistema operacional.
2.
METODOLOGIA
Nesta seção será apresentada a metodologia abordada para o desenvolvimento de um
software aplicativo baseado em Ginga-NCL, destacando os componentes principais de um
documento NCL.
Para o desenvolvimento de um software aplicativo baseado em Ginga-NCL em um
computador Windows, foi utilizada a ferramenta SciTe Text Editor. Esta é uma ferramenta
open source muito útil para construir e executar programas facilmente (SCITE TEXT
EDITOR, 2015). Ela não é a única ferramenta disponível para este fim, podem ser utilizadas
outras, como o Notepad++.
O software aplicativo pode ser testado em qualquer software com suporte a aplicativos
em linguagem Ginga-NCL que emule a TV Digital no computador. Existem alguns softwares
gratuitos, como por exemplo o GingaForWindows (GINGA NCL, 2015). Há também o
software proprietário Astrobox, que possui licença gratuita para fins de pesquisa.
A ferramenta AstroBox é proprietária, desenvolvida pela empresa TOTVS
(ASTRODEVNET, 2015). Esta ferramenta desempenha um papel fundamental para emular,
executar e testar aplicativos Ginga-NCL em um computador. Ela é executada em ambiente
Linux por meio de uma máquina virtual. Neste trabalho optou-se por utilizar o software
Astrobox, em virtude da emulação da TV Digital no computador ser mais precisa com esta
ferramenta.
A Figura 1 a seguir exibe em contexto geral como funciona o teste de um aplicativo
em Ginga-NCL em um computador. O código é escrito em linguagem Ginga-NCL no
Windows, em algum editor de texto XML. Este código é então transferido para a máquina
virtual, por algum software de transferência de arquivos. Em Seguida, na máquina virtual,
executa-se o software Astrobox e o código em Ginga-NCL. O software aplicativo será exibido
na tela do computador e a navegação se dará pelo teclado.
Figura 1 – Processo de emulação da TV Digital no computador.
3. SOFTWARE
Esta seção abordará uma breve explicação e estratégias das etapas do desenvolvimento
de um software aplicativo em Ginga-NCL em um contexto geral.
3.1 Desenvolvimento de um software aplicativo em Ginga-NCL
Um software aplicativo em Ginga-NCL é composto de um documento principal
chamado “main”. Neste documento são definidas as características gerais de funcionamento
do aplicativo. Este documento é composto por um cabeçalho, que identifica o documento.
Três outros documentos externos em NCL são importados ao documento “main”, que
definem características mais específicas do aplicativo. Estes três outros documentos são:
Regiões, Descritores e Conectores. A Figura 2 a seguir exibe a estrutura básica de um
documento em NCL.
Figura 2 – Estrutura básica do documento principal em NCL
Etapas de criação do documento em Ginga-NCL
Para escrever o documento “main” siga as etapas enumeradas a seguir:
1- Abra o SciTE Text Editor. A primeira etapa é escrever o cabeçalho do arquivo do
arquivo, composto geralmente por duas linhas. A primeira identifica a versão do documento e
a segunda é uma referência ao tipo de documento NCL. Na Figura 3 a seguir, o tipo de
documento é “main”. Adicionalmente, pode-se adicionar comentários sobre a criação do
documento utilizando a sintaxe <! -- comentários -->.
Figura 3 – Cabeçalho do arquivo
2- Escreva o cabeçalho do documento. O cabeçalho é composto de três partes: regiões,
descritores e conectores. Estas três partes serão escritas em documentos externos diferentes e
em seguida importadas em seguida ao documento “main”. Além de organizar melhor o código
principal, minimiza possíveis erros e conflitos que podem acontecer no momento do teste do
aplicativo.
O documento regiões especifica uma área na tela, onde será exibida uma determinada
mídia ou contexto (CARVALHO et al., 2009).
3- Escreva o documento regiões, abrindo concomitamente ao documento “main” um
novo documento no SciTE Text Editor. Inicie escrevendo o cabeçalho do arquivo, da mesma
maneira que fizemos para o documento principal. Na segunda linha identifique o tipo de
documento, neste caso são “regiões”. A Figura 4 a seguir ilustra um exemplo de duas regiões
criadas. As regiões criadas estarão compreendidas dentro da base de regiões, identificada pelo
elemento <regionBase>. Para exemplificar, criamos a região de fundo, ou seja, a área em que
a programação da emissora estará sendo exibida e a região da área utilizada pelo aplicativo.
Toda região possui um identificador único representado pelo atributo id (CARVALHO, et al.,
2009). Em cada região é possível configurar os parâmetros de largura, altura e zIndex, que
corresponde a qual camada estará sendo exibido determinada região, mais externa ou mais
interna. Deve-se criar e configurar uma região para cada botão ou mídia que o aplicativo
contiver.
Figura 4 – Estrutura do documento Regiões
Após escrever e configurar os parâmetros de todas as regiões do aplicativo, salve o
arquivo como regioes.ncl.
4- Escreva o documento descritores. Os descritores definem como os elementos serão
apresentados na tela [apostila]. Para isso, um descritor deve indicar a região à qual está
relacionado e definir as especificidades de sua apresentação. Um descritor é definido pela
sintaxe <descriptorBase> . Dentro desta sintaxe são definidos os atributos, que são as
propriedades dos elementos de mídia. Os atributos de mídia que podem ser utilizados podem
ser encontrados em (NCL HANDBOOK, 2015). Neste exemplo, o atributo utilizado é o id,
que identifica unicamente um elemento dentro de um documento, ou seja, para cada região
criada ela é identificada como única dentro do código.
5- Abra um novo documento no SciTE Text Editor e inicie escrevendo o cabeçalho do
arquivo, da mesma maneira que fizemos para o documento principal. Na segunda linha
identifique o documento como “descritores”. Em seguida vamos importar a região que
criamos
anteriormente utilizando
a sintaxe <importBase alias
=
“reg”
documentURI=”regioes.ncl” />. Em seguida escrevemos a base de descritores e a qual região
ele pertence, conforme ilustra a Figura 5 abaixo. Fazemos isso para todas as regiões dos
elementos do aplicativo, que foram criados no documento regiões. Após escrever e configurar
os parâmetros de todas os descritores do aplicativo, salve o arquivo como descritores.ncl.
Figura 5 – Criação do documento descritores
6- Crie documento “conectores”. Os conectores definem relações genéricas que serão
utilizadas pelos elementos de um documento NCL (CARVALHO et al., 2009). Eles definem
como os elos são ativados e o que eles disparam. Através de conectores, é possível fazer com
que a exibição de uma mídia comece simultaneamente a outra, bem como termine
simultaneamente a outra e diversas outras ações [http://gingarn.wikidot.com/tutorialncl#toc2].
Um conector é definido numa base de conectores, utilizando o elemento
<connectorBase> e em seguida o elemento <causalConnector> (NCL HANDBOOK, 2015).
Este elemento define uma relação de causa e efeito. A Figura 6 a seguir ilustra um exemplo de
um conector criado. A condição é dada ao pelo papel “onBegin”, indicando que a condição
espera pelo início da apresentação de um elemento, enquanto a ação é dada pelo papel
“Setar”, indicando que a apresentação de um elemento será iniciada. Para configurar todos os
tipos de conectores consulte o documento (NCL HANDBOOK, 2015). Após escrever e
configurar os parâmetros de todas os conectores do aplicativo, salve o arquivo como
conectores.ncl.
Figura 6 – Estrutura básica de um documento Conectores.
Estes três documentos externos criados serão importado ao documento principal
“main”, conforme ilustra a Figura 7 abaixo:
Figura 7 – Documentos externos: regiões, descritores e conectores importados ao documento
main
7- Escreva o corpo do documento NCL. O corpo do documento NCL é responsável
pela definição dos elementos e a sincronização entre eles e pela definição de elos e nós. Um
elo é utilizado para identificar os elementos participantes de uma relação [apostial].
No exemplo da Figura 8 abaixo, o corpo inicia-se com a criação de uma porta de
interatividade <port id="portaInteratividade" component="interatividade" />, ela dará início a
interatividade do aplicativo quando este for executado exibindo na tela o ícone de
interatividade . Na sequência escrevemos os contextos de mídia. No exemplo dado, as mídias
iniciadas são o botão de interatividade e a programação da emissora como fundo.
Em elos, definimos a ação dos botões do controle remoto, como por exemplo, o botão
vermelho do controle ou a tecla F1 seleciona o ícone de interatividade para acessar a
aplicação. Um elo é definido pelo elemento <link>. Este elemento define a relação sendo
utilizada através do seu atributo xconnector. O elo do exemplo, está relacionado as ações que
irão acontecer ao selecionar o botão vermelho. A sintaxe <bind> cria ligação entre os
elementos e os papéis [apostila]. No exemplo, utilizamos o atributo <bind role> que identifica
o papel da ação, ou seja, o que acontecerá ao selecionarmos a tecla vermelha do controle
remoto, que é acessar a aplicação. O atributo <bind component> identifica o elemento
participante da ação. No exemplo, ao selecionarmos o botão vermelho, o ícone da
interatividade para de ser executado e o menu da aplicação é executado e apresentado na tela,
juntamente com a programação da TV.
Figura 8 – Corpo do documento NCL
Quando o elo do exemplo anterior for ativado, ele buscará no código o comando que
exiba na tela o botão de interatividade e a apresentação do menu principal. Para isto, deve-se
criar o elemento <contexto id>. Um contexto é um nó de composição [apostila], ele inicia
todos os seus elementos filhos quando ele é iniciado. Quando o elo for executado, ele
procurará pelo contexto relacionado ao menu principal, quando este for solicitado. No
exemplo da Figura 9 abaixo, quando o contexto para o menu for solicitado, uma porta
identificará cada componente do menu. Um cabeçalho para o aplicativo foi criado como
exemplo de componente do menu. Uma porta identificará este cabeçalho e este será exibido
na tela por meio do elemento <media id="cabecalho" type="image/png"
src="imagens/cabecalho.png" descriptor="des#descritorCabecalho" />. Este elemento de
mídia é responsável por chamar a imagem do arquivo e apresenta-la na tela, quando este for
solicitado.
Figura 9 – Criação de um contexto para apresentação de componentes do menu
Para cada componente do menu principal é necessário criar uma porta, que identifica
unicamente este componente e uma mídia, que se relacione a ele por meio de uma imagem,
que será exibida na tela, no momento em que o menu for solicitado pelo usuário. As imagens
que serão desenhadas para cada componente do menu foram feitas em formato .png e salvas
em uma subpasta “imagens” na pasta do software aplicativo. Na Figura 10 seguir, segue um
exemplo de diretórios que foram criados e como eles devem estar arranjados para que a
aplicação possa ser executada em um emulador de TV Digital.
Figura 10 – Arranjo dos arquivos para execução do software aplicativo
O documento “main” é finalizado com a criação dos contextos, como no exemplo
anterior. Com estas dicas é possível construir um software aplicativo simples para execução
em um emulador de TV Digital no computador Windows ou Linux.
4. RESULTADOS E DISCUSSÃO
Nesta seção apresentaremos o software aplicativo desenvolvido em Ginga-NCL sendo
executado na ferramenta Astrobox.
A seguir a Figura 11 exibe um software aplicativo desenvolvido utilizando estas
estratégias. O software aplicativo com objetivo instrutivo chamado “Primeiros Socorros”, foi
executado no software Astrobox. A Figura 11 a seguir é uma imagem feita do software
Astrobox executando o software aplicativo.
Figura 11 – Software aplicativo sendo executado no software Astrobox
Como exemplo de apresentação do software, escolheu-se uma imagem de um
programa da TV Digital aberta para inserção dos elementos do aplicativo. A Figura 12-a a
seguir mostra o ícone de interatividade iniciado na tela, o usuário aciona o botão vermelho do
controle remoto. A Figura 12-b demonstra como o aplicativo será exibido na tela da TV. O
menu é exibido na tela e o usuário pode navegar por entre os botões disponíveis e usufruir do
conteúdo.
a)
b)
Figura 12 – Exemplo da aplicação rodando na TV Digital
5. CONSIDERAÇÕES FINAIS
Este artigo apresentou de maneira didática os procedimentos para a criação de um
software aplicativo para plataforma Ginga-NCL. Mesmo que de uma maneira simples, este
trabalho serve como base e motivação para que outros trabalhos possam ser desenvolvidos.
Demonstrou-se que há pouca dificuldade em programar em Ginga-NCL, devido as linhas de
código serem escritas no formato XML com o uso de comandos tipo “tags”. Há uma
infinidade de possibilidades de criação de softwares aplicativos em Ginga-NCL, com menus,
botões e mídias diferentes que podem ser explorados pelo desenvolvedor, para aplicativos de
TV Digital aberta. Como trabalho futuro, planeja-se desenvolver aplicativos para a linguagem
Lua que podem ser chamados de dentro do Ginga-NCL e possuem maiores possibilidades e
liberdade quanto a programação voltada para a interatividade com o usuário.
Agradecimentos
Os autores agradecem ao Sr. Fábio Cardoso e ao Sr. Rafael Pedroso, da TV-UNESP,
Bauru. Este trabalho foi financiado pelo CNPq , Projeto Global-ITV, Processo: 490088/20139.
6. REFERÊNCIAS BIBLIOGRÁFICAS
ASTRODEVNET. Astrobox. Disponível em
DevNet/home.html> Acesso em: 20. Abril. 2015
<https://www.astrodevnet.com.br/Astro
CARVALHO, Rafael; SANTOS, Joel; DAMASCENO, Jean. SILVA, Julia; SAADE, Débora.
Introdução às linguagens NCL e Lua: Desenvolvendo aplicações Interativas para TV Digital.
Anais: Semana das Engenharias 2009.Rio de Janeiro: UFF, 2009.
GINGA NCL. Ginga4Windows.
Disponível
en/ferramentas > Acesso em 20.Abril.2015
em
<
http://www.gingancl.org.br/
MINISTÉRIO DAS COMUNICAÇÕES. Disponível em <http://www.brasil.gov.br/infra
estrutura/2014/12/desligamento-do-sinal--analogico-de-tv-sera-avisado-com-antecedencia>.
Acesso em 21 abr. 2015
NCL HANDBOOK. Descriptor. Disponível em <http://handbook.ncl.org.br/doku.php?
id=descriptor> Acesso em 20.Abril.2015
SCITE TEXT EDITOR. A free source code editor for Win32 and X. Disponível em
<http://www.scintilla.org/SciTE.html> Acesso em 20.Abril.2015
STRATEGY FOR DEVELOPMENT OF INTERACTIVE APPLICATION
SOFTWARE WITH GINGA-NCL FOR DIGITAL TV
Abstract: With the deployment of Digital TV system in Brazil nowadays it covers all national
territory. As part of this process, software applications that run on TV screen are being
transmitted by TV broadcasters. These applications include user interaction content, which
greatly attract attention from most of viewers. The goal of this paper is to present a simple
and didactic procedure to create a TV application based on Ginga-NCL platform. It is
expected that any beginner developer in contact with this guide will have more facility to
understand and create his/her own interactive application. This tutorial aims to expand
developers of interactive applications for terrestrial digital TV.
Key-words: Digital Interactive TV, Ginga-NCL, Software Programming for Digital TV
Download

- geiza Caruline Costa