Java Embarcado Desenvolvendo sua primeira aplicação com Java ME para Blu-ray – Parte 09

Por:
Carlos Fernando Gonçalves
Thiago Galbiatti Vespa
Cássio Alexandre Sousa

Aplicação BD-J

Vamos procurar realizar com esta primeira aplicação é implementar um pequeno exemplo onde se mostra uma imagem estática no formato PNG e um pequeno quadro pintado na tela com um texto “Primeira aplicação BD-J”. Desta forma, observaremos a implementação da interface Xlet e dos métodos. Após a codificação e compilação do pequeno aplicativo, acionaremos o palyer  ToTalMedia Theatre  pelo próprio SDK.

Observe o código a seguir:


Listagem 2. PrimeiraBDJ.java

 1  /*
 2  * Primeira aplicação BDJ
 3  */
 4  package primeirabdj;
 5
 6 import java.awt.BorderLayout;
 7 import java.awt.Color;
 8 import java.awt.Container;
 9 import java.awt.Font;
10 import java.awt.Graphics;
11 import java.awt.Image;
12 import java.awt.Toolkit;
13 import org.havi.ui.HScene;
14 import org.havi.ui.HSceneFactory;
15 import org.havi.ui.HStaticIcon;
16
17
18 public class PrimeiraBDJ implements javax.tv.xlet.Xlet {
19
20     private static Font font;
21     private HScene cena;
22     private Container gui;
23     private static final String message = "Primeira aplicação BD-J!";
24     private Image img;
25     private HStaticIcon iconeImg;
26
27     /**
28      * Construtor padrão
29      */
30     public PrimeiraBDJ() {
31     }
32
33     /**
34      * Inicialização
35      */
36     public void initXlet(javax.tv.xlet.XletContext context)
37             throws javax.tv.xlet.XletStateChangeException {
38
39         font = new Font(null, Font.PLAIN, 48);
40         img = Toolkit.getDefaultToolkit().getImage("imagem.png");
41
42
43         cena = HSceneFactory.getInstance().getDefaultHScene();
44         gui = new Container() {
45
46             public void paint(Graphics g) {
47                 g.setFont(font);
48                 g.setColor(new Color(51, 102, 255));
49                 g.fillRect((getWidth() / 2) - 300, (getHeight() / 2) - 100, 600, 80);
50                 g.setColor(new Color(245, 245, 245));
51                 int message_width = g.getFontMetrics().stringWidth(message);
52                 g.drawString(message, (getWidth() - message_width) / 2, 500);
53             }
54         };
55
56         gui.setSize(1920, 1080);  // BD screen size
57
58
59         cena.add(gui, BorderLayout.CENTER);
60         iconeImg = new HStaticIcon(img);
61         iconeImg.setSize(95, 145);
62         iconeImg.setLocation(cena.getWidth() / 2, cena.getHeight() / 2);
63         iconeImg.setVisible(true);
64         iconeImg.setBackgroundMode(HScene.IMAGE_STRETCH);
65         iconeImg.setBackground(Color.green);
66         cena.add(iconeImg);
67
68
69         cena.validate();
70
71
72     }
73
74     /**
75      * Executa Xlet
76      */
77     public void startXlet() throws javax.tv.xlet.XletStateChangeException {
78         gui.setVisible(true);
79         cena.setVisible(true);
80     }
81
82     /**
83      * Libera recursos
84      */
85     public void pauseXlet() {
86         gui.setVisible(false);
87     }
88
89     /**
90      * Destrói Xlet
91      */
92     public void destroyXlet(boolean unconditional)
93             throws javax.tv.xlet.XletStateChangeException {
94              cena.remove(gui);
95              cena = null;
96     }
97 }

Na listagem dois, observamos que a classe  PrimeiraBDJ implementa a interface  javax.tv.xlet.Xlet, o que implica, seguir o contrato e implementar os métodos initXlet(), startXlet()e  pauseXlet().

Nas linhas 21 e 22 definimos os objetos “cena” e “container” que serão codificados no método initXlet() que recebe o parâmetro o próprio contexto para construir na tela todos os objetos visíveis bem como também o tipo e tamanho de texto, local da imagem, elemento gráfico de um retângulo preenchido com a cor verde.

O resultado da execução deste pequeno programa no player BD-J é exibido na Figura 15 a seguir: 

pb_30_09_09_pic16.JPG
Figura 15 - Aplicação carregada no player BD-J

Conclusão

A plataforma Blu-Ray Java Disc, trás um novo campo para de desenvolvimento que estará presente e milhares de lares pelo mundo oferecendo uma oportunidade para os programadores que até então inexistente.

Perspectivas de criação de games on-line, aplicações educacionais, adição de interatividade e interação com usuário não só do player podem oferecer um campo fértil para ideias de novas aplicações e oportunidades de grandes negócios, pois vale a pena lembrar que a indústria cinematográfica mundial movimenta bilhões de dólares ao ano e tem algo a mais em oferecer aos consumidores dos filmes produzidos pelos estúdios agregando algo superior e atual que é a possibilidade de mais um ponto de presença da internet próximo ao usuário alargamento tremendamente as fronteiras de possibilidades de negócios.

Links

Blu-ray Disc Application Development with Java ME, Part 1: Creating Your First Application
http://java.sun.com/developer/technicalArticles/javame/bluray/

Blu-ray Disc Application Development with Java ME, Part 2: Responding to User Input
http://java.sun.com/developer/technicalArticles/javame/bluray/part2/

Producing Blu-Ray Disc Java Software Titles for Hollywood
http://developers.sun.com/learning/javaoneonline/2007/pdf/TS-0887.pdf

Blu-ray Disc http://en.wikipedia.org/wiki/Blu-ray_Disc