aplicações para digital com ginga-j53 \ tv digital_ construindo uma aplicação passo a passo para...

7
53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre a TV Di- gital, como, por exemplo, principais diferenças entre a TV analógi- - bientes de desenvolvimento para TV Digital, emuladores e APIs que foram utilizadas para o desenvolvimento da aplicação. Depois de apresentar todos esses conceitos, é mostrado como desenvolver uma aplicação simples para a TV Digital. C - - - - - - - Aplicações para TV Digital com Ginga-J do ambiente à execução Agnaldo Soares Imperiano ([email protected]) é formado em Ciência da Computação pela Universidade Nove de Julho, trabalha com desenvolvimento de aplicativos Web utilizan- Microsoft Visual Fox Pro 9. Possui conhecimentos nas linguagens: C e Visual Basic 6. Claudio Cesar C. Silva ([email protected]) é formado em Ciência da Computação pela Universidade Nove de Julho, desenvolvedor Java, vb6, Mysql e TSO.

Upload: others

Post on 28-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aplicações para Digital com Ginga-J53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre

53 \

tv digital_

Construindo uma aplicação passo a passo para TV Digital com Ginga-J

O artigo primeiramente apresenta alguns conceitos sobre a TV Di-gital, como, por exemplo, principais diferenças entre a TV analógi- !"#"!"$%"&'(')!*+"!"!,-.')#).,!"/#".0"0'//*#1!,#2"3,'4 '3!'5"!0-bientes de desenvolvimento para TV Digital, emuladores e APIs que foram utilizadas para o desenvolvimento da aplicação. Depois de apresentar todos esses conceitos, é mostrado como desenvolver uma aplicação simples para a TV Digital.

C !"#"$ %#"&'#"(#") !*$+)#,- "!*+.#/" .&)$ 0 1+#/"&/.- " /*'1+$( 2" (&$.'&" &0#/" &/.3" #" 45" 6+1+.#0" 7*&"

8' 8 ')+ $#" *!" 9+$:$+. ;" !*$( " (&" +$.&'#.+%+(#(&2"#$+!#,- " &" (+%&'/- <" = !" &//#" +$.&'#,- 2" %+'- " +$>-

!&' /"?&$&@A)+ /"&"/&'%+, /"8#'#"#"8 8*0#,- "7*&"$&/-.&")#/ "8#//#"(&".&0&/8&).#( '"#"*/*3'+ 2"8 +/"+$.&'#1&"(+'&.#!&$.&") !"#"8' 1'#!#,- "#8'&/&$.#(#"$#"45"&"&/.&/" 8' 1'#!#/" 8 (&'- " /&'" #1'&1#( /" #" /&'%+, /" (&"/#>(&2" &(*)#,- 2" +$@ '!#,- 2" &$.'&.&$+!&$. /2" B 1 /2"&$.'&" *.' /<

C" 8'&/&$.&" #'.+1 " .&!" ) ! " ?B&.+% " #8'&/&$.#'"#"$ %#" .&)$ 0 1+#"7*&"&/.3" /&$( "&D80 '#(#"$ "E'#/+0"&"$ "!*$( "?&!") ! "#" +!8 '.F$)+#"7*&" /&" .&!"&!"(&/&$% 0%&'"#80+)#,G&/"8#'#"#"45"6+1+.#0<"C@&'&)&'" +$-

@ '!#,G&/" '&@&'&$.&/" H/" @&''#!&$.#/" $&)&//3'+#/" 8#'#"

" (&/&$% 0%+!&$. " (&" *!#" #80+)#,- " /+!80&/" 8#'#"45"6+1+.#0" ?#/&#( "$ "I+/.&!#"E'#/+0&+' "(&"45"6+1+-.#0" JIE456K2" (+/)*.+$( " &" #8'&/&$.#$( " #/" +$.&'@#)&/2"!L. ( /" &" ?+?0+ .&)#/" ( " M#%#4%2" $&)&//3'+#/" 8#'#" "(&/&$% 0%+!&$. "(#"#80+)#,- 2".- "7*#$. "#"/*#"+!80&-

!&$.#,- " $ " #!?+&$.&" N0&.5+&O2" 8#'#" " (&%+( " .&/.&"(&"*/#?+0+(#(&"&") !8#.+?+0+(#(&"(#".&)$ 0 1+#"6+1+.#0") !"#" 80#.#@ '!#" M#%#4%<"C" .'#?#0P " .#!?L!"(+/)*.&"/ ?'&"#/".&)$ 0 1+#/"Q+$1#RM"&") ! " "/+$#0"(+1+.#0"8 (&"!*(#'" "! ( " (&" .'#$/!+.+'" +$@ '!#,G&/" &" +$.&'#,- "&$.'&"&!+// '#/"D".&0&/8&).#( '"%+#") $.' 0&"'&! . "&" "!#+/"+!8 '.#$.&2".*( "(&"1'#,#"&"# "#0)#$)&"( "*/*-

3'+ 2"8 (&$( "#//+!"#)&//#'"+$@ '!#,G&/"?#$)3'+#/2"@#-

S&'") !8'#/2"+$.&'#1+'") !"#"8' 1'#!#,- "&D+?+(#"&"#.L"!&/! "#)&//#'"#"+$.&'$&.<

Aplicações para TV Digital com Ginga-Jdo ambiente à execução

Agnaldo Soares Imperiano ([email protected])

é formado em Ciência da Computação pela Universidade Nove de Julho, trabalha com desenvolvimento de aplicativos Web utilizan-/6"!5"*'4(.!(#45"7!8!2"9:92"7!8!; ,'3)2"<=!>2"7?.#,@"#"A@;?BC"$#0"#>3#,'D4 '!"3,6E55'64!*"#0"*'4(.!(#45" 606";?B"FGGH"#"FGGI2"

