SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Erisvaldo Gadelha Saraiva Júnior



Introdução a API de Baixo Nível

JavaME

                                  Contato: erisvaldojunior@gmail.com
Objetivo
                         Desenvolver aplicações para dispositivos móveis com interfaces
                         arrojadas, através do uso da API de Baixo Nível do JavaME.
Organize with Sections




                                                                     Imagens do Mobile Ticket
                                                                     Viewer, aplicação de
                                                                     Mobile Ticket
                                                                     desenvolvida pela Avaty!
                                                                     Tecnologia.
Roteiro de Aula


                                           Técnicas
  A API de     Indo para a               Avançadas e
 Baixo Nível     Prática                  Exemplos
                                          Adicionais




                  Introdução a API de Baixo Nível do JavaME
API de Baixo Nível



          Descrição das Classes e como usá-las
Estrutura de classes do MIDP




                               A API de baixo nível consiste,
                               basicamente, na classe Canvas e classes
                               auxiliares (como Graphics, Image, Font).

                               No MIDP 2.0 ou superior, sua classe
                               derivada, GameCanvas, bem como as
                               classes que compõem a Game API,
                               também são consideradas de baixo
                               nível.
Estrutura EXPANDIDA de classes do MIDP
O que é a classe Canvas?
                Canvas é uma classe abstrata que deve ser especializada para a
                confecção de uma tela em baixo nível.


                                                            As classes que herdam
                                                            de     Canvas    DEVEM
                                                            implementar o método
                                                            paint(), responsável por
Classe Canvas




                                                            desenhar a tela.



                                                            As classes que herdam
                                                            de Canvas PODEM
                                                            implementar o método
                                                            keyPressed(),
                                                            responsável        por
                                                            verificar    se   uma
                                                            determinada tecla foi
                                                            pressionada.
Como desenhar usando Canvas?
                O método paint() recebe como argumento uma instância de
                Graphics, com a qual é possível desenhar na tela.




                                                         Graphics     possui
Classe Canvas




                                                         diversos métodos
                                                         para desenhar na
                                                         tela, tais como:
                                                         drawImage(),
                                                         drawRect(),
                                                         fillRect(),
                                                         drawString(), etc.
E quanto aos diversos tamanhos de tela?
                A altura e a largura da tela podem ser obtidas pelos métodos
                getHeight() e getWidth(), respectivamente.



                                                             Todos os desenhos
                                                             devem         ser
Classe Canvas




                                                             posicionados de
                                                             acordo com as
                                                             dimensões da tela
                                                             (posições
                                                             relativas), nunca
                                                             com números fixos
                                                             (posições
                                                             absolutas).
Como capturar as teclas pressionadas?
                Qualquer tecla que o usuário pressionar pode ser tratada pelo
                método keyPressed(), que recebe um inteiro como argumento
                indicando o código da tecla pressionada.




                                                           PROBLEMA:       as
Classe Canvas




                                                           “Soft Keys” não
                                                           possuem
                                                           constantes
                                                           definidas      em
                                                           Canvas, ou seja, o
                                                           código das teclas
                                                           varia de aparelho
                                                           para aparelho.
Teclas em Canvas
A classe Canvas possui uma série de
constantes que referenciam os códigos das
teclas do aparelho.

Essas constantes devem ser usadas em
detrimento do inteiro correspondente porque
o seu valor pode variar de um aparelho para o
outro.
Indo para a Prática



   Construindo uma interface com a API de Baixo Nível
Primeiro exercício:


SPLASH
SCREEN
Código Splash Screen
               Âncoras especificam o
               posicionamento          da
               imagem relativo ao ponto
               (X, Y) no qual se deseja
               inserí-la na tela. Nesse
               caso, a imagem está sendo
               centralizada nesse ponto.
Segundo Exercício




Como construir um     menu elegante para o meu
jogo ou aplicativo?


                                   Sprites são a solução.
