Tutorial: Desenvolvimento de aplicacoes moveis com Java

22,093 views

Published on

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
22,093
On SlideShare
0
From Embeds
0
Number of Embeds
149
Actions
Shares
0
Downloads
1,240
Comments
0
Likes
10
Embeds 0
No embeds

No notes for slide

Tutorial: Desenvolvimento de aplicacoes moveis com Java

  1. 1. Desenvolvimento de aplicações móveis com Java por Paulo César M. Jeveaux
  2. 2. Agenda 2 Apresentação Wireless Toolkit Por que desenvolver Configurações para celulares? Perfis O que é JavaME Futuro e Tendências Arquitetura Exemplos Desenvolvimento de aplicações móveis com Java 31/08/2007
  3. 3. Paulo César M. Jeveaux 3 Javanês desde 2000; Mantenedor do Portal Java e do ESJUG http://www.portaljava.com https://esjug.dev.java.net Consultor Arquiteto Java EE; Palestrante nos principais eventos Java do país. Participante de diversos grupos e comunidades de Java, Linux e Software Livre em geral. Desenvolvimento de aplicações móveis com Java 31/08/2007
  4. 4. 4 Apresentação Por que desenvolver para celulares? Desenvolvimento de aplicações móveis com Java 31/08/2007
  5. 5. Por que desenvolver para celular? 5 Bilhões de Clientes potenciais; Mais de 700 milhões dos celulares já possuem Java. Clientes potenciais em constante crescimento; Eles querem softwares, quem desenvolverá? Desenvolvimento de aplicações móveis com Java 31/08/2007
  6. 6. Por que desenvolver para celular? 6 Forte apoio das Fabricantes de Celular; E também das operadoras de celular; Ainda não se sabe o que é possível fazer; Desenvolvimento de aplicações móveis com Java 31/08/2007
  7. 7. 7 Por que usar Java ME? Desenvolvimento de aplicações móveis com Java 31/08/2007
  8. 8. Por que Java ME? 8 Alguns dispositivos só rodam Java ME; Java em dispositivos móveis: Fácil integração com outras soluções Java; Write Once Run Anywhere (WORA); Compatibilidade binária; Retorno de investimentos; Desenvolvimento de aplicações móveis com Java 31/08/2007
  9. 9. Por que Java ME? 9 Java ME fornece: Portabilidade; Segurança; Conectividade com a Web; Etc; Java ME é uma especificação, mantida pelo JCP (Java Community Process), assim como a Linguagem Java, a JVM, e tudo mais. Desenvolvimento de aplicações móveis com Java 31/08/2007
  10. 10. Por que Java ME? 10 Open Source! A implementação da Sun do Java ME e Java SE já são Open Source, sob a licensa GPL v2. Também se tornaram Open Source o NetBeans, Solaris, OpenSPARC e StarOffice. http://www.sun.com/software/opensource/java https://mobileandembedded.dev.java.net Desenvolvimento de aplicações móveis com Java 31/08/2007
  11. 11. 11 O que é Java ME Desenvolvimento de aplicações móveis com Java 31/08/2007
  12. 12. O que é Java ME 12 O Java ME é uma versão reduzida da plataforma Java que permite que aplicativos sejam criados para dispositivos móveis com diversas vantagens da plataforma Java. Projetado para dispositivos com limitações de memória, tela e processamento. JSRs do Java ME http://jcp.org/jsr/tech/j2me.jsp Desenvolvimento de aplicações móveis com Java 31/08/2007
  13. 13. 13 Arquitetura Desenvolvimento de aplicações móveis com Java 31/08/2007
  14. 14. Arquitetura 14 Java Desenvolvimento de aplicações móveis com Java 31/08/2007
  15. 15. KVM 15 A KVM é um pequeno ambiente de execução que faz parte da plataforma do Java ME e que foi projetada para ser executada em pequenos dispositivos com grandes restrições de processamento, memória e bateria, como celulares, PDAs, pagers, etc. Desenvolvimento de aplicações móveis com Java 31/08/2007
  16. 16. KVM 16 A KVM está para os pequenos dispositivos assim como a JVM está para os desktops que possuem Java. Porém a KVM implementa apenas o suporte para a arquitetura CLDC. Desenvolvimento de aplicações móveis com Java 31/08/2007
  17. 17. 17 WTK Wireless Toolkit Desenvolvimento de aplicações móveis com Java 31/08/2007
  18. 18. WTK 18 WTK; Kit de Desenvolvimento para Java ME, contém: Emuladores de telefones genéricos; APIs básicas compiladas; Documentação; Ambiente para desenvolvimento, depuração e implantação de aplicativos; Desenvolvimento de aplicações móveis com Java 31/08/2007
  19. 19. WTK 19 Versão atual 2.5; Conta com a integração da API Location, nova API de segurança, Internacionalização, novos recursos multimedia, suporte a SVG, Payment API, melhor suporte a OpenGL 3D API, etc; Disponível para download gratuito no site da Sun: www.java.sun.com/javame Desenvolvimento de aplicações móveis com Java 31/08/2007
  20. 20. WTK 20 KToolBar OTA Provising (Over The Air) Desenvolvimento de aplicações móveis com Java 31/08/2007
  21. 21. 21 Configurações CDC CLDC Desenvolvimento de aplicações móveis com Java 31/08/2007
  22. 22. Configurações 22 Especifica uma VM e subconjuntos de APIs de Java para uma família de dispositivos; Connected Device Configuration (CDC) Connected, Limited Device Configuration (CLDC) Desenvolvimento de aplicações móveis com Java 31/08/2007
  23. 23. CDC 23 Ambiente para set-top boxes de TVs à cabo, dispositivos wireless high-end, sistemas automotivos; Dispositivos com cerca de 2MB de RAM (alguns PDA’s, telefones 3G, etc.); Desenvolvimento de aplicações móveis com Java 31/08/2007
  24. 24. CLDC 24 Ambiente para telefones celulares, pagers, PDAs; CLDC são usualmente wireless; Equipamentos com baixíssimos níveis de processamento e capacidade de memória: Máximo 512kb de RAM Ex. Celulares 2G; 2,5G Desenvolvimento de aplicações móveis com Java 31/08/2007
  25. 25. CLDC 25 A configuração do CLDC possui duas versões, 1.0 e 1.1, veja as melhorias e novidades presentes na versão 1.1: Ponto Flutuante; Classes Calendar, Date e Timezone de acordo com Java SE; Nova classe de erro: NoClassDefFoundError; Memória mínima passou de 160kb para 192kb; Desenvolvimento de aplicações móveis com Java 31/08/2007
  26. 26. Configurações e Perfis 26 Desenvolvimento de aplicações móveis com Java 31/08/2007
  27. 27. 27 Perfis MIDP Desenvolvimento de aplicações móveis com Java 31/08/2007
  28. 28. Perfis 28 Uma coleção de API’s que complementam uma configuração fornecendo ferramentas de interação para o dispositivo; O perfil ajuda na portabilidade das aplicações; Desenvolvimento de aplicações móveis com Java 31/08/2007
  29. 29. Perfis 29 Os perfis existentes para o CLDC são diferentes dos existentes para o CDC; Um perfil pode depender da funcionalidade de outro perfil, assim como uma configuração; Desenvolvimento de aplicações móveis com Java 31/08/2007
  30. 30. Perfis 30 Mobile Information Device Profile (MIDP) Aplicações em dispositivos wireless sobre a CLDC; Foundation Profile Profile de base para dispositivos em rede sem GUI sobre CDC; Personal Basis, Personal e RMI Profiles Suporte básico a gráficos e RMI para dispositivos CDC e Foundation; Desenvolvimento de aplicações móveis com Java 31/08/2007
  31. 31. 31 Mobile Information Device Profile Foi o primeiro perfil do Java ME; É focado em dispositivos implementados com o CLDC; É responsável por: Ferramentasde tela(Display); Interaçãocom o usuário; Persistênciade dados; “Messaging”(SMS, email, etc), segurança e comunicação através da rede wireless; Desenvolvimento de aplicações móveis com Java 31/08/2007
  32. 32. MIDP 1.0 32 128 kB de memória não volátil; 32 kB para heap; 8 kB para persistência de dados; Tela de 96x54 pixels; Entrada de dados; Conexões de rede (intermitentes); Segurança – conceito de sandbox das applets; Desenvolvimento de aplicações móveis com Java 31/08/2007
  33. 33. MIDP 2.0 33 Segurança: baseado em permissões do Java SE; Novas API´s para aprimorar o desenvolvimento: Game API; Media API; Secure Connection API; Desenvolvimento de aplicações móveis com Java 31/08/2007
  34. 34. Composição MIDP 34 Desenvolvimento de aplicações móveis com Java 31/08/2007
  35. 35. MIDlet 35 Tem que conter pelo menos uma classe derivada do pacote javax.microedition.midlet.MIDlet Obrigatoriamente, um número de métodos têm que ser implementados para que sua execução torne-se possível; Deve-se que usar somenteas API’s do MIDP para manter sua portabilidade; Desenvolvimento de aplicações móveis com Java 31/08/2007
  36. 36. MIDlet 36 Desenvolvimento de aplicações móveis com Java 31/08/2007
  37. 37. MIDlet 37 Start – Onde é feita a Aquisição de recursos inicializando a execução (startApp); Pause – Liberação de recursos em um modo de espera, ou seja, pausado utilizado ao atender telefone, receber SMS dentre outra aplicação (pauseApp); Destroy – Liberação de todos os recursos (destroyApp); Desenvolvimento de aplicações móveis com Java 31/08/2007
  38. 38. Deploy MIDlet 38 Desenvolvimento de aplicações móveis com Java 31/08/2007
  39. 39. Distribuição 39 MIDlets precisam ser empacotados corretamente antes de serem enviados a um dispositivo para instalação. A classe principal MIDlet que age como o ponto de entrada principal para o MIDlet, juntamente com as classes que você construiu e quaisquer imagens ou outros arquivos para os quais precisa de acesso em tempo de execução, precisam ser empacotados em um único arquivo JAR. Desenvolvimento de aplicações móveis com Java 31/08/2007
  40. 40. JAR 40 Um arquivo JAR (Java Archive file) contém a definição de empacotamento dos arquivos que são necessários para rodar a aplicação. Também é provida informação de empacotamento semelhante em outro arquivo chamado Java Aplication Descriptor (ou JAD) que é tratado separadamente do JAR. Um JAR pode conter mais de um MIDlet, neste caso todos os MIDlets devem estar dentro do mesmo MIDlet suite. O arquivo JAR deve conter todos os arquivos que fazem parte de um MIDlet suite Desenvolvimento de aplicações móveis com Java 31/08/2007
  41. 41. JAD 41 Conteúdo de MIDlet-1: Teste, Teste.png, Teste um arquivo MIDlet-Jar-Size: 100 JAD MIDlet-Jar-URL: Teste.jar MIDlet-Name: Teste MIDlet-Vendor: Unknown MIDlet-Version: 1.0 MicroEdition-Configuration: CLDC- 1.0 MicroEdition-Profile: MIDP-2.0 Desenvolvimento de aplicações móveis com Java 31/08/2007
  42. 42. Obfuscator 42 Dispositivos móveis possuem memória muito reduzida, e quanto menor sua aplicação for, melhor será para o dispositivo. Para isso usamos o Obfuscator que é usado para diminuir o tamanho dos arquivos eliminando redundância e também para evitar engenharia reversa. Desenvolvimento de aplicações móveis com Java 31/08/2007
  43. 43. 43 Preparando o Ambiente NetBeans Eclipse Desenvolvimento de aplicações móveis com Java 31/08/2007
  44. 44. NetBeans 44 Download e uso gratuitos. www.netbeans.org É preciso baixar além do NetBeans IDE o Kit para desenvolvimento móvel – Mobility Pack. O Mobility Pack possui um WTK embutido, não sendo necessário baixar a instalação separada. Desenvolvimento de aplicações móveis com Java 31/08/2007
  45. 45. Eclipse 45 Download e uso gratuitos. www.eclipse.org É preciso baixar além do Eclispse IDE a instalação do WTK e também algum plugin para agilizar e facilitar o desenvolvimento. Desenvolvimento de aplicações móveis com Java 31/08/2007
  46. 46. 46 Interface com usuário Desenvolvimento de aplicações móveis com Java 31/08/2007
  47. 47. Interface com o usuário 47 As MIDlets devem poder ser executadas em qualquer dispositivo, contendo a VM, sem alterações, porém isso torna bastante difícil a parte de Interface com usuário, pois dispositivos variam de tamanho de tela, cores, teclados, touch-Screens e outros aspectos. Desenvolvimento de aplicações móveis com Java 31/08/2007
  48. 48. Interface com o usuário 48 As aplicações são desenvolvidas com uma certa abstração de tela, pois os comandos e a inserção de dados são feitos através dos botões do celular, e isto não é sabido previamente. As aplicações descobrem isto em Runtime e se comportam de maneira apropriada a cada celular. Já no desenvolvimento de jogos a aplicação é bem mais específica, pois o desenvolvedor precisa conhecer o dispositivo previamente para melhor aproveitamento de recursos, como disposição em tela por exemplo. Desenvolvimento de aplicações móveis com Java 31/08/2007
  49. 49. Interface com o usuário 49 Temos as classes Screen e Canvas as quais podemos dividir em duas categorias: High-level API: engloba a classe Screen e suas heranças, pois são classificados como objetos de Interface. Low-level API: engloba a classe Canvas e suas heranças, as quais proporcionam uma área livre para gráficos. Game API: específica para o desenvolvimento de jogos Desenvolvimento de aplicações móveis com Java 31/08/2007
  50. 50. MIDlets e Displays 50 Cada MIDlet possui uma referência a apenas um objeto Display. Este objeto pode obter informação a respeito do display atual, como por exemplo, o total de cores suportadas pelo display do dispositivo. Ele inclui métodos para adicionar objetos Displayable no Display como formulários, caixa de texto, alertas, etc. Object Display javax.microedition.lcdui Desenvolvimento de aplicações móveis com Java 31/08/2007
  51. 51. 51 Componentes UI Desenvolvimento de aplicações móveis com Java 31/08/2007
  52. 52. High Level UI 52 Pode existir apenas um por tela. List Screen TextBox Alert Form Desenvolvimento de aplicações móveis com Java 31/08/2007
  53. 53. Form 53 Form é uma herança de Screen e Displayable, o qual pode conter mais de um controle de interface chamados Item. Um form tem a mesma função de um Container em AWT/SWING, mas com as limitações da MIDlet é claro, ele serve para poder- se colocar mais de um componente na tela. Desenvolvimento de aplicações móveis com Java 31/08/2007
  54. 54. Form 54 Apesar de haver rolagem automática quando todos os objetos não cabem na tela, cuidado para não deixar um form muito grande com muitos componentes, pois a rolagem dos forms tende a ser confuso nos dispositivos, pois cada um implementa isso da sua maneira, e por isso não deve se tornar uma prática corriqueira, além de tornar seu aplicativo esteticamente mal feito, pois o usuário muitas vezes não irá saber se há mais objetos a serem preenchidos. Desenvolvimento de aplicações móveis com Java 31/08/2007
  55. 55. Form 55 Como vimos os forms recebem itens os quais são divididos em diversos tipos cada um com sua finalidade. Os itens podem ser adicionados e removidos mesmo com os forms sendo mostrados. Desenvolvimento de aplicações móveis com Java 31/08/2007
  56. 56. Form 56 Métodos do - append(Item item); Form. Lembre-se que - set(int Indice, Item o método append item); adiciona um novo item no final da lista, - insert(int Indice, Item e o método insert adiciona item); um item no índice - delete(int Indice); indicado movendo os outros existentes para baixo. Desenvolvimento de aplicações móveis com Java 31/08/2007
  57. 57. Items 57 Como já foi falado existem vários tipos de itens, e cada um com sua determinada função. Esses diversos tipos de itens estendem da classe Item. Esses itens são inseridos em forms, eles podem ou não ter um Label, podem ou não ser mostrados, eles podem ter comandos associados a eles. Desenvolvimento de aplicações móveis com Java 31/08/2007
  58. 58. 31/08/2007 String Item Desenvolvimento de aplicações móveis com Java ImageItem TextField DateField Item Gauge ChoiceGroup Spacer CustomItem Items 58
  59. 59. Commands 59 Os commands são usados para interação do usuário com a aplicação. Sua aplicação básica é na troca de Displayables, os quais são acionados por elementos reais do dispositivo, que podem ser: softkeys, itens de menu, botões e dispositivos de acionamento. Esses commands são entidades abstratas e podem ser adicionados arbitrariamente para cada elemento Screen ou Canvas. Desenvolvimento de aplicações móveis com Java 31/08/2007
  60. 60. Commands 60 Os commands tem três propriedades: Label: texto mostrado ao usuário na interface; Type: tipo do comando; Priority: prioridade dos comandos que são utilizados para mostrar os comandos mais utilizados com maior facilidade. Command(String Label, int Type, int Priority); Ex: comandoSair = new Command( Sair , Command.EXIT, 1); Desenvolvimento de aplicações móveis com Java 31/08/2007
  61. 61. Menu options 61 Os commands são geralmente relacionados a SoftKeys ou SoftButtons, que são botões existentes nos celulares os quais são usados para menus, e navegação em geral, sem uma função única. Geralmente possui-se dois botões de SoftKeys, porém isso não significa que você precisa só ter dois commands sendo implementados, pois se houver mais commands que botões eles são agrupados e é aberto um menu. Para isso que serve a prioridade setada nos botões, ou seja, a prioridade 1 (mais prioritário) indica que esse command deve ser mostrado nas softKeys, ou em primeiro lugar no menu. Desenvolvimento de aplicações móveis com Java 31/08/2007
  62. 62. Tipos de Commands 62 Busque sempre a utilização correta dos tipos de Commands (Command.SCREEN, Command.EXIT, Command.OK, Command.BACK, etc), pois é em runtime que eles irão definir o local apropriado para se posicionarem na tela. Por exemplo, se um command é setado com o tipo EXIT, ele vai ficar onde normalmente fica os comandos de Exit do próprio celular. Desenvolvimento de aplicações móveis com Java 31/08/2007
  63. 63. CommandListener 63 O tratamento dos commands é feito com o pattern de Listeners ( Observer), ou seja, comandos são adicionados a Displayables, cada displayable pode possuir apenas um CommandListener o qual é invocado assim que um command é acionado. public void setCommandListener(CommandListener) Desenvolvimento de aplicações móveis com Java 31/08/2007
  64. 64. 64 Exemplos Desenvolvimento de aplicações móveis com Java 31/08/2007
  65. 65. TextField 65 É uma string editável, ou melhor exemplificando um campo para preencher.Para este item existem os métodos de manipulação: getString(); setString(); Construtor: TextField(String Label, String Text, int TamMax, int Constraints) Possui constraints: ANY, PASSWORD, EMAILADDR, NUMERIC,PHONENUMBER, URL. Desenvolvimento de aplicações móveis com Java 31/08/2007
  66. 66. ChoiceGroup 66 É uma lista de escolhas semelhante a List, ambos implementam a interface Choice. Os tipos de listas são Exclusive e Multiple, porém não tem o tipo Implicit. Já na MIDP 2.0 é implementado o tipo POPUP, que deixa a lista semelhante a um menu DropDown. Desenvolvimento de aplicações móveis com Java 31/08/2007
  67. 67. StringItem 67 É um simples Label com um texto. Ex: “Código: 1”, onde “Codigo” é a parte Label, e “1” é a parte Texto. Para este Item, existem os métodos de manipulação: getLabel(), setLabel(), getText(), setText(); StringItem( “Label:” , “Text” ); Desenvolvimento de aplicações móveis com Java 31/08/2007
  68. 68. ImageItem 68 Mostra a instância de uma Imagem dentro de um form, ou seja, você precisa já de um objeto Image. Este item possui um label, um texto alternativo e pode ser posicionado segundo um layout. ImageItem(String Label, Image imagem, int Layout, String texto_alt); Desenvolvimento de aplicações móveis com Java 31/08/2007
  69. 69. ImageItem 69 Os layouts são constantes da classe, e podem ser: LAYOUT_DEFAULT, LAYOUT_LEFT, LAYOUT_CENTER, LAYOUT_RIGHT, LAYOUT_NEWLINE_BEFORE*, LAYOUT_NEWLINE_AFTER*. *somente existentes no MIDP 2.0 Desenvolvimento de aplicações móveis com Java 31/08/2007
  70. 70. ImageItem 70 Exemplo Image img = new Image.createImage(“/foto.png”); ImageItem imgItem = new ImageItem(“Foto”, img, ImageItem.LAYOUT_DEFAULT, “Alt Text” ); form.append(imgItem); Desenvolvimento de aplicações móveis com Java 31/08/2007
  71. 71. DateField 71 É uma interface usada para datas, horas ou ambos, como irá aparecer é por conta do Celular e o programador não tem controle sobre isso. No construtor deve ser especificado a Label e o tipo de dado, que pode ser: DateField.DATE DateField.TIME DateField.DATE_TIME Desenvolvimento de aplicações móveis com Java 31/08/2007
  72. 72. Gauge 72 É uma representação gráfica de um valor inteiro, e como ele será mostrado depende da implementação de cada aparelho. Existem dois tipos de gauges, o interativo, que permite a ação do usuário sobre seu valor, e não interativo controlado somente pelo programa. Os valores podem ser alterados em tempo de execução, pelos comandos getMaxValue(), setMaxValue(); setValue(), getValue(). Desenvolvimento de aplicações móveis com Java 31/08/2007
  73. 73. List 73 Como o próprio nome diz são listas, as quais permitem ao usuário selecionar itens (elements) de uma lista. Esses elementos podem ser representados tanto por Strings quanto por Imagens. Desenvolvimento de aplicações móveis com Java 31/08/2007
  74. 74. List 74 Existem três tipos de listas, Implicit, Exclusive e Multiple. Implicit deixa você escolher uma opção e clicar no botão padrão de seleção ou em um command que você adicionar. Exclusive, que lembra uma lista de Radio, permite somente a seleção de uma opção e para seleciona-la deve-se usar um botão com um Command setado. E ainda tem a list Multiple, que funciona como uma CheckList, que nos permite selecionar várias opções. Desenvolvimento de aplicações móveis com Java 31/08/2007
  75. 75. Tipos de List 75 Quando é selecionado um item em uma lista Implicit, o método CommandAction é chamado, sendo que para esta List já foi anteriormente adicionando um CommandListener. Existem duas sobrecargas para este construtor, no qual você pode iniciar os Arrays de elementos e de Imagens ou não. O array de elementos, se utilizado, não poderá ser nulo, mas poderá conter elementos nulos, os quais aparecerão em branco na tela. Desenvolvimento de aplicações móveis com Java 31/08/2007
  76. 76. Métodos de List 76 Quando uma lista tornar-se grande demais para a tela, será criado uma rolagem, a qual não cabe a nós implementa-la, ela é por conta da VM. Cada elemento da list possui um índice. Esse índice inicia em 0. Para editar uma list, existem alguns métodos que valem a pena ser comentados aqui. Desenvolvimento de aplicações móveis com Java 31/08/2007
  77. 77. Métodos de List 77 set() : altera o elemento do qual o índice foi fornecido; insert() : insere um elemento em uma posição indicada por um índice. Se este índice estiver no meio da lista, ele força os outros elementos uma posição à frente; append() : inclui um elemento ao final da lista; delete() : remove o elemento indicado pelo índice; Desenvolvimento de aplicações móveis com Java 31/08/2007
  78. 78. Métodos de List 78 Dois métodos bastante utilizados que valem a pena ser comentados são: public boolean isSelected(int indice): que me diz se o índice esta selecionado atualmente. public int getSelectedIndex(): que me retorna o índice que foi escolhido, somente para listas Implicit e Exclusive. Desenvolvimento de aplicações móveis com Java 31/08/2007
  79. 79. TextBox 79 É um componente básico que serve para entrada de texto(string) em celulares. O construtor de um TextBox é: public TextBox(String titulo, String texto, int tam_Max, int constraints); Desenvolvimento de aplicações móveis com Java 31/08/2007
  80. 80. Alert 80 Um alert nada mais é que uma mensagem informativa ao usuário, tem a mesma idéia de um alert de javascript, ou VB, ou qualquer outra linguagem, ou seja, ele é basicamente uma telinha que mostra uma mensagem e logo depois sai da tela. Desenvolvimento de aplicações móveis com Java 31/08/2007
  81. 81. Alert 81 Esses alerts podem ser tanto Timed Alerts, ou Modal Alert. No Timed Alert, você pode setar um tempo ou não o qual receberá o tempo padrão do aparelho. E o alerta modal que aparece e fica esperando uma intervenção do usuário, e possui vários tipos, como Alarm, Confirmation, Error, Info, Warning, cada qual com seu ícone e som, os quais também podem ser setados pelo desenvolvedor. Desenvolvimento de aplicações móveis com Java 31/08/2007
  82. 82. Alert 82 Construtores public Alert(String titulo, String texto, Image icone, AlertType tipo) public Alert(String titulo) Alerts são criados com um tempo default para desaparecer, tempo qual é implementado na VM, e pode ser obtido por getDefaultTimeout(), e também configurado por setTimeout(). Quando criamos um Timed Alert, podemos transforma-lo em modal adicionando ao parâmetro AlertType para Alert.FOREVER. Desenvolvimento de aplicações móveis com Java 31/08/2007
  83. 83. Alert 83 Exemplo Alert alerta; alerta = new Alert(“Alerta”,“Acesso não autorizado.”, null, null); alerta.setTimeout(5000);// timeout para 5 segundos Desenvolvimento de aplicações móveis com Java 31/08/2007
  84. 84. Ticker 84 Ticker nada mais é que um texto que corre no topo da tela, semelhante as tickers de mercados de ações, e semelhante ao <marquee> de html. O recurso de Ticker serve para algum texto informativo que possa ser importante, ficar lembrando toda hora, ou algo de enfeite que você queira colocar. Mas lembre-se, a tela do celular já é pequena para sua aplicação, e o ticker tomara mais uma linha para si, a qual não poderá ser usada. Sua criação é simples. Desenvolvimento de aplicações móveis com Java 31/08/2007
  85. 85. Ticker 85 Exemplo: Ticker ticker = new Ticker(“Esta mensagem deve passar na tela”); E os métodos para manuseio dessas Tickers não poderiam ser outros senão: public void setTicker(Ticker ticker) public Ticker getTicker Desenvolvimento de aplicações móveis com Java 31/08/2007
  86. 86. Outros Listeners 86 Existem ainda outros dois listeners que podem ser usados: ItemCommandListener: serve para tratar eventos de Commands de um item especifíco. Deve implementar o método commandAction(Command c, Item item); ItemStateListener: serve para tratar eventos de mudanças no estado interno de um Item. Deve implementar o método itemStateChanged(Item item); Desenvolvimento de aplicações móveis com Java 31/08/2007
  87. 87. 87 Exemplos Desenvolvimento de aplicações móveis com Java 31/08/2007
  88. 88. Low Level UI 88 Displayable Canvas javax.microedition.lcdui Desenvolvimento de aplicações móveis com Java 31/08/2007
  89. 89. Canvas 89 Componentes de interface MIDP não são adequados para jogos e gráficos; Possuem também limitações quanto à amostragem de dados e usuabilidade; A classe Canvas fornece acesso de baixo nível à tela do dispositivo e recursos de entrada de dados; Capturar diretamente entrada de dados do usuário e definir a tela de acordo; Game API na MIDP 2.0; Desenvolvimento de aplicações móveis com Java 31/08/2007
  90. 90. Canvas 90 Coração da API gráfica de baixo nível Herda de Displayable e é tratada como tal Para utilizá-la, é necessário criar uma herança Contém métodos para manipulação de eventos Um único método é abstrado, exigindo implementação: paint(); Desenvolvimento de aplicações móveis com Java 31/08/2007
  91. 91. Canvas 91 É possível buscar informações sobre o Canvas e a tela do dispositivo: getWidth() getHeight() Canvas geralmente deixa uma porção da tela para uso do dispositivo e comandos, mas no MIDP 2.0 é possível configurar um Canvas para ocupar toda a tela setFullScreenMode(boolean) Desenvolvimento de aplicações móveis com Java 31/08/2007
  92. 92. Canvas 92 O método paint() é semelhante aos da AWT ou Swing Dentro do paint() colocamos código para desenhar formas, linhas, imagens, etc. Desenvolvimento de aplicações móveis com Java 31/08/2007
  93. 93. Canvas 93 Exemplo public class MeuCanvas extends Canvas { public void paint(Graphics g) { // desenha alguma coisa } } Desenvolvimento de aplicações móveis com Java 31/08/2007
  94. 94. Canvas 94 Invocação de repaint() não invoca diretamente o paint() Somente sinaliza a implementação MIDP que a tela deve ser redesenhada O método serviceRepaints() de Canvas executa todos os repaints pendentes Não retorna enquanto todos não foram executados Desenvolvimento de aplicações móveis com Java 31/08/2007
  95. 95. Canvas 95 Coordenadas iniciam no canto superior esquerdo (x,y). Métodos (cllase Graphics): drawLine(x1, y1, x2, y2) drawRect(x, y, larg, alt) fillRect(x, y, larg, alt); fillArc(x, y, larg, alt, anguloInicio, anguloArco) Desenvolvimento de aplicações móveis com Java 31/08/2007
  96. 96. Canvas 96 As linhas e contornos podem utilizar dois estilos: Graphics.SOLID Graphics.DOTTED A implementação MIDP é livre para escolher como vai se comportar o estilo DOTTED Desenvolvimento de aplicações móveis com Java 31/08/2007
  97. 97. Canvas 97 Representadas como combinações de vermelho, verde e azul (RGB) setColor(int RGB) – 0xRRGGBB setColor(int red, int green, int blue) Dispositivos possuem diferentes níveis de suporte e cores Desde preto e branco até cores de 24 bits Métodos isColor() e numColors() da classe Display auxiliam a determinar a capacidade da tela atual Desenvolvimento de aplicações móveis com Java 31/08/2007
  98. 98. Canvas 98 Para dispositivos de escala de cinza setGrayScale(int grayScale) Entre 0 e 255 Em escala de cinza, os valores de red, green e blue são iguais Eventualmente, dispositivos de escala de cinza podem retornar true no método isColor() Desenvolvimento de aplicações móveis com Java 31/08/2007
  99. 99. Canvas 99 Baseado em pontos de ancoragem Pontos de localização do texto TOP, BASELINE, BOTTON LEFT, HCENTER, RIGHT A coordenada x,y de desenho será baseada nesse ponto de ancoragem TOP | LEFT, BOTTOM | HCENTER, etc Métodos: drawChar(char caracter, x, y, ancora) drawString(String, x, y, ancora) Desenvolvimento de aplicações móveis com Java 31/08/2007
  100. 100. Canvas 100 Fontes são representadas por face, estilo e tamanho Faces: Font.FACE_SYSTEM, Font.FACE_MONOSPACE, Font.FACE_PROPORTIONAL Estilos: Font.STYLE_PLAIN, Font.STYLE_BOLD, Font.STYLE_ITALIC, Font.STYLE_UNDERLINE Tamanhos: Font.SIZE_SMALL, Font.SIZE_MEDIUM, Font.SIZE_LARGE Estilos podem ser combinados com or ( | ) Desenvolvimento de aplicações móveis com Java 31/08/2007
  101. 101. Canvas 101 Apesar de Commands poderem ser usados em Canvas, é possível capturar eventos em nível mais baixo Captura direta de teclas ou controles de direcionamento Captura de eventos de apontadores em telas touch screen (canetas, dedos), caso exista Desenvolvimento de aplicações móveis com Java 31/08/2007
  102. 102. Canvas 102 Métodos a serem implementados no Canvas: keyPressed(int keyCode) keyReleased(int keyCode) É retornado um inteiro representando a tecla acionada Constantes da classe Graphics KEY_NUM0 até KEY_NUM9, KEY_STAR, KEY_POUND Dispositivos podem ter mais teclas, que retornam valores não mapeados em Graphics Desenvolvimento de aplicações móveis com Java 31/08/2007
  103. 103. Canvas 103 Ações mais específicas para jogos e controles de direção Mapeadas de forma abstrata para cada dispositivo Transformar KeyCode em GameAction getGameAction(int keyCode) Constantes (de Graphics) UP, DOWN, LEFT, RIGHT, FIRE, GAME_A, GAME_B, GAME_C, GAME_D Desenvolvimento de aplicações móveis com Java 31/08/2007
  104. 104. Canvas 104 Verificar de dispositivo suporta apontadores hasPointerEvents() hasPointerMotionEvents() Eventos: pointerPressed(x,y) pointerReleased(x,y) pointerDragged(x,y) – enquanto está sendo arrastado Desenvolvimento de aplicações móveis com Java 31/08/2007
  105. 105. 105 Exemplos Desenvolvimento de aplicações móveis com Java 31/08/2007
  106. 106. 106 RMS – Record Manager System Desenvolvimento de aplicações móveis com Java 31/08/2007
  107. 107. RMS 107 Abordagem abstrata Dispositivo deve oferecer algum tipo de armazenamento Flash ROM, RAM com baterias e etc. Qualquer tipo de armazenamento é tratado da mesma maneira Pequenas quantidades de dados MIDP exige um mínimo de 8Kb Desenvolvimento de aplicações móveis com Java 31/08/2007
  108. 108. Armazenamento de Dados 108 Baseado em Record Stores Conjunto de registros (Record) Instâncias de javax.microedition.rms.RecordStore Em MIDP 1.0, todas as MIDlets da suite podem acessar seus RecordStores Em MIDP 2.0, um RecordStore pode ser compartilhado por todas as MIDlets de um dispositivo Desenvolvimento de aplicações móveis com Java 31/08/2007
  109. 109. RecordStore 109 Identificados por um nome que deve ser único Para abrir um, basta fornecer o seu nome public static RecordStore openRecordStore(String nome, boolean, criarSeNecessário) Lança RecordStoreExcetion RecordStoreFullException RecordStoreNotFoundException Se o RecordStore não existir, será criado, dependendo do valor de criarSeNecessário Desenvolvimento de aplicações móveis com Java 31/08/2007
  110. 110. Abrir e Fechar RecordStore 110 Para abrir um RS chamado “Address” RecordStore rs = RecordStore.openRecordStore(“Address”,true); Para fechar um RS, é utilizado o método closeRecordStore() É interessante fechar os RS assim que possível, devido às exigências de economia de memória nos dispositivos O método pauseApp() também deve fechar os RS abertos, se possível Desenvolvimento de aplicações móveis com Java 31/08/2007
  111. 111. Listar e Remover 111 Para listar todos os RSs disponíveis para um MIDlet suite: public static String[] listRecordStores() Para remover um RS: public static deleteRecordStore(String nome) Desenvolvimento de aplicações móveis com Java 31/08/2007
  112. 112. Tamanho 112 Para ler o tamanho em bytes do RS public int getSize() Para verificar o espaço disponível para o RS: public int getSizeAvailable() As implementações em geral acrescentam algum overhead ao armazenamento de dados Desenvolvimento de aplicações móveis com Java 31/08/2007
  113. 113. Manipulando Registros 113 Desenvolvimento de aplicações móveis com Java 31/08/2007
  114. 114. Inserindo Registros 114 Método: public int addRecord(byte[] dados, int offset, int numBytes) Exemplo: String = “Isto é um registro” byte[] dados = registro.getBytes(); int id = rs.addRecord(dados, 0, dados.length); Desenvolvimento de aplicações móveis com Java 31/08/2007
  115. 115. Lendo Registros 115 O registro é lido baseado no seu ID public byte[] getRecord(int recordID) Insere os dados em um novo array public int getRecord(int recordId, byte[] buffer, int offset) Insere os dados em um array já existente, no offset indicado Tamanho do record pode ser obtido por getRecordSize() Desenvolvimento de aplicações móveis com Java 31/08/2007
  116. 116. Alterando e Removendo Registros 116 Alteração do registro por inteiro public void setRecord(int ID, byte[] dados, int offset, int numBytes) Remoção via RecordID public void deleteRecord(int ID) Desenvolvimento de aplicações móveis com Java 31/08/2007
  117. 117. 117 Exemplos Desenvolvimento de aplicações móveis com Java 31/08/2007
  118. 118. 118 Certificação SCMAD Desenvolvimento de aplicações móveis com Java 31/08/2007
  119. 119. SCMAD 119 Profissional deve possuir certificação SCJP Objetivos da prova: Java Technology for the Wireless Industry specification (JSR-185) - ttp://java.sun.com/products/jtwi/ CLDC (1.0 / 1.1) - ttp://java.sun.com/products/cldc Security (both CLDC and MIDP): pacote pki entre outros. Networking: limitações de HTTP, etc. Modelo de aplicação, deploy, ciclo de vida Persistência com MIDP Interface visual com Usuário MIDP MIDP Game API Media using MIDP 2.0 and the Mobile Media API 1.1 (MMAPI) Wireless Messaging API 1.1 (WMA) Desenvolvimento de aplicações móveis com Java 31/08/2007
  120. 120. 120 Futuro e Tendências Desenvolvimento de aplicações móveis com Java 31/08/2007
  121. 121. Location API 121 JSR 179 Desenvolvimento de aplicações móveis com Java 31/08/2007
  122. 122. Payment API 122 JSR 229 Desenvolvimento de aplicações móveis com Java 31/08/2007
  123. 123. Internationalization API 123 JSR 238 Desenvolvimento de aplicações móveis com Java 31/08/2007
  124. 124. 124 Exemplos Desenvolvimento de aplicações móveis com Java 31/08/2007
  125. 125. HelloWorld 125 import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class HelloWorld extends MIDlet { protected void startApp() throws MIDletStateChangeException {} protected void pauseApp() {} protected void destroyApp(boolean arg0) throws MIDletStateChangeException {} } Desenvolvimento de aplicações móveis com Java 31/08/2007
  126. 126. Ambiente de Desenvolvimento 126 É preciso ter instalado: JDK; WTK; IDE ou Editor para os códigos: Eclipse + EclipseME NetBeans + Mobility Pack; Gel; JBuilder; Desenvolvimento de aplicações móveis com Java 31/08/2007
  127. 127. Referências 127 Tutorial, Apostila e Forum de Java Me do Portal Java www.portaljava.com GUJ www.guj.com.br Sun http://java.sun.com/javame Java.net https://mobileandembedded.dev.java.net Desenvolvimento de aplicações móveis com Java 31/08/2007
  128. 128. ESJUG, Participe 128 https://esjug.dev.java.net Desenvolvimento de aplicações móveis com Java 31/08/2007
  129. 129. That’s all folks! 129 Muito Obrigado a todos; Contatos: Paulo César M. Jeveaux (Jevô) jeveaux@portaljava.com / paulo@jeveaux.com www.portaljava.com / www.jeveaux.com Desenvolvimento de aplicações móveis com Java 31/08/2007
  130. 130. Desenvolvimento de aplicações móveis com Java por Paulo César M. Jeveaux

×