Microsoft Visual Fox Pro 9. Possui conhecimentos nas linguagens: C e Visual Basic 6.

Claudio Cesar C. Silva ([email protected])

é formado em Ciência da Computação pela Universidade Nove de Julho, desenvolvedor Java, vb6, Mysql e TSO.

Page 2: Aplicações para Digital com Ginga-J53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre

/ 54

Conceitos de TV DigitalT"45"6+1+.#0" .'#$/@ '!#" )#(#"!+$>/)*0 " &0&!&$-

. "(#" )&$#"&"( " / !"&!"*!"$>!&' "?+$3'+ " @ '!#( "/ !&$.&"8 '"S&' /"JUK"&"*$/"JVKW"L"#"!&/!#"0+$1*#1&!".&)$ 0X1+)#"( /") !8*.#( '&/<"Y" "7*&"&0#".'#S"(&"(+@&-

'&$)+#0"8#'#" "*/*3'+ ZC"8'+!&+' " 1'#$(&" +!8#). " L" #" #0.#" (&:$+,- " &!"

+!#1&$/2"3*(+ "&"%A(& " *"[645"J[+1P"6&:$+.+ $"4&0&-

%+/+ $"\"4&0&%+/- "(&"T0.#"6&:$+,- K"&!"+$10]/<"C".&0&/-8&).#( '"%#+"/&$.+'"#"(+@&'&$,#"8 '7*&"#/"(+/. ',G&/"(#"45"#$#0X1+)#"(&/#8#'&)&'- 2" *"/&B#2".&'&! /"*!#"+!#-