Sprite é uma classe da Game API do MIDP 2.0




    Sprites são criados a partir de imagens que possuem um ou mais frames.
          Os Sprites podem ser animados, rotacionados, espelhados, etc.
Crie uma nova instância
                                      da     classe   Sprite;

                                      Defina a posição do mesmo
                                      através      dos       métodos
                                      defineReferencePixel()       e
                                      setRefPixelPosition();
    Construtor da classe Sprite
                                      Desenhe o Sprite na tela,
                                      através do método paint();

                                      Você poderá alterar o frame
                                      do Sprite a qualquer momento
                                      através      dos      métodos
                                      nextFrame(), prevFrame() e
Como adicionar um Sprite no Canvas?   setFrame().
Vamos ao desafio!
                              Use Canvas para representar a tela, o
                              método drawString() para os textos e
                              represente o background e cada
                              botão como uma instância de Sprite.

                              Por fim, implemente o método
                              keyPressed() de forma a navegar pelo
Você é a capaz de construir   menu. Note que basta mudar o frame
o menu acima?                 da opção selecionada e definir o
                              frame dos demais como sendo o
                              inicial.
Técnicas Avançadas e
Exemplos Adicionais


Técnicas Avançadas para a criação de aplicações profissionais
DIFERENTES TELAS
» Os dispositivos móveis possuem telas com
 vários tamanhos e resoluções;

» A API de baixo nível do JavaME não possui
 suporte nativo a redimensionamento de
 imagens;

» É necessário realizar esse redimensionamento
 “na unha” ou, ainda, oferecer imagens de
 diferentes tamanhos e utilizar a mais
 adequada para a tela do aparelho.
Diferentes Telas: Solução Proposta

                           Cada imagem da aplicação pode estar
                           disponível em três tamanhos, para telas
                           pequenas, médias e grandes. Por
                           exemplo: 128x160 (Tela Pequena),
                           176x208 (Média) e 240x320 (Grande);

                           Ao iniciar a aplicação, obtém-se a altura
                           e a largura da tela e, a partir dessas,
                           carrega-se as imagens adequadas para
                           o tamanho de tela específico;

                           No caso do background, pode-se
                           redimensionar a imagem logo após
                           obter-se a altura e largura da tela do
                           aparelho, assegurando que o mesmo
                           irá preencher toda a tela.
Para garantir a portabilidade, faz-se necessário a adoção de uma das seguintes soluções
para tratar as diferenças dos códigos das SOFT KEYS entre os dispositivos:
1. Usar Commands caso não haja necessidade de formatação específica para os botões
    inferiores;
2. Detectar, em tempo de execução, o fabricante do aparelho e, assim, configurar os
    valores adequados;
3. Definir diretivas de pré-compilação de forma a gerar JARs específicos para cada família
    de aparelhos, cada qual com os valores corretos das Soft Keys (J2ME Polish faz esse
    trabalho).
?
    E quanto a fonte…
    Como posso mudar?



               BITMAP FONTS são a solução!
What’s Your Message?
OBRIGADO!

Mais conteúdo relacionado

Destaque

Lo Que Nos Dice El Gobierno
Lo Que Nos Dice El GobiernoLo Que Nos Dice El Gobierno
Lo Que Nos Dice El Gobiernojuannadie
 
Aprendizaje
AprendizajeAprendizaje
AprendizajeJuani
 
Taller de medios digitales - clase
Taller de medios digitales - claseTaller de medios digitales - clase
Taller de medios digitales - claseLorena Betta
 
Descubriendo texturas
Descubriendo texturasDescubriendo texturas
Descubriendo texturasgriselda
 
Trabajo practico de Tic _(por Nathalie K).
Trabajo practico de Tic _(por Nathalie K).Trabajo practico de Tic _(por Nathalie K).
Trabajo practico de Tic _(por Nathalie K).nklahr
 
Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1
Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1 Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1
Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1 Lala Deheinzelin
 
