1 / 140

Curso básico j2me

Curso básico j2me. Bruno Pereira (bpe@cin.ufpe.br) Carlos Santos (cesps@cin.ufpe.br). Ementa. Visão geral MIDLet Tratamento de eventos Interface alto nível + Registros Interface baixo nível Boas práticas. Metodologia. Sobre o curso Slides “on demand” Referência: Core j2me

arden-glenn
Download Presentation

Curso básico j2me

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Curso básico j2me Bruno Pereira (bpe@cin.ufpe.br) Carlos Santos (cesps@cin.ufpe.br)

  2. Ementa • Visão geral • MIDLet • Tratamento de eventos • Interface alto nível + Registros • Interface baixo nível • Boas práticas

  3. Metodologia • Sobre o curso • Slides “on demand” • Referência: Core j2me • Sobre as aulas • Dúvidas ... todos nós temos • Avaliação (alunos) • Projeto • Avaliação (instrutores)

  4. Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan Tokuda, Mestre Zen

  5. Overview • Por que J2ME? • Mudanças trazidas • Dispositivos alvo • Restrições { memória, processamento } • Mais informações • http://java.sun.com/j2me/reference/faqs/index.html

  6. Arquitetura

  7. Configurações • Parte “low level” • Define requisitos de hardware • Especificação para JVM • Geralmente divide os dispositivos segundo memória, poder de processamento, display, conectividade • Exemplo: CLDC e CDC

  8. Profiles • Parte “high level” • Extensão da configuração • Provê bibliotecas para implementação de aplicações para um dado tipo de dispositivo • Exemplo: MIDP

  9. Máquina Virtual • KVM (Kilo Virtual Machine) • Desenvolvida pela Sun MicroSystems • CLDC estabelece uma “classe” de dispositivos nos quais uma KVM roda • “Existe vida” além da KVM • Dados comparativos • 40 – 80 Kb (KVM) • 20 – 40 Kb (heap) • 16 bits a 25 MHz

  10. J2ME

  11. Enfim ... MIDP • Mobile Information Device Profile

  12. MIDP – Hierarquia de classes

  13. Ambiente de desenvolvimento • Eclipse IDE v3.0 • Sun Wireless Toolkit 2.1 • Plugin EclipseME 0.7.5

  14. Ambiente de desenvolvimento • Configurando o plugin

  15. Ambiente de desenvolvimento

  16. Ambiente de desenvolvimento

  17. Ambiente de desenvolvimento • Configurando o Toolkit

  18. Ambiente de desenvolvimento

  19. Pausa para reflexão

  20. O MIDlet • Aplicativo Java para MIDP • Gerenciador de Aplicativos • Software responsável por instalar, remover e executar MIDlets • Dependente de dispositivo e implementado pelo fabricante • Um ou mais MIDlets podem ser empacotados num JAR

  21. O MIDlet • JAD (Java Application Descriptor) • Arquivo plain/text usado pelo Gerenciador de Aplicativos • Fornece informações sobre o arquivo JAR • Fornece meios para se passar parâmetros para o MIDlet • Campos obrigatórios: MIDlet-Name, MIDlet-Version, MIDlet-Vendor, MIDlet-n, MIDlet-Jar-URL, MIDlet-Jar-Size

  22. Ciclo de vida do MIDlet • PAUSA • Depois da chamada do construtor e antes da inicialização pelo Gerenciador • Durante o processo de execução • ATIVO • MIDlet em execução • Durante o processo de execução • DESTRUÍDO • Desligada pelo Gerenciador • Libera todos os recursos alocados

  23. Estrutura de um MIDlet import javax.microedition.midlet.MIDlet; public class helloWorld extends MIDlet { public helloWorld () { System.out.println("helloWorld()"); } // obrigatorio protected void startApp() { System.out.println("startApp()"); } // obrigatorio protected void pauseApp() { System.out.println("pauseApp()"); } // obrigatorio protected void destroyApp(boolean arg0){ System.out.println("destroyApp()"); } }

  24. Ciclo de vida - fluxograma

  25. Display • Gerenciador de tela que controla o que é mostrado no dispositivo e quando • Recupera informações sobre a tela atual (cores suportadas, resolução, etc) • Objeto único para cada MIDlet • Não é instanciado

  26. Usando o Display public class Test_Display extends MIDlet { private Display display; // construtor public Test_Display() { display = Display.getDisplay(this); ... } ... }

  27. Display – métodos principais • static Display getDisplay(MIDlet m) • Retorna o objeto display deste MIDlet • Displayable getCurrent() • Retorna o objeto displayable corrente • void setCurrent(Displayable d) • Mostra um objeto displayable ()

  28. Display – métodos principais • int numColors() • Retorna o número de cores disponíveis • boolean vibrate(int duration) • Ordena ou não a vibração do aparelho(midp 2.0) • boolean flashBackLight(int duration) • Ordena ou não que a luz do aparelho acenda(midp 2.0)

  29. Displayable • Objeto que pode ser visto num dispositivo • Screen • Objetos Displayable para Interface alto nível • Canvas • Objetos Displayable para Interface baixo nível

  30. Displayable • Screen • TextBox • List • Alert • Form (ChoiceGroup, DateField, TextField, Gauge, ImageItem, StringItem) • OBS: ticker – variável que pode ter ou não em um Displayable; texto que corre continuamente na tela.

  31. Displayable • Ver se vai entrar com os Command... metodos...

  32. Enfim um Hello World public class tratamentoEventos extends MIDlet{ private Display display; private TextBox tb; // Construtor public tratamentoEventos() { display = Display.getDisplay(this); tb = new TextBox("","Hello World",11,0); } // O inicio da aplicacao protected void startApp() { this.display.setCurrent(tb); } }

  33. Pausa para reflexão

  34. Tratamento de eventos Interface de alto nível

  35. Overview • Quadro geral • Objetos Command • Objetos Item • Command e CommandListener • Item e ItemStateListener

  36. Quadro geral • Eventos são essenciais para MIDlets, pois são chave para interatividade • Para gerenciarmos um evento: • O Hardware reconhece o evento físico • O software é notificado do evento • O evento é tratado pelo programador

  37. Objetos Command • Contém informações sobre um evento • Podem ser considerados como “botões” • Soft keys • Teclas • O processo de eventos • Criação do Objeto Command • Adicionar o comando a um displayable • Adicionar um receptor (listener) ao displayable

  38. Objetos Command • Command cmdExit = new Command(“exit”, Command.EXIT, 1) • Argumentos • Nome para o comando • Constante (OK, EXIT, HELP, BACK, etc) • Prioridade • Constante • Mapeia o posicionamento dos comandos na tela • Depende da implementação do fabricante • Prioridade • Útil para a organização dos comandos em Menus e de botões de software na tela

  39. CommandListener • É o “receptor” de um comando • Método a ser sobrescrito: • commandAction (Command c, Displayable d ) • Em commandAction é definido como o aplicativo deve se comportar quando um evento é disparado

  40. Exemplo (façam rodar =D) private Form fmMain; private Command cmExit; fmMain = new Form(“Curso CITi"); ... cmExit = new Command("Exit", Command.EXIT, 1); // 1º passo ... fmMain.addCommand(cmExit); //2º passo fmMain.setCommandListener(this); // 3º passo ... public void commandAction(Command c, Displayable s) { if (c == cmExit) { destroyApp(true); notifyDestroyed(); } }

  41. Exercitando ... • Crie um MIDlet que contenha um Form e controle três botões: • Form fmMain = new Form(“Tela Principal”); • Lembre-se que Form é um objeto Displayable • “exit”, usado para sair do MIDlet • “hello” imprime “Hello World” • “back” volta para a tela principal, após o usuário ter visualizado a mensagem

  42. Item • Qualquer componente que possa ser adicionado a um objeto Form (ver diagrama de classes) • Item é uma classe abstrata • Métodos • String getLabel () • Void setLabel (String label)

  43. ItemStateListener • O receptor de eventos relacionados a objetos Item • Método a ser sobrescrito • void itemStateChanged () • Este método é chamado quando o “item” tiver sofrido alteração que gere evento

  44. Exemplo // cria o objeto Item df = new DateField("Data :", DateField.DATE); df.setDate(new java.util.Date()); // adiciona o objeto a um displayable formMain.append(df); // seta o receptor formMain.setItemStateListener(this);

  45. Exercitando ... • Crie um MIDlet com um DateField e que imprime “Item State Changed ...” quando seu estado é alterado • Para esta implementação pode ser usado System.out.println()

  46. Pausa para reflexão

  47. Interface de alto nível Parte 1

  48. Overview • Screen • Form • Item • StringItem • DateField • Gauge • TextField • Choice e ChoiceGroup • Image e ImageItem

  49. ((

  50. Screen • Classe progenitora • Descendente direta de Displayable • Métodos principais: • String getTitle () • void setTitle(String title) • Ticker getTicker () • void setTicker (Ticker t)

More Related