1&!"0+!8#"&"/ !"(&"#0.#"7*#0+(#(&<"T":1*'#"V"! /.'#"#"7*#$.+(#(&"(&"&7*+8#!&$. /"7*&"B3"8 //*&!"#)&// "#"45"6+1+.#02" ) ! 2"8 '"&D&!80 ^"#8#'&0P /" )&0*0#'&/2"$ .&? _/2"#*. !X%&+/") !"'&)&8. '"&"#"8'X8'+#"45"6+-1+.#0<

T".&0&%+/- "(+1+.#02"#0L!"(&" @&'&)&'"*!#"!&0P '#"$#"7*#0+(#(&"(&"%A(& "&"3*(+ 2" .#!?L!"8&'!+.&"#" +$-

.&'#.+%+(#(&") !" ".&0&/8&).#( '<"Y//#"+$.&'#.+%+(#(&"L" ?.+(#"#.'#%L/"(&"#80+)#.+% /")'+#( /") !"/&*") $.&>( ".'#$/!+.+( "8&0#"4&0&%+/- "6+1+.#0" `$.&'#.+%#<"a!"#!-

?+&$.&"(&".&0&%+/- "L"?&!"(+@&'&$.&"(&"*!"#!?+&$.&"(&") !8*.#( '<"T"8'+$)+8#0"(+@&'&$,#"&$.'&" /"( +/"L"7*&"#".&0&%+/- "8 //*+" '&)*'/ /"(&"!&!X'+#"&"8' )&//#!&$-

. "!&$ '&/"7*&" ") !8*.#( '<"T":1*'#"b"! /.'#"#01*-

!#/"(+@&'&$,#/"(#"45"#$#0X1+)#"8#'#"#"45"(+1+.#02") ! "!&0P '#"$#"7*#0+(#(&"(&"/ !2"+!#1&!"&"#80+)#,G&/" *"8' 1'#!#/2"7*&"%]!"8 '"/+$#0"(+1+.#0"&"(&//#"@ '!#"8' -

8 ')+ $#!"# "*/*3'+ "#"8 //+?+0+(#(&"(&"+$.&'#1+'") !"#"8' 1'#!#,- <

Receptor de TV Digital interativa (Set-top-Box)c#'#" 7*&" *!" /+/.&!#" (&" 45" 6+1+.#0" +$.&'#.+%#"

J456+K"8 //#"@*$)+ $#'"L"$&)&//3'+ "*!#"45") !"#)&/-/ "# "/+$#0"(+1+.#02"*!") $%&'/ '"(&$ !+$#( "I&.R. 8"E D"J)#/ "#"45"B3"$- ".&$P#"*!"&!?*.+( K2"*!#"#$.&$#"a[d"&"*!#"!37*+$#"%+'.*#0"M#%#"+$/.#0#(#"$ "/+/.&!#"(#"45" *") $%&'/ '<"T":1*'#"e"! /.'#"#/")#!#(#/"&D+/-.&$.&/"&!"*!") $%&'/ '"(&"45"6+1+.#0"+$.&'#.+%#"JI&.-R. 8"E DK<

T" )#!#(#" (&" .'#$/!+//- " L" '&/8 $/3%&0" 8&0#" (&-

:$+,- " ( " 8#('- " #// )+#( " # " &$%+ " (#" +$@ '!#,- "J3*(+ 2"%A(& "&"(#( /K"8&0 "#'<"T")#!#(#"(&".'#$/8 '-.&"L" '&/8 $/3%&0"8&0#" '1#$+S#,- "(&//#/" +$@ '!#,G&/"#$.&/"( "&$%+ <"T/")#!#(#/"(&"3*(+ "&"%A(& "(&:$&!" ".+8 "(&") !8'&//- "*.+0+S#(#"8#'#"!#D+!+S#'" "&/8#, "&D+/.&$.&"(&"! ( "#"&$%+#'"*!#"!#+ '"7*#$.+(#(&"(&"+$@ '!#,G&/" $ " &/8#, " (&/.+$#( " 8#'#" " f*D <" T" )#-

!#(#"(&"!+((0&O#'&"L"'&/8 $/3%&0"8&0#" +$.&'8'&.#,- "(#/"#80+)#,G&/"&"(#( /"'&)&?+( /"8&0 "'&)&8. '"( "/+$#0"(+1+.#0<"T")#!#(#"(&"#80+)#,G&/"L"(&:$+(#"8&0 /"8' 1'#-

!#/"7*&".'#S&!"#"8 //+?+0+(#(&"(&"+$.&'#,- "8 '"8#'.&"( "*/*3'+ <

Arquitetura GingaQ+$1#" L" " $ !&" 7*&" @ +" (#( " 8#'#" "!+((0&O#'&"

( "I+/.&!#"E'#/+0&+' "(&"45"6+1+.#0"JIE456K<"g#":1*'#"h"8 (&! /" ?/&'%#'"#"#'7*+.&.*'#"( "Q+$1#2"7*&"L"*!"!+((0&O#'&" *")#!#(#"(&"/ @.O#'&2"8 /+)+ $#(#"&$.'&" ")X(+1 "(#/"#80+)#,G&/"&"#"+$@'#&/.'*.*'#"(&"&D&)*,- "J80#.#@ '!#"(&"P#'(O#'&"&"/+/.&!#" 8&'#)+ $#0K<"

Aplicativos para TV Digitalc#'#".&/.#'"#"#80+)#,- "(&/&$% 0%+(#"8#'#"#"45"6+-

1+.#0"/&'3"*.+0+S#( "*!"&!*0#( '"7*&"@#S" "8#8&0"(&"*!"'&)&8. '" 7*&" .'#$/@ '!#" #" ) (+:)#,- " &!" 8' 1'#!#/"+$.&'#.+% /" 7*&" /- " %+/*#0+S#( /" $#" 45" 6+1+.#0<" c#'#"&D&)*.#'" #" #80+)#,- " /&'3" *.+0+S#( " " &!*0#( '" N0&-

.5+&O"7*&"/+!*0#"*!"#!?+&$.&"(&"45"6+1+.#0

Conceitos de XletT"N0&."L"*!#"#80+)#,- "(&/&$% 0%+(#"8#'#"8' 8 '-

)+ $#'"+$.&'#.+%+(#(&"8#'#"#"45"6+1+.#0<"=#(#"N0&.".&!"/&*/"8'X8'+ /"'&)*'/ /"7*&"$- "+$.&'@&'&!"$ "@*$)+ $#-

!&$. "(&" *.' /"N0&./<"C"!+((0&O#'&"+(&$.+:)#" "8 $. "(&"&$.'#(#"(#"#80+)#,- "J)0#//&"7*&"+!80&!&$.#"#"+$.&'-@#)&"B#%#D<.%<D0&.<N0&.K"&"&D&)*.#"#"#80+)#,- "*.+0+S#$( "

Figura 1. Equipamentos com acesso a TV Digital.

Figura 2. Diferenças entre a TV Analógica e a TV Digital.

TV DIGITAL

» melhor som

» melhor imagem

» aplicações

Figura 3. Camadas de um receptor (Set-top Box).

APLICAÇÕES

MIDDLEWARE

ÁUDIO

VÍDEO

TRANSPORTE

TRANSMISSÃO

Page 3: Aplicações para Digital com Ginga-J53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre

55 \

#"!37*+$#"%+'.*#0"M#%#<"T"i+/.#1&!"V"#8'&/&$.#"#"+$.&'-@#)&"(&"*!#"N0&.2") !". ( /" /"/&*/"!L. ( /"8'+$)+8#+/"(&"@*$)+ $#!&$. <

Listagem 1. Interface de uma Xlet.

public interface Xlet() { //carrega a aplicação public void initXlet(XletContext context) throws XletStateChangeException; //começa a aplicação public void startXlet() throws XletStateChangeException; //pausa a aplicação public void pauseXlet(); !"#$%&#'#'#($%)#*+,

public void destroyXlet(boolean unconditional) throws XletStateChangeException;}

j*#$( " *!#" )0#//&" L" )#''&1#(#" $ " #8#'&0P 2" &0#"&$.'#"$ "&/.#( "9i #(&(;2"#8X/" +// "#"#80+)#,- "&/.#'3"8' $.#" 8#'#" /&'" &D&)*.#(#2" &$.'#$( " #//+!" $ " &/.#( "9I.#'.&(;<" j*#$( " " #80+)#.+% " &/.3" /&$( " &D&)*.#( 2"&0&"8 (&"/&'"8#*/#( "&$.'#$( "$ "&/.#( "J9c#*/&(;K2"#"#80+)#,- "8 (&"/&'":$#0+S#(#"&$.'#$( "$ "&/.#( "J96&/-.' k&(;K2" $(&"/&*")+)0 "(&"%+(#"L"&$)&''#( <"Y//&"8' -

)&// "L"/&!&0P#$.&"# /"8' )&// /"(&"#880&./"&"l`6`&./2"@ '$&)&$( " .#!?L!" !L. ( /" 8#'#" " 1&'&$)+#!&$. ") !80&. "( ")+)0 "(&"%+(#"(&"*!#"D0&.<"T":1*'#"m"#8'&-

/&$.#" ")+)0 "(&"%+(#"(&"*!#"N0&.<

XletViewC"N0&.5+&O"/&"(&/.#) *"&!"'&0#,- "# /" *.' /"&!*-

0#( '&/"8 '"8 //*+'"/&*")X(+1 "#?&'. "/ ?"#"0+)&$,#"Qci<"C*.' " @#. '" +!8 '.#$.&" L" 7*&" " N0&.5+&O" 8 //*+" *!#"+!80&!&$.#,- " (&" '&@&']$)+#" (#" Tc`" M#%#452" #0L!" (&" *.'#/"Tc`/2") ! "#"[ !&"T*(+ R5+(& "+$.&' 8&'#?+0+-.k2"J[T5+K2"6+1+.#0"T*(+ R5+(& "= *$)+0"J6T5`=K"7*&"/- "+!8 '.#$.&/"8#'#" "(&/&$% 0%+!&$. "(&"#80+)#,G&/"8#'#"45"6+1+.#0<

C*.'#"%#$.#1&!"L"7*&"8 '"/&'"8' 1'#!#( "&!"M#%#2" "N0&.5+&O"8 (&"/&'"&D&)*.#( "$#/"80#.#@ '!#/"n+$( -

O/" *"i+$*D2"?#/.#".&'" "M6o"+$/.#0#( "$ ") !8*.#( '<T":1*'#"p"! /.'#"#".&0#"+$+)+#0"( "N0&.5+&O"&!"/*#"

%&'/- "U<p<e<

Figura 6. Aparência do XletView.

Preparação para o desenvolvimentoc#'#" ) !&,#'" #" (&/&$% 0%&'" #80+)#,G&/" 8#'#" 45"

6+1+.#0" $- " ?#/.#" #8&$#/" &/) 0P&'" *!#" 0+$1*#1&!" (&"8' 1'#!#,- 2"&/) 0P&'"*!#"`6Y"&"B3"/#+'"8' 1'#!#$( W"&D+/.&!"#01*$/"#B*/.&/"&"#01*!#/") $:1*'#,G&/"7*&"8'&-

)+/#!"/&'"@&+.#/"8#'#"7*&"$- "P#B#"&'' /"(&") !8+0#,- "&q *"&D&)*,- <

Bibliotecas necessáriasc#'#".&'"#)&// "#"#01*!#/"@*$,G&/"&/8&)A:)#/"'&@&-

'&$.&/"H"#80+)#,- "/&'3"$&)&//3'+ ".&'"#01*!#/"?+?0+ .&-

)#/"J'&@&'&$)+#(#/"$ ")0#//"8#.P" $(&"&D80+)#'&! /"!#+/"#"@'&$.&K"(&/&$% 0%+(#/"&/8&)+#0!&$.&"8#'#"45"6+1+.#0<"T/" ?+?0+ .&)#/" $&)&//3'+#/" 8#'#" " (&/&$% 0%+!&$. " (&"*!#"/+!80&/"#80+)#,- "/- ^

» B#%#.%<B#'" » D0&.%+&O<B#'

Ambiente e desenvolvimentoc#'#"8' )&//#'" "(&/&$% 0%+!&$. "(&//#" #80+)#,- "

/&'3"*.+0+S#( "#"`6Y"g&.E&#$/"%&'/- "p<r<V<

Desenvolvimento da aplicação utilizando o NetBeans

C"g&.E&#$/"/&'3"*.+0+S#( "8#'#" "(&/&$% 0%+!&$. "

Figura 4. Composição do Middleware Ginga.

Figura 5. Ciclo de vida de um Xlet.

LOADED PAUSED STARTED

DESTROYED

NEW MEUXLET( ) INITXLET

PAUSEXLET

STARTXLET

DESTROYXLET

DESTR

OYXLE

T

DESTR

OYX

LET

DESTROYXLET

Page 4: Aplicações para Digital com Ginga-J53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre

/ 56

(#"#80+)#,- 2"L"$&0&"7*&". ( " ")X(+1 "/&'3"@&+. <"6&8 +/"(&")'+#'"#")0#//&"8'+$)+8#0"(&%&'- "/&'"+!8 '.#(#/"#/"?+-?0+ .&)#/" B#%#.%"&"D0&.%+&O2"7*&" /- "$&)&//3'+#/"8#'#" "(&/&$% 0%+!&$. "(#"#80+)#,- <"= ! "! /.'#"#":1*'#"s<

Figura 7. Bibliotecas adicionadas no projeto.

!"#$%&'"(!)!)*+,-./,0c#'#"&D&)*.#'"#"#80+)#,- "L"$&)&//3'+ ") $:1*'#'" "

&!*0#( '"N0&.5+&O2" +// " /&'3"! /.'#( " 8#// " #" 8#// 2"0 1 "#?#+D <

T8X/"#?'+'" "&!*0#( '"N0&.5+&OW")0+)#$( "$#"1*+#"T880+)#.+ $/"#8#'&)&'3"*!"!&$*" $(&"(&%&'3"/&'")0+)#-

( "$#" 8,- "l#$#1&"T880+)#.+ $/2") ! "! /.'#"#":1*'#"t<

Figura 8. Abrindo a janela de gerenciamento.

Y!" /&1*+(#" /&'3"! /.'#(#" #" .&0#" $(&" (&%&'3" /&'"#(+)+ $#(#" #" #80+)#,- " 7*&" @ +" )'+#(#" #$.&'+ '!&$.&2") ! "! /.'#"#":1*'#"r<

Figura 9. Tela para adicionar a aplicação.

j*#$( "#8#'&)&'" #" B#$&0#"(#":1*'#"r2" (&%&R/&" )0+-)#'" $#" 8#/.#" 96&@#*0." 1' *8;" &2" &!" /&1*+(#2" )0+)#'" $#" 8,- "9g&O"T880+)#.+ $;<"I&'3"&D+?+(#"#?#+D "(#"8#/.#"96&@#*0."1' *8;"*!#"$ %#"#80+)#,- "&"# "/&0&)+ $#'"&//#"$ %#" #80+)#,- " /&'- " #8'&/&$.#(#/" .']/" 8,G&/^"g#!&2"c#.P"&"N0&.2" $(&"(&%&'3"/&'") 0 )#( " "$ !&"(#"#80+)#-

,- 2" "0 )#0" $(&"&/.3" "#'7*+% "<B#'"&" "0 )#0" $(&"&/.3" "#'7*+% "<)0#//2"'&/8&).+%#!&$.&2") ! "! /.'#"#":1*'#"VU<