Vineet Resume with 5.9 years of Experience in Cisco Contact Center
Vineet Resume with 5.9 years of Experience in Cisco Contact CenterVineet Resume with 5.9 years of Experience in Cisco Contact Center
Vineet Resume with 5.9 years of Experience in Cisco Contact Centervineet pandey
 
A escola da era moderna entre a transmissao e a vigilancia
A escola da era moderna entre a transmissao e a vigilanciaA escola da era moderna entre a transmissao e a vigilancia
A escola da era moderna entre a transmissao e a vigilanciaUniversidad de Antioquia
 
degree cert Mech
degree cert Mechdegree cert Mech
degree cert MechVaishak E
 

Destaque (15)

Soy Maestra[1]
Soy Maestra[1]Soy Maestra[1]
Soy Maestra[1]
 
Lo Que Nos Dice El Gobierno
Lo Que Nos Dice El GobiernoLo Que Nos Dice El Gobierno
Lo Que Nos Dice El Gobierno
 
Certificados
CertificadosCertificados
Certificados
 
Descobreix kde 2014 15
Descobreix kde 2014 15Descobreix kde 2014 15
Descobreix kde 2014 15
 
curso de html
curso de htmlcurso de html
curso de html
 
Aprendizaje
AprendizajeAprendizaje
Aprendizaje
 
Taller de medios digitales - clase
Taller de medios digitales - claseTaller de medios digitales - clase
Taller de medios digitales - clase
 
Descubriendo texturas
Descubriendo texturasDescubriendo texturas
Descubriendo texturas
 
Digital MKT Certificate
Digital MKT CertificateDigital MKT Certificate
Digital MKT Certificate
 
Trabajo practico de Tic _(por Nathalie K).
Trabajo practico de Tic _(por Nathalie K).Trabajo practico de Tic _(por Nathalie K).
Trabajo practico de Tic _(por Nathalie K).
 
Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1
Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1 Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1
Prosperidade 4D: Criando Comunidades Criativas e Colaborativas - dia1
 
Vineet Resume with 5.9 years of Experience in Cisco Contact Center
Vineet Resume with 5.9 years of Experience in Cisco Contact CenterVineet Resume with 5.9 years of Experience in Cisco Contact Center
Vineet Resume with 5.9 years of Experience in Cisco Contact Center
 
A escola da era moderna entre a transmissao e a vigilancia
A escola da era moderna entre a transmissao e a vigilanciaA escola da era moderna entre a transmissao e a vigilancia
A escola da era moderna entre a transmissao e a vigilancia
 
degree cert Mech
degree cert Mechdegree cert Mech
degree cert Mech
 
Stanley Hotel
Stanley HotelStanley Hotel
Stanley Hotel
 

Mais de Erisvaldo Junior

Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Erisvaldo Junior
 
Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Erisvaldo Junior
 
Desenvolvimento de apps e games para android parte 8
Desenvolvimento de apps e games para android   parte 8Desenvolvimento de apps e games para android   parte 8
Desenvolvimento de apps e games para android parte 8Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 4
Desenvolvimento de Apps e Games para Android - Parte 4Desenvolvimento de Apps e Games para Android - Parte 4
Desenvolvimento de Apps e Games para Android - Parte 4Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Erisvaldo Junior
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Erisvaldo Junior
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management systemErisvaldo Junior
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementarErisvaldo Junior
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management systemErisvaldo Junior
 
Java me generic connection framework
Java me   generic connection frameworkJava me   generic connection framework
Java me generic connection frameworkErisvaldo Junior
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java meErisvaldo Junior
 

Mais de Erisvaldo Junior (20)

A Era da Mobilidade
A Era da MobilidadeA Era da Mobilidade
A Era da Mobilidade
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2
 
Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1Desenvolvimento de Apps e Games para iOS - Parte 1
Desenvolvimento de Apps e Games para iOS - Parte 1
 