Figura 10. $#*!"/#" 64E(.,!JK6"/!"!3*' !JK6C

6&8 +/"(&"$ !&#'"#"#80+)#,- "(&%&R/&"+$(+)#'" "c#.P"J)#!+$P " $(&"&/.3" "#'7*+% "<)0#//K")0+)#$( "$ "? .- "7*&"&/.3"0 )#0+S#( "# "0#( "(#")#+D#"(&".&D. "9c#.P^;<"T"B#$&0#"9T880+)#.+ $u/"' .;"/&'3"#?&'.#2" $(&"(&%&'3"/&'"+$(+)#( "7*#0" "(+'&.X'+ " $(&" "#'7*+% "<)0#//"(#"#80+)#-

,- "&/.32") ! "! /.'#"#":1*'#"VV<

Figura 11. Selecionando o diretório onde está o arquivo .class.

T8X/" +$(+)#'" " )#!+$P " (&%&R/&" )0+)#'" $ " ? .- "9C_;<" T1 '#" /X" @#0.#" #8 $.#'" " #'7*+% " <)0#//2" #'7*+% "&/.&"7*&"L"1&'#( "7*#$( "/&") !8+0#"#"#80+)#,- <"6&%&-

R/&")0+)#'"$ "? .- "# "0#( "( ")#!8 "(&".&D. ";N0&.^;2"&!"/&1*+(#")0+)#'"&!")+!#"( "$ !&"( "#'7*+% "'&@&'&$.&"# "#'7*+% "<)0#//"&"(&8 +/")0+)#'"$ "? .- "9 _;2") ! "! /.'#"#":1*'#"Vb<

Page 5: Aplicações para Digital com Ginga-J53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre

57 \

Figura 12. Tela para selecionar o arquivo .class.

T1 '#"L"/X")0+)#'"$ "? .- "9IT5Y"v"=iCIY;"&"8' $-

. 2"#") $:1*'#,- "(#"#80+)#,- "B3"&/.3"@&+.#2") ! "! /-

.'#"#":1*'#"Ve<

Figura 13."L'4!*'M!4/6"!" 64E(.,!JK6C

c#'#"%&'"/&"(&*".*( ")&'. "L"/X")0+)#'"$ %#!&$.&"$#"#?#"9T880+)#.+ $/;2"/&"#8#'&)&'"#"#80+)#,- "L"8 '"7*&"#") $:1*'#,- " @ +" @&+.#" ) ''&.#!&$.&2" ) ! "! /.'#"#":-

1*'#"Vh<

Figura 14. Tela que mostra a aplicação criada.

T ")0+)#'"$ "$ !&"(#"#80+)#,- "7*&"@ +") $:1*'#(#"#$.&'+ '!&$.&"#"!&/!#"(&%&'3"/&'")#''&1#(#"&"&D+?+(#"$ "&!*0#( '"N0&.5+&O2") ! "! /.'#"#":1*'#"Vm<

Figura 15. Aplicação sendo executada.

Explicando o código da aplicaçãoT"#80+)#,- "8 //*+" .']/" 0#?&0/2"(&$.' "(&"*!" ?B&-

. "( ".+8 "/)&$&"J)&$#K"7*&".'#?#0P#") ! "/&"@ //&"*!") $.#+$&'"#O.2"7*&"8 '"/*#"%&S"/&'3")'+#( "$ ") $.&D. "D0&.<"T")0#//&"JT80+)#)# l*$( MK"+!80&!&$.#"#"+$.&'@#-

)&"N0&.<d '#!"(&)0#'#(#/")+$) "%#'+3%&+/<"T"%#'+3%&0") $.&D."