Desenvolvimento de apps e games para android parte 8
Desenvolvimento de apps e games para android   parte 8Desenvolvimento de apps e games para android   parte 8
Desenvolvimento de apps e games para android parte 8
 
Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7Desenvolvimento de Apps e Games para Android - Parte 7
Desenvolvimento de Apps e Games para Android - Parte 7
 
Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6Desenvolvimento de Apps e Games para Android - Parte 6
Desenvolvimento de Apps e Games para Android - Parte 6
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
Desenvolvimento de Apps e Games para Android - Partes 6 e 7 (Preview)
 
Desenvolvimento de Apps e Games para Android - Parte 4
Desenvolvimento de Apps e Games para Android - Parte 4Desenvolvimento de Apps e Games para Android - Parte 4
Desenvolvimento de Apps e Games para Android - Parte 4
 
Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3Desenvolvimento de Apps e Games para Android - Parte 3
Desenvolvimento de Apps e Games para Android - Parte 3
 
Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2Desenvolvimento de Apps e Games para Android - Parte 2
Desenvolvimento de Apps e Games para Android - Parte 2
 
Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1Desenvolvimento de Apps e Games para Android - Parte 1
Desenvolvimento de Apps e Games para Android - Parte 1
 
Nokia SDK for Java
Nokia SDK for JavaNokia SDK for Java
Nokia SDK for Java
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management system
 
Java me material complementar
Java me   material complementarJava me   material complementar
Java me material complementar
 
Java me record management system
Java me   record management systemJava me   record management system
Java me record management system
 
Java me generic connection framework
Java me   generic connection frameworkJava me   generic connection framework
Java me generic connection framework
 
Introdução a game api do java me
Introdução a game api do java meIntrodução a game api do java me
Introdução a game api do java me
 
O futuro do Android
O futuro do AndroidO futuro do Android
O futuro do Android
 
Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 