'&)&?&'3" /"8#'F!&.' /"$#"+$+)+#0+S#,- "( " ?B&. "D0&.2"*!" !&)#$+/! " 8#'#" '&)*8&'#'" #/" 8' 8'+&(#(&/2" ?&!") ! "*!#"@ '!#"(&"/+$#0+S#'"#/"!*(#$,#/"(&"&/.#( "+$-

.&'$ 2"#"%#'+3%&0")&$#"7*&"/&'3" ") $.#+$&'"(#"#80+)#,- "&".']/"%#'+3%&+/"( ".+8 "0#?&0<

T"#80+)#,- "8 //*+"*!") $/.'*. '2"8 'L!"$- "/&'3"$&)&//3'+ "#(+)+ $#'")X(+1 "#"&0&2"8 +/"#"#80+)#,- "(&-

/&$% 0%+(#"$&/.&"#'.+1 "L"?&!"/+!80&/<C"!L. ( "+$+.N0&."'&)&?&") ! "8#'F!&.' "*!" ?-

B&. "N0&.= $.&D.2" "!L. ( "+$+.N0&."L"/ ?'&/)'+. "(#"+$-

.&'@#)&"N0&.<C"!L. ( "/.#'.N0&."(#'3"+$A)+ "#"#80+)#,- "7*&"&/.3"

&!"8#*/#"#8X/"/&'")#''&1#(#"8&0 "!L. ( "+$+.N0&.2".#!-

?L!"L"$&/.&"!L. ( "7*&"/- ")'+#( /" /" ?B&. /"0#?&0T)+-!#2"0#?&0l&+ 2"0#?&0T?#+D "&")&$#2"&!"/&1*+(#"/- "#(+-)+ $#( /" /" ?B&. /"( ".+8 "0#?&0"$#")&$#"(#"#80+)#,- <

C" ?B&. "[I)&$&d#). 'k"@ '$&)&"*!#"+$.&'@#)&" 8#-

)#"&$.'&"7*#07*&'"#80+)#,- "J *"B#$&0#K"/+/.&!#"(&"1&/-.- "&"(#"#80+)#,- "M#%#2"&!"/+<

T ")'+#'" /" ?B&. /"0#?&0T)+!#2"0#?&0l&+ "&"0#?&0T-

?#+D 2"7*&"/- " ?B&. /"( ".+8 "[I.#.+)4&D."J.&D. "&/.3.+-) K"/- "(&:$+( /^"/&*"'X.*0 2".#!#$P 2"0 )#0+S#,- 2".+8 "(&"@ $.&2".#!#$P 2") '"(#"0&.'#2") '"(&"@*$( "&"#")'+#,- "(&"*!"1&'&$)+#( '"(&" 0#k *./"8#('- <"4 ( /"&/.&/" ?-

B&. /" /- " *.+0+S#( /" 8#'#" /" .']/" #.'+?*. /" 0#?&0T)+!#2"0#?&0l&+ "&"0#?&0T?#+D <""

T8X/")'+#'" /"#.'+?*. /2" /"!&/! /"(&%&'- "/&'"#(+-)+ $#( /"$#")&$#2"&!"/&1*+(#". '$3R0 /"%+/A%&+/<

C"!L. ( "8#*/&N0&.2") ! " "8'X8'+ "$ !&"(+S2"/&'-%&"8#'#"8#*/#'"#"D0&.2"8 'L!"$&//#"#80+)#,- "&//&"!L. -

( "$- "/&'3"+!80&!&$.#( <C" !L. ( " (&/.' kN0&." L" '&/8 $/3%&0" 8&0 " (&/)#'-

'&1#!&$. 2" 8' )&//#!&$. " &" 8 '" @ '$&)&'" &/8#, "8#'#"*!"$ % ")#''&1#!&$. " *"0 #(&'"(&"*!#"$ %#"D0&.2"8 +/") ! "@ +"(+. "#$.&'+ '!&$.&"/X"L"8 //A%&0")#''&1#'"*!#"

Page 6: Aplicações para Digital com Ginga-J53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre

/ 58

this.labelMeio.setFont(new Font( “Agency FB”, Font.BOLD,45)); this.labelMeio.setBounds(10, 200, 700, 200); this.labelMeio.setForeground(Color.WHITE); this.labelMeio.setBackground(Color.BLACK); // Label que será impressa abaixo this.labelAbaixo = new HStaticText( “Agnaldo Soares \n Claudio Cesar”); this.labelAbaixo.setFont(new Font( “Agency FB”, Font.BOLD,60)); this.labelAbaixo.setBounds(10, 370, 700, 200); this.labelAbaixo.setForeground(Color.BLACK); this.labelAbaixo.setBackground( Color.LIGHT_GRAY); //Adicionando os objetos a cena this.cena.add(this.labelAbaixo); this.cena.add(this.labelMeio); this.cena.add(this.labelAcima); } @Override public void pauseXlet() { } @Override public void startXlet() throws XletStateChangeException { this.cena.setVisible(true); }}

!!"#"$%&'"()*#$*+,#!,-#,.,'/0"+"#1*-2"%2,10,#,2#/2"#34#5/,#$*!!/"# !&1"%#+&6&0"%# ,#/2#'*+&7'"+*-# 8!,0#0*$# 9*.:;# $*-<2# ,!!"# "$%&'"()*# 1)*# $*!!/&# 1,1=/2"#&10,-"0&>&+"+,# '*2# *# 0,%,!$,'0"+*-;# $*&!# !,# 0-"0"# "$,-

1"!# +,# /2# 0,.0*# ,!0?0&'*# !&2/%"1+*# /2"# $-*$"6"1+";#/2#"1@1'&*#*/#"%6*#+*#6A1,-*B#C,!!,#'"!*#"#"$%&'"()*#$*!!/&#"$,1"!#/2#'"1"%#+,#0-"1!2&!!)*;#5/,#<#*#D"1"%#+,#E10,-"0&>&+"+,#5/,#>,2#+&-,0"2,10,#+*#$-*>,+*-#+,#!,->&(*!#&10,-"0&>*#8,2&!!*-"#+,#0,%,>&!)*:;#'*2*#2*!0-"#"#76/-"#FGB

H,#"#"$%&'"()*#$*!!/I!!,#&10,-"0&>&+"+,#*#0,%,!$,'-0"+*-# /0&%&J"-&"# *# !,/# '*10-*%,# -,2*0*# $"-"# !,%,'&*1"-#"%6/2"# *$()*# */# +&6&0"-# "%6/2# 0,.0*# +,$,1+,1+*# +*#0&$*# +"# "$%&'"()*# 8$-*6-"2"# +,# 34:# 5/,# ,!0&>,!!,# "!-!&!0&1+*B#C,!!,#'"!*;#"#&1K*-2"()*#!,-&"#-,0*-1"+"#$"-"#

!"#$%&'()!)'(&*+!),-*"+'./0)1)/'2')"')34)5('#*%6*(')6)"!)

7$"8!9:);$6)<!*)=$5%*>'8!)"')68*?@!)AB)8')(62*#&')C$"8!/)

D)CE(*!)86)FE)46(')6)G'2*8) '7=H%!

/para saber mais

.%,0#+,#'"+"#>,JBL#M&!0"6,2#N#"$-,!,10"#0*+*#*#'O+&6*#+"#"$%&'"()*#

5/,# K*&# +,!,1>*%>&+*;# &1'%/!&>,# '*2,10?-&*!# !*P-,# *!#$*10*!#2"&!#-,%,>"10,!#+*#'O+&6*B

Listagem 2. Código-fonte da aplicação.

package br.com.mundoj;

import java.awt.Color;import java.awt.Font;

import javax.tv.xlet.Xlet;import javax.tv.xlet.XletContext;import javax.tv.xlet.XletStateChangeException;

import org.havi.ui.*;

//Classe principal da Aplicação que implementa a // inteface Xletpublic class AplicacaoMundoJ implements Xlet { private XletContext contexto; private HStaticText labelAcima; private HStaticText labelMeio; private HStaticText labelAbaixo; private HScene cena; public AplicacaoMundoJ(){ } @Override public void destroyXlet(boolean arg0) throws XletStateChangeException { this.contexto.notifyDestroyed(); } @Override public void initXlet(XletContext contexto) throws XletStateChangeException { this.contexto = contexto; this.cena = HSceneFactory.getInstance(). getFullScreenScene(HScreen. getDefaultHScreen(). getDefaultHGraphicsDevice()); //Label que será impressa acima this.labelAcima = new HStaticText( “Revista MundoJ”); this.labelAcima.setFont(new Font( “Agency FB”, Font.BOLD,60)); this.labelAcima.setBounds(10, 10, 700, 200); this.labelAcima.setForeground(Color.YELLOW); this.labelAcima.setBackground( Color.DARK_GRAY); // Label que será impressa meio this.labelMeio = new HStaticText( “Meu Primeiro Xlet \n em \n TV DIGITAL”);