Introdução API Baixo Nível JavaME

  • 1. Erisvaldo Gadelha Saraiva Júnior Introdução a API de Baixo Nível JavaME Contato: erisvaldojunior@gmail.com
  • 2. Objetivo Desenvolver aplicações para dispositivos móveis com interfaces arrojadas, através do uso da API de Baixo Nível do JavaME. Organize with Sections Imagens do Mobile Ticket Viewer, aplicação de Mobile Ticket desenvolvida pela Avaty! Tecnologia.
  • 3. Roteiro de Aula Técnicas A API de Indo para a Avançadas e Baixo Nível Prática Exemplos Adicionais Introdução a API de Baixo Nível do JavaME
  • 4. API de Baixo Nível Descrição das Classes e como usá-las
  • 5. Estrutura de classes do MIDP A API de baixo nível consiste, basicamente, na classe Canvas e classes auxiliares (como Graphics, Image, Font). No MIDP 2.0 ou superior, sua classe derivada, GameCanvas, bem como as classes que compõem a Game API, também são consideradas de baixo nível.
  • 6. Estrutura EXPANDIDA de classes do MIDP
  • 7. O que é a classe Canvas? Canvas é uma classe abstrata que deve ser especializada para a confecção de uma tela em baixo nível. As classes que herdam de Canvas DEVEM implementar o método paint(), responsável por Classe Canvas desenhar a tela. As classes que herdam de Canvas PODEM implementar o método keyPressed(), responsável por verificar se uma determinada tecla foi pressionada.
  • 8. Como desenhar usando Canvas? O método paint() recebe como argumento uma instância de Graphics, com a qual é possível desenhar na tela. Graphics possui Classe Canvas diversos métodos para desenhar na tela, tais como: drawImage(), drawRect(), fillRect(), drawString(), etc.
  • 9. E quanto aos diversos tamanhos de tela? A altura e a largura da tela podem ser obtidas pelos métodos getHeight() e getWidth(), respectivamente. Todos os desenhos devem ser Classe Canvas posicionados de acordo com as dimensões da tela (posições relativas), nunca com números fixos (posições absolutas).
  • 10. Como capturar as teclas pressionadas? Qualquer tecla que o usuário pressionar pode ser tratada pelo método keyPressed(), que recebe um inteiro como argumento indicando o código da tecla pressionada. PROBLEMA: as Classe Canvas “Soft Keys” não possuem constantes definidas em Canvas, ou seja, o código das teclas varia de aparelho para aparelho.
  • 11. Teclas em Canvas A classe Canvas possui uma série de constantes que referenciam os códigos das teclas do aparelho. Essas constantes devem ser usadas em detrimento do inteiro correspondente porque o seu valor pode variar de um aparelho para o outro.
  • 12. Indo para a Prática Construindo uma interface com a API de Baixo Nível
  • 14. Código Splash Screen Âncoras especificam o posicionamento da imagem relativo ao ponto (X, Y) no qual se deseja inserí-la na tela. Nesse caso, a imagem está sendo centralizada nesse ponto.
  • 15. Segundo Exercício Como construir um menu elegante para o meu jogo ou aplicativo? Sprites são a solução.
  • 16. Sprite é uma classe da Game API do MIDP 2.0 Sprites são criados a partir de imagens que possuem um ou mais frames. Os Sprites podem ser animados, rotacionados, espelhados, etc.
  • 17. Crie uma nova instância da classe Sprite; Defina a posição do mesmo através dos métodos defineReferencePixel() e setRefPixelPosition(); Construtor da classe Sprite Desenhe o Sprite na tela, através do método paint(); Você poderá alterar o frame do Sprite a qualquer momento através dos métodos nextFrame(), prevFrame() e Como adicionar um Sprite no Canvas? setFrame().
  • 18. Vamos ao desafio! Use Canvas para representar a tela, o método drawString() para os textos e represente o background e cada botão como uma instância de Sprite. Por fim, implemente o método keyPressed() de forma a navegar pelo Você é a capaz de construir menu. Note que basta mudar o frame o menu acima? da opção selecionada e definir o frame dos demais como sendo o inicial.
  • 19. Técnicas Avançadas e Exemplos Adicionais Técnicas Avançadas para a criação de aplicações profissionais
  • 20. DIFERENTES TELAS » Os dispositivos móveis possuem telas com vários tamanhos e resoluções; » A API de baixo nível do JavaME não possui suporte nativo a redimensionamento de imagens; » É necessário realizar esse redimensionamento “na unha” ou, ainda, oferecer imagens de diferentes tamanhos e utilizar a mais adequada para a tela do aparelho.
  • 21. Diferentes Telas: Solução Proposta Cada imagem da aplicação pode estar disponível em três tamanhos, para telas pequenas, médias e grandes. Por exemplo: 128x160 (Tela Pequena), 176x208 (Média) e 240x320 (Grande); Ao iniciar a aplicação, obtém-se a altura e a largura da tela e, a partir dessas, carrega-se as imagens adequadas para o tamanho de tela específico; No caso do background, pode-se redimensionar a imagem logo após obter-se a altura e largura da tela do aparelho, assegurando que o mesmo irá preencher toda a tela.
  • 22. Para garantir a portabilidade, faz-se necessário a adoção de uma das seguintes soluções para tratar as diferenças dos códigos das SOFT KEYS entre os dispositivos: 1. Usar Commands caso não haja necessidade de formatação específica para os botões inferiores; 2. Detectar, em tempo de execução, o fabricante do aparelho e, assim, configurar os valores adequados; 3. Definir diretivas de pré-compilação de forma a gerar JARs específicos para cada família de aparelhos, cada qual com os valores corretos das Soft Keys (J2ME Polish faz esse trabalho).
  • 23. ? E quanto a fonte… Como posso mudar? BITMAP FONTS são a solução!