Page 7: Aplicações para Digital com Ginga-J53 \ tv digital_ Construindo uma aplicação passo a passo para TV Digital com Ginga-J O artigo primeiramente apresenta alguns conceitos sobre

59 \

/2"#,!0"()*#+,#34#8H,->&+*-#+,#Q,-"()*#+,#D*10,@+*:#5/,# 0-"1!2&0&-?# 8>&"#!"0<%&0,;# 0,--,!0-,#*/#'"P*:#*#!&1"%#+,#>I+,*;#$"-"#*!#-,',$0*-,!#+,#0,%,>&!)*#+&6&0"%#&10,-"-

0&>"B#R/-"10,#,!!,#2*2,10*;#*#0,%,!$,'0"+*-#,15/"10*#"!!&!0,#"*#$-*6-"2";#$*+,-?#,.,'/0"-#"#"$%&'"()*#8S%,0:#$"-"#2"1&K,!0"-#!/"#&10,-"()*#'*2#"#$-*6-"2"()*#,#$*-#&10,-2<+&*#+,#/2#'"1"%#+,# -,0*-1*# 8'*1,.)*# &10,-1,0:#$*+,-?#-,6&!0-"-#*#5/,#*#0,%,!$,'0"+*-#+&6&0*/#*/#!,%,-

'&*1*/#1*!#H,->&+*-,!#+,#L$%&'"(T,!#E10,-"0&>"!;#'*1K*--2,# &%/!0-"# *#+&"6-"2"#+,# K/1'&*1"2,10*#1"#76/-"# FU;#5/,#+,0"%="# "!# '"-"'0,-I!0&'"!#+,#/2#"2P&,10,# -,"%# +,#34#R&6&0"%#E10,-"0&>"B

!"#$%&'()*&#+,"($#L#34#R&6&0"%#$-*$*-'&*1"#&171&0"!#$*!!&P&%&+"+,!#+,#

1*>"!#,.$,-&A1'&"!;#5/,#$*+,2#!,-#+,!,1>*%>&+"!#"0-"-

><!# +"# $%"0"K*-2"# QECQLB# L# $-*$*!0"# +*# 0-"P"%=*# K*&#,.$%*-"-#*#'*1=,'&2,10*#1,!!"#1*>"#0,'1*%*6&";#+,!,1-

>*%>,1+*#/2"#"$%&'"()*#!&2$%,!#$"-"#34#R&6&0"%B#V#&10/&0*#,-"#+,!,1>*%>,-;#0,!0"-#,#"1"%&!"-#/2#"$%&-

'"0&>*# +,!,1>*%>&+*# ,2# W">"34B# L# "$%&'"()*# ,!'*%=&-+"#$"-"#*#,.$,-&2,10*# K*&#/2"#"$%&'"()*# !&2$%,!# '*2#&1!,-()*#+,# %"P,%!;# 0,.0*#,#'*-,!#+,# K/1+*#/0&%&J"1+*#*#,2/%"+*-#S%,04&,X#$"-"#!&2/%"()*B

D*1'%/I2*!#'*2#A.&0*#*#*PY,0&>*#+,!0,#"-0&6*;#/2"#

I)/G34).J&&=0KKLLLM8&2M!(+M5(

I)-*"+').)J&&=0KKLLLM+*"+'M!(+M5(

I)N%6&4*6L).)J&&=0KK#!$(>6<!(+6M"6&K=(!O6>&#KP%6&2*6L

I)/'2'34).)J&&=0KKLLLM!('>%6M>!7K&6>J"6&L!(QKO'2'K

O'2'76K&6>JKO'2'&2

I)/'2')G626%!=6(#).)J&&=0KKO'2'&2.8626%!=6(#M862MO'2'M"6&

I)-($=!)-*"+')-!*E#).)J&&=0KKLLLM+($=!+*"+'+!*'#M>!7M5(

I)R!($7)FS34G).)J&&=0KKLLLM<!($7#5&28M!(+M5(

I)T'2*8).)J&&=0KKLLLM%'2*8M$<=5M5(

I)126(768*')U6&L!(Q#).)J&&=0KKLLLM!26(768*'"6&L!(Q#M

>!7M5(

/referências

Figura 17. Diagrama de funcionamento da TV Digital com interação.

Figura 16. Diagrama de funcionamento da TV Digital sem interação.

>,J#5/,#K*&#$*!!I>,%#-,"%&J"-#*#+,!,1>*%>&2,10*#,#*!#0,!-0,!#+"#"$%&'"()*#/0&%&J"1+*#/2#,2/%"+*-#5/,#+,!,2$,-

1="#"#K/1()*#+,#/2#-,',$0*-#8H,0Z0*$Z9*.:B