You are on page 1of 69

CURSO TECNLOGO EM ANLISE E DESENVOLVIMENTO DE SISTEMAS

EMILIANO MARCOLINO VELASCO JALINE DA SILVA SOUSA LEANDRO SOUSA AZEVEDO

ACESSO A BANCO DE DADOS VIA WI-FI, USANDO DISPOSITIVOS MVEIS

Campos dos Goytacazes/RJ 2011

EMILIANO MARCOLINO VELASCO JALINE DA SILVA SOUSA LEANDRO SOUSA AZEVEDO

ACESSO A BANCO DE DADOS VIA WI-FI, USANDO DISPOSITIVOS MVEIS

Trabalho apresentado ao Instituto Federal Fluminense como requisito parcial para a concluso do curso de Tecnologia em Anlise e Desenvolvimento de Sistemas.

Orientador: Prof. Ricardo Jos dos Santos Barcelos

Campos dos Goytacazes/RJ 2011

EMILIANO MARCOLINO VELASCO JALINE DA SILVA SOUSA LEANDRO SOUSA AZEVEDO

ACESSO A BANCO DE DADOS VIA WI-FI, USANDO DISPOSITIVOS MVEIS

Monografia apresentada ao Instituto Federal Fluminense, como requisito parcial para concluso do curso Tecnlogo em Anlise e Desenvolvimento de Sistema.

Aprovada em 06 de junho de 2011.

Banca Avaliadora:

........................................................................................................................................ Prof. Ricardo Jos dos Santos Barcelos (orientador) Mestre em Engenharia de Produo pela UENF Instituto Federal de Educao, Cincia e Tecnologia Fluminense

........................................................................................................................................ Prof. Breno Fabrcio Terra Azevedo Mestre em Informtica pela UFES Instituto Federal de Educao, Cincia e Tecnologia Fluminense

........................................................................................................................................ Prof. Mauricio Jos Viana Amorim Mestre em Sistemas e Computao - IME Instituto Federal de Educao, Cincia e Tecnologia Fluminense

DEDICATRIA

Dedicamos este trabalho nossa famlia e todas as pessoas, que contriburam para nosso sucesso, crescimento e aprendizado.

AGRADECIMENTOS

Primeiramente conhecimento,

ao aos

nosso nossos

DEUS

pelo e

professores

orientador, pela pacincia, aos familiares e amigos, pelo apoio e colaborao.

RESUMO

O surgimento de novas tecnologias vem trazendo grandes avanos para o mundo e tem revolucionado a maneira como as pessoas se comunicam. A comunicao por meio das redes sem fio e a utilizao de dispositivos mveis tem contribudo significativamente para essa revoluo, pois estes possuem a vantagem da disponibilidade de servio em qualquer lugar e a qualquer momento. Assim sendo, este trabalho tem como objetivo o desenvolvimento de uma aplicao que permita o acesso, atravs de um celular, a qualquer banco de dados. O projeto foi construdo utilizando-se as tecnologias e ferramentas adequadas ao perfil da aplicao.

Palavras-chave: Redes sem fio. Dispositivos mveis. Celular.

ABSTRACT

The emergence of new technologies has brought great advances to the world and has revolutionized the way how people communicate. The communication through wireless networks and mobile devices has contributed significantly to this revolution, because they have the advantage of availability of service anywhere and anytime. Thus, this study aims to develop an application that allows access to any database via a mobile phone. The project was built using the technologies and tools to suit the application profile.

Key words: Wireless network. Mobile devices. Mobile phone.

SUMRIO
1. Introduo.............................................................................................................................13 1.1 Objetivo .........................................................................................................................14 1.2 Justificativa ....................................................................................................................14 2. A Tecnologia Utilizada .........................................................................................................15 2.1 Configurao CDC (Connected Device Configuration)................................................17 2.1.1 Foundation Profile (FP) .........................................................................................17 2.1.2 Personal Basis Profile (PBP).................................................................................17 2.1.3 Personal Profile (PP) .............................................................................................17 2.2 Configurao CLDC (Connected Limited Device Configuration)................................17 2.3 Perfis ..............................................................................................................................18 2.3.1 IMP (Information Module Profile).........................................................................19 2.3.2 MIDP (Mobile Information Device Profile)...........................................................19 2.4 Midlets ...........................................................................................................................21 2.4.1 O Ciclo de Vida de Um Midlet ..............................................................................22 2.5 Outras Tecnologias - Android ........................................................................................24 2.5.1 Ambiente de implementao Android....................................................................25 2.6 Outras tecnologias - Symbian ........................................................................................26 2.6.1 Ambiente de implementao Symbian...................................................................26 3. Instalao do Ambiente de Desenvolvimento ......................................................................27 3.1 IDE Eclipse ....................................................................................................................27 3.2 Banco de Dados .............................................................................................................27 3.3 Emulador........................................................................................................................27 3.4 Pacotes ...........................................................................................................................28 3.5 Passo a Passo .................................................................................................................29 4. Desenvolvimento da Aplicao ............................................................................................37 5. Concluso .............................................................................................................................38 6. Referncias Bibliogrficas....................................................................................................39 7. Anexo 1.................................................................................................................................41 7.1 Diagramas ......................................................................................................................41 7.2 Telas no Smartphone Nokia N95 ...................................................................................43 7.3 Telas no Nokia N78 .......................................................................................................46 7.4 Telas no Smartphone SAMSUNG WAVE 525 ..............................................................48

7.5 Fotos da Apresentao do Pr-Projeto ...........................................................................51 8. Anexo 2.................................................................................................................................53

Lista de Figuras
Figura 1: Viso geral das plataformas Java disponveis, e das duas camadas adotadas pela comunidade JCP .......................................................................................................................16 Figura 2: Relao do CDC e do CLCD com a plataforma J2SE..............................................18 Figura 3: Arquitetura bsica de um dispositivo CLDC ............................................................19 Figura 4: Os trs mtodos bsicos que compem o ciclo de vida de uma MIDLet..................22 Figura 5: Ciclo de Vida das MIDlets ........................................................................................23 Figura 6: Arquitetura Android ..................................................................................................24 Figura 7: Simulao de um celular realizada pelo emulador....................................................28 Figura 8: Pacote contendo as bibliotecas necessrias ao desenvolvimento do projeto. ...........28 Figura 9: Verificando a presena do Java na mquina de desenvolvimento ............................29 Figura 10: Site do Eclipse Galileo............................................................................................29 Figura 11: Descompactando o Pacote do Eclipse Galileo ........................................................30 Figura 12: Escolha de Workspace.............................................................................................30 Figura 13: O Ambiente do Eclipse Galileo...............................................................................30 Figura 14: Site do EclipseMe ...................................................................................................31 Figura 15: Esquerda, arquivos baixados a serem transferidos para o Eclipse Galileo .............31 Figura 16: Site da Oracle para download do Tollkit.................................................................32 Figura 17: Termo de Aceitao da Instalao do Sun Java Tollkit...........................................32 Figura 18: Inserindo o path do diretrio Java...........................................................................33 Figura 19: Inserindo diretrio para instalao..........................................................................33 Figura 20: Confirma instalao do toolkit................................................................................33 Figura 21: Resultado instalao do toolkit ...............................................................................33 Figura 22: Janela com as opes de criao de uma MIDlet....................................................34 Figura 23: Janela de criao de um projeto MIDlet .................................................................34 Figura 24: Importando emulador para o projeto.......................................................................35 Figura 25: Finalizando a criao do projeto MIDlet ................................................................35 Figura 26: Viso do eclipse com o projeto MIDlet criado .......................................................36 Figura 27: Viso das opes de configurao do arquivo JAD................................................36 Figura 28: Diagrama de Sequncia - Funcionamento Geral da Aplicao...............................41 Figura 29: Diagrama de Caso de Uso.......................................................................................41 Figura 30: Diagrama de Classe - Pessoa ..................................................................................42

Figura 31: Diagrama de Estrutura de Dados - Pessoa ..............................................................42 Figura 32: NOKIA N95 - Imagem do Celular Pedindo acesso rede Wi-Fi. ..........................43 Figura 33: NOKIA N95 - Escolha da rede Wi-Fi .....................................................................43 Figura 34: NOKIA N95 - Lista de Dados retornados da consulta ao bancos...........................44 Figura 35: NOKIA N95 - Escolhendo a opo de Inserir um Novo Registro ..........................44 Figura 36: NOKIA N95 - Tela de Insero de Dados...............................................................44 Figura 37: NOKIA N95 - Dados inseridos na tela....................................................................44 Figura 38: NOKIA N95 - Gravando os dados inseridos, no banco de dados ...........................45 Figura 39: NOKIA N95 - Lista Atualizada com o novo registro inserido................................45 Figura 40: NOKIA N95 - Escolhendo opo de excluso........................................................45 Figura 41: NOKIA N95 - Tela Atualizada aps excluso de arquivo.......................................45 Figura 42: NOKIA N78 - Imagem do Celular Pedindo acesso rede Wi-Fi ...........................46 Figura 43: NOKIA N78 - Dados inseridos na tela....................................................................46 Figura 44: NOKIA N78 - Escolhendo a opo de Gravar os dados inseridos na tela no banco de dados. ...................................................................................................................................47 Figura 45: NOKIA N78 - Escolhendo a opo de Excluir os dados no banco de dados..........47 Figura 46: SANSUMG WAVE 525- Imagem do Celular Pedindo acesso rede Wi-Fi. .........48 Figura 47: SANSUMG WAVE 525- Lista de Dados retornados da consulta ao banco ...........48 Figura 48: SANSUMG WAVE 525- Dados inseridos na tela...................................................49 Figura 49: SANSUMG WAVE 525- Lista atualizada com as informaes do banco de dados ..................................................................................................................................................49 Figura 50: SANSUMG WAVE 525- Escolhendo a opo de Inserir um Novo Registro .........50 Figura 51: SANSUMG WAVE 525- Tela de Insero de Dados..............................................50 Figura 52: Imagem da Apresentao da Aplicao modelo, celular conectado ao computador ..................................................................................................................................................51 Figura 53: Imagem do Celular conectado ao Notebook e um monitor espelhando a imagem do notebook. ..................................................................................................................................51 Figura 54: Aluna Jaline mostrando o funcionamento do sistema.............................................52 Figura 55: Imagem da Apresentao da Aplicao desenvolvida. ...........................................52

Lista de Siglas
CDC - Configurao destinada para dispositivos com maior capacidade computacional, como TV Digital, PDAs de alto desenpenho e sistemas automotivos.

CLDC - (Configurao Limitada de Dispositivos Conectados) Configurao destinada a dispositivos com menor capacidade computacional, geralmente utilizada em aplicaes embarcadas, teclefones celulares e smartphones.

ECLIPSE ME - Plugin da IDE Eclipse para ajudar no desenvolvimento de aplicativos J2ME MIDlets

HANDED KEYBOARD - Teclado manual

IDE - (IDE - Integrated Development Environment) IDE um ambiente integrado para desenvolvimento de software.

J2ME - Java 2 Micro Edition, base para desenvolvimento de aplicativos Java para dispositivos mveis.

JRE - Java Runtime Environment (Ambiente de Tempo de Execuo Java)

JVM - Java Virtual Machine (Mquina Virtual Java)

KVM - Mquina Virtual que fornece recursos comuns de computao.

MIDLET - Aplicao Java destinada a dispositivos mveis como celulares, smartphones e outros dispositivos que implementem o perfil MIDP.

WIRELESS - Redes sem fio, tambm conhecidas como IEEE 802.11, Wi-Fi ou WLANs, so redes que utilizam sinais de rdio para a sua comunicao.

PAGER - um dispositivo eletrnico usado para contactar pessoas atravs de uma rede de

telecomunicaes.

AWT - Abstract Window Toolkit, foi o primeiro toolkit para criao de interfaces para dispositivos moveis em Java.

APPLETS - um programa escrito em linguagem de programao Java que podem ser includos em uma pgina HTML.

RUNTIME - Tempo de Execuo

PDA - Assistente pessoal digital

IP - Internet Protocol - Protocolo de Internet

TCP - Transmission Control Protocol - Protocolo de Controle de Transmisso

TCP/IP - Arquitetura desenvolvida para Internet

WAP - Wirelles Application Protocol - Protocolo de aplicao sem fio - um protocolo de comunicao e ambiente de aplicaes para a distribuio de recursos de informao.

1. Introduo
Nos ltimos anos o uso de dispositivos mveis vem se tornando cada vez mais acessveis aos indivduos devido ao baixo custo, acessibilidade e facilidade de comunicao. Por meio da utilizao de redes locais sem fio e via satlite possvel disponibilizar servios em qualquer lugar e em qualquer momento. Cada vez mais comum a comunicao entre dispositivos de naturezas distintas, como a transmisso de dados entre aparelhos celulares e computadores pessoais. A tecnologia Wireless (comunicao sem fio) constitui um novo paradigma de comunicao e representa uma revoluo na forma de comunicao em rede. A comunicao sem fios ainda apresenta muitos problemas relacionados segurana. Os riscos, com relao segurana, nesta forma de transmisso de dados podem e devem ser minimizados, aplicando-se a configurao recomendada, como a utilizao de senhas e criptografia, pois importante ressaltar que no existe rede totalmente segura, qualquer que seja a forma de comunicao. Os avanos tecnolgicos tm sido cada vez mais crescentes, a cada instante uma nova tecnologia desenvolvida. O celular um exemplo desse novo mercado que vem evoluindo cada vez mais. As empresas de telefonia mvel investem na pesquisa e no desenvolvimento de novos aplicativos para serem funcionais para seus aparelhos, com o objetivo de aumentar o nmero de usurios. O desenvolvimento de aplicaes para dispositivos mveis requer um conjunto de ferramentas especficas que proporcionem um ambiente adequado de acordo com as especificidades dos aparelhos. Pelo fato de celulares conterem quantidade de memria e capacidade de processamento limitados, bem como discernirem significativamente suas configuraes entre os mais diversos modelos. Existem atualmente poucas linguagens de programao com o objetivo de desenvolver aplicaes para dispositivos mveis. A plataforma J2ME a mais utilizada para estes dispositivos, devido facilidade de implementao da linguagem de programao Java, por meio da adio de classes ou bibliotecas para o desempenho de determinada tarefa, alm de ser uma linguagem orientada a objeto, fator este que facilita o entendimento do projeto, pois visa um desenvolvimento mais prximo possvel da realidade. A linguagem Java se destaca pelo suporte a criao de aplicativos para dispositivos mveis, a maioria dos aparelhos mveis possui suporte ao Java. Uma plataforma especfica com suporte para esse tipo de aplicao o J2ME que cria as Midlets, que so as classes que

14

um celular com suporte a Java interpreta, gerando uma gama de recursos a serem programados. A praticidade de acesso e a rapidez na execuo das tarefas do dia a dia, tornam o papel dos softwares para dispositivos mveis essenciais. O suporte rede Wi-Fi nos aparelhos mveis um ponto a se destacar, pois este aumenta a capacidade de um aplicativo Java desenvolvido para dispositivos mveis. Uma das utilidades o acesso servidores web j existentes para a realizao de uma determinada tarefa com maior praticidade e comodidade, sem necessitar o uso de um computador para a realizao de tarefas mais simples.

1.1 Objetivo
O objetivo do projeto desenvolver uma aplicao para disponibilizar um sistema que, com o uso de dispositivos mveis, realize acessos a banco de dados utilizando a comunicao de rede sem fio.

1.2 Justificativa
O sistema de acesso a banco de dados via rede sem fios, promove aos usurios de dispositivos mveis uma gama de aplicativos facilitadores para o seu cotidiano. Com base no estudo realizado neste projeto, o programador ser capaz de desenvolver diversos aplicativos com acesso a servidores de internet ou intranet, ou como desejar. Os dispositivos mveis tem a possibilidade de serem utilizados com diversos tipos de conexo, sendo que para alunos oriundos de instituio pblica a conexo com a internet muito cara. Porm, o mnimo de alunos que possuem dispositivos mveis significativo, podendo afirmar que 100% tem celular. O sistema proposto possibilita acesso rede da instituio sem utilizao da internet, isto , sem custo.

2. A Tecnologia Utilizada
Foi utilizada a plataforma J2ME, que tem como finalidade disponibilizar uma JVM (Java Virtual Machine), API (Application Programming Interface) e um conjunto de ferramentas para o desenvolvimento de aplicaes mveis. J2ME fornece um JRE (Java Runtime Environment) otimizado especialmente voltado para o mercado de grande consumo, onde cada vez maior o nmero de dispositivos mveis suportando aplicaes desenvolvidas em J2ME. Atualmente existem trs plataformas Java disponveis. So elas:

Standard Edition (J2SE): Projetado para funcionar em computadores desktop e estaes de trabalho.

Enterprise Edition (J2EE): Com suporte embutido para Servlets, JSP, XML, esta edio destinada a aplicaes para servidores.

Micro Edition (J2ME): Projetado para dispositivos com memria, display e capacidade de processamento limitados.

Embora a plataforma J2ME seja voltada para o desenvolvimento de aplicaes mveis, foi necessrio que a dividissem em duas abordagens segundo as necessidades dos dispositivos portteis. Isto se d pelo fato das diversas capacidades dos mesmos. Um Screenphone Internet (um dispositivo de hardware projetados para fornecer acesso a email, notcias, online banking, etc) pode ter display, memria e capacidade de processamento relativamente maiores do que um pager. No entanto, mesmo dispositivos que paream semelhantes podem variar tambm nesses aspctos de memria e processamento. Assim sendo foram categorizadas duas camadas: Configurao e Perfil. A primeira abordagem foi denominada Configuraes, onde foi definido um JRE (Java Run-Time Environment) e um conjunto de classes bsicas chamadas de core. Uma configurao define qual a mquina virtual a ser utilizada de acordo com o dispositivo em questo. Existem duas configuraes para dispositivos mveis, a CDC (Connected Device Configuration) e a CLDC (Connected Limited Device Configuration). Para o CDC, a mquina virtual tem basicamente a mesma especificao do J2SE, utilizando a CVM como mquina

16

virtual. Para CLDC, a Sun1 desenvolveu o que referido como uma implementao de referncia de uma mquina virtual, conhecida como a Mquina Virtual K. Portanto entendese que a KVM e a CVM no so a "tradicional" mquina virtual Java. Logo, KVM e a CVM so implementaes da Sun de JVM que se encaixa com as orientaes do CLDC. A segunda abordagem foi definida como Perfil, que consiste em um conjunto de classes que visam oferecer ao programador os recursos necessrios para o desenvolvimento de aplicaes voltadas para o perfil individual do dispositivo. A Figura 1 mostra a arquitetura bsica das trs plataformas Java verso 2, disponveis atualmente:

Figura 1: Viso geral das plataformas Java disponveis, e das duas camadas adotadas pela comunidade JCP Fonte: http://www.developer.com/ws/j2me/article.php/1441091/The-Basics-of-J2ME.htm

Aps compilar o cdigo-fonte Java em um arquivo de classe e opcionalmente, incluir em um arquivo JAR, a JVM converte os arquivos de classe (mais precisamente, o cdigo de bytes nos arquivos de classe) para a plataforma que est executando a JVM. A JVM tambm responsvel por oferecer segurana, alocar, liberar memria e gerenciamento de threads. Estes, por sua vez, podem ser definidos como processos paralelos, onde cada um possui uma fatia de tempo para a sua execuo. Isso possibilita a execuo de mltiplas tarefas nos sistemas multitarefa.

Empresa responsvel pela criao do Java, atualmente mantido pela Oracle

17

2.1 Configurao CDC (Connected Device Configuration)


Esta configurao foi proposta para o desenvolvimento de aplicaes para dispositivos com uma maior capacidade computacional, como os set-top boxes, PDAs, sistemas automotivos etc. Neste momento esto disponveis os seguintes perfis:

2.1.1 Foundation Profile (FP)


Encontra-se no nvel mais baixo do CDC. No possui suporte interface com o usurio. O pacote javax.awt.* no se encontra disponvel. Esse perfil necessrio para os demais perfis CDC.

2.1.2 Personal Basis Profile (PBP)


Suportam um nvel bsico de interface com o ususrio e utiliza-se de toolkits para executar tarefas.

2.1.3 Personal Profile (PP)


Perfil CDC utilizado para aplicaes que necessitam de um suporte completo para interface. Adiciona bibliotecas grficas ao Foundation Profile atravs de ambiente com total suporte a AWT. A inteno dos criadores desse perfil era possibilitar uma plataforma

adequada para Applets. As seguintes caractersticas so encontradas num dispositivo CDC: processador de 32 bits 2MB de memria RAM para o ambiente runtime Java conectividade geralmente a rede sem fio

2.2 Configurao CLDC (Connected Limited Device Configuration)


Foi desenvolvida para aplicaes em dispositivos com baixa capacidade

computacional, como os celulares e pagers. As seguintes caractersticas so as mnimas necessrias para o desenvolvimento de uma aplicao no CLDC: 160kB a 512kB de memria disponvel para a plataforma Java processador de 16 a 32 bits

18

baixo consumo de energia, freqentemente usando energia de baterias conectividade a algum tipo de rede, em geral sem-fio.

2.3 Perfis
Um perfil J2ME define uma plataforma Java mais definida e focada para um mercado, categoria de dispositivo, ou indstria em particular. No ncleo da implementao CLDC est a JVM que, parte das diferenas especficas definidas na especificao, de acordo com a especificao para JVMs e linguagem Java. A JVM tipicamente executa acima do sistema operacional que est fora do escopo da especificao.

Figura 2: Relao do CDC e do CLCD com a plataforma J2SE Fonte: http://www.ifi.uzh.ch/~riedl/lectures/Java2001-j2me.pdf

A Figura 2 ilustra a relao do CDC e do CLCD com a plataforma J2SE. O CDC utiliza basicamente a mesma especificao da plataforma J2ME. O CLDC tambm utiliza um conjunto de classes bsicas do modelo J2SE. Porm na representao da figura, a parte que se encontra fora da rea J2ME significa as especificaes de cada configurao. As classes que esto fora do ambiente J2SE no podem utilizar o java.*.

Ao topo da JVM esto as bibliotecas, que so divididas em duas categorias: as definidas pelo CLDC as definidas pelos perfis

19

Figura 3: Arquitetura bsica de um dispositivo CLDC Fonte: http://www.inf.ufrgs.br/gppd/disc/inf01008/trabalhos/sem01-1/t2/pitoni/ Desta forma a configurao CLDC define um conjunto de especificaes para dispositivos com baixa capacidade computacional de forma mais genrica, enquanto que os perfis (Figura 3) definem as especificidades de forma mais particular. Existem atualmente dois perfis para o CLDC. So eles o IMP (Information Module Profile) e o MIDP (Mobile Information Device Profile).

2.3.1 IMP (Information Module Profile)


Quando combinado com o Connected Limited Device Configuration (CLDC), as Informaes do Mdulo Profile (IMP) fornecem um ambiente de aplicaes Java para dispositivos mveis, que no possuem grandes capacidades de exibio grfica, ou cujos recursos grficos so limitados. Entre os exemplos incluem caixas de chamada de emergncia, parqumetros, mdulos sem fio em sistemas de alarme residenciais, industriais e dispositivos de medio. Em um pacote padronizado de APIs Java, IMP fornece a funcionalidade bsica do aplicativo necessrio mquina, incluindo conectividade de rede, armazenamento de dados locais, e gerenciamento de aplicaes de ciclo de vida.

2.3.2 MIDP (Mobile Information Device Profile)


MIDP um elemento-chave da plataforma Java 2 Mobile Edition (J2ME). Quando combinado com o Connected Limited Device Configuration (CLDC), MIDP fornece um ambiente de execuo Java padro para os mais populares dispositivos de informao mvel atualmente, como telefones celulares e os PDAs. A especificao do MIDP foi definida atravs do Java Community Process (JCP), para fabricantes que possuem maior liderana no desenvolvimento de dispositivos, operadoras e fornecedores de software para dispositivos mveis, e define uma plataforma dinmica e segura, para a implantao otimizada, grficos e aplicaes de rede.

20

O MIDP 2.0 superou em capacidade, porm, vrios dispositivos suportam apenas MIDP 1.0 com isto a maioria dos desenvolvedores no podem ignorar a verso anterior. Existem duas verses do IMP; verso 1.0 baseada em MIDP 1.0; e verso da Next Generation (NG) baseada na MIDP 2.0. O MIDP a definio de uma arquitetura e APIs para prover um ambiente de desenvolvimento aberto para MIDs (mobile information devices). O MIDP foi feito para executar sobre CLDC. Para tanto, um MID deve possuir as seguintes caractersticas mnimas de hardware (alm das que so requeridas pelo CLDC): Display: Tamanho da tela: 96x54; Profundidade: 1 bit; Formato do pixel (proporo de aspecto): 1:1;

Input: One handed keyboard ou Two handed keyboard ou Touch Screen;

Memria: 128 Kbytes para os componentes MIDP; 8 Kbytes para dados das aplicaes; 32 Kbytes para o JAVA runtime;

Rede: Duplex, sem fio, possivelmente intermitente e com largura de banda limitada.

Como os MIDs possuem uma grande quantidade de potencialidades, este limitado ao conjunto de APIs necessrias para aquelas que precisam alcanar uma grande portabilidade. So as seguintes:

- Aplicao: O Ciclo de Vida de uma MIDlet no deve possuir um mtodo public void static main (). O software de gerenciamento de aplicao deve suprir a classe inicial necessria pelo CLDC para iniciar a MIDlet. Quando uma MIDlet instalada, esta mantida no aparelho e est disponvel para ser utilizada. Quando executada, uma instncia criada atravs de seu construtor pblico sem argumentos, e seus mtodos so chamados para mudar e passar pelos estados da MIDlet. Quando terminada, destruda, e os recursos utilizados por

21

ela podem ser recuperados, incluindo os objetos criados e suas classes.

- Interface do Usurio;

- Persistent Storage: O MIDP disponibiliza um mecanismo para que as MIDlets possam guardar dados e l-los mais adiante. Este mecanismo conhecido como Record Management System (RMS).

- Record Stores: uma coleo de registros que permanece o mesmo durante mltiplas chamadas do MIDlet. A plataforma responsvel por manter a integridade desses registros, mesmo aps reboots ou trocas de baterias.

- Records: So vetores de bytes. Utilizados para armazenagem de diferentes tipos de dados. Eles so unicamente identificados pelo seu recordId, um valor inteiro.

- Rede: O MIDP herda a conectividade do CLDC e suporta um subconjunto do HTTP, que pode ser implementado com protocolos IP (TCP/IP) e no-IP (WAP e i-mode). A interface HttpConnection possui funcionalidades que permitem a realizao de funes especficas do HTTP. Qualquer aparelho que implemente MIDP deve suportar o HTTP 1.1, requisies HEAD, GET, POST e forms.

-Temporizadores (timers): Aplicaes que necessitem agendar tarefas para um tempo futuro pode utilizar as classes Timer e TimerTask, que incluem funes para uma execuo ou vrias execues em determinados intervalos. Elas esto em java.util.Timer e

java.util.TimerTask.

Em suma pode-se dizer que a configurao visa aparelhos que possuem recursos de hardware semelhantes, enquanto que o perfil visa aparelhos que executem tarefas semelhantes.

2.4 Midlets
MIDLETS so os aplicativos que so executados nos dispositivos mveis na plataforma J2ME. Todas as aplicaes desenvolvidas nesta plataforma so chamadas de MIDLETS. Para tanto, a classe MIDlet deve ser importada no incio da aplicao, ou seja, a

22

classe principal do aplicativo deve ser uma subclasse da classe MIDlet, este deve ser empacotado em um arquivo.jar e o mesmo necessita ser pr-verificado. Aps a aplicao ter sido compilada, esta necessita passar pelo processo de verificao, processo este somente existente para aplicaes em J2ME. A memria de dispositivos portteis muito pequena, portanto, o perfil MIDP e a configurao CLDC especificaram que o processo de verificao do bytecode se daria em duas partes. Forma externa ao dispositivo, arquivos de classes so verificados e recompilados num formato que possa ser manipulado facilmente pelo segundo passo. No dispositivo realizado o segundo passo da verificao aps as classes serem carregadas. Caso algum dos arquivos de classe no tenha sido pr-verificado, ser rejeitado. Por isso a necessidade de pr-verificao dos arquivos. Esse procedimento importante, pois uma das bases para o modelo de segurana em tempo de execuo Java. Na verso J2ME Wireless esse processo realizado automaticamente.

2.4.1 O Ciclo de Vida de Um Midlet


O ciclo de vida de um MIDlet composto de trs mtodos obrigatrios. Conforme as Figura 4 e 5:

Figura 4: Os trs mtodos bsicos que compem o ciclo de vida de uma MIDLet Protected void startApp(){}: Este mtodo responsvel por iniciar a aplicao. A inicializao da aplicao deve estar alocada neste mtodo.

23

Protected void pauseApp(){}: Este mtodo responsvel por pausar a aplicao mediante interrupes. Neste caso, a aplicao permanece executando no dispositivo at que seja reiniciada. Protected void destroyApp(boolean arg){}: Esse mtodo disparado para destruir a aplicao, ou seja, finaliz-la. Quando o mtodo destroyApp acionado, a aplicao fechada e todas as suas instncias so apagadas da memria. O parmetro booleano, caso seja true (verdadeiro), fecha a aplicao sem aviso prvio. Caso seja false (falso) o dispositivo avisa que quer destruir o MIDlet e este por sua vez, poder executar uma Exception de troca de estado para avisar ao dispositivo sobre uma tarefa importante que est realizando. Com o ambiente de desenvolvimento definido, pode-se criar um novo projeto MIDlet e em seguida criar uma classe MIDlet, a qual ser criada com os mtodos padres que so necessrios para o funcionamento adequado de uma MIDlet em um aparelho celular.

Figura 5: Ciclo de Vida das MIDlets

24

2.5 Outras Tecnologias - Android


Android um ambiente operacional baseado no kernel Linux V2.6, um produto do Open Handset Alliance2, grupo liderado pelo Google. Os aplicativos Android so gravados na linguagem de programao Java e so executados em uma DVM(Dalvik Virtual Machine), diferentemente da JVM (Java Virtual Machine) para a plataforma J2ME. A arquitetura do Android pode ser definida como uma pilha de softwares, onde cada camada da pilha agrupa programas com funes especficas. A base da pilha o kernel, que inclui os programas de gerenciamento de memria, as configuraes de segurana, o software de gerenciamento de energia e vrios drivers de hardware para o controle do mesmo, como por exemplo, cmeras fotogrficas. O prximo nvel inclui as bibliotecas do Android e a camada de tempo de execuo. A Figura 6 mostra a arquitetura de um sistema Android. A prxima camada o framework de aplicao que inclui os programas que gerenciam as funes do dispositivo, como alocao de recursos, mudana entre processos etc. No topo da pilha esto as aplicaes em si, onde se encontram as funes bsicas do dispositivo, como fazer chamadas telefnicas, acessar o navegador web ou acessar uma lista de contatos.

Figura 6: Arquitetura Android Fonte: http://www.redrails.com.br/2011/04/google-android-como-um-ambiente-dedesenvolvimento-de-aplicacoes-para-sistemas-de-decodificacao-de-dtv-tv-digital/ Um aplicativo Android consiste em uma ou mais das classificaes a seguir: Atividades - No momento que um usurio seleciona um aplicativo, uma atividade iniciada.
2

Grupo de companhias de hardware, software e telecomunicao dedicadas ao projeto de plataforma Android

25

Servios - Um servio deve ser utilizado para qualquer aplicativo que precise persistir por um longo perodo de tempo.

Provedores de contedo - gerencia o acesso aos dados que persistem, caso o aplicativo seja pequeno, no necessrio.

Receptores de transmisso - Utilizado para processar um elemento de dados ou para responder a um evento. As principais verses do Android lanadas no mercado at o presente momento so:

1.5 (Cupcake) - Primeira verso lanada em um grande nmero de aparelhos. 1.6 (Donut) - Utilizada em aparelhos com capacidade computacional limitada. 2.0 / 2.1 (Eclair) - Melhoria da verso 1.6. Ainda bastante utilizada. 2.2 (Froyo) - Melhorias na velocidade dos aplicativos e navegador. 2.3 (Gingerbread) - Verso para smartphones. 3.0 / 3.1 (Honeycomb) - Verses exclusivas para tablets.

2.5.1 Ambiente de implementao Android


Os ambientes de desenvolvimento suportados so: IDE Eclipse - Para o desenvolvimento de aplicaes na plataforma Android, possvel utilizar-se a IDE Eclipse ou outra IDE de acordo com a preferncia do desenvolvedor ou ainda utilizar editores de texto e ferramentas de linha de comando, pois o Android Plugin para Eclipse funciona simplesmente como um empacotador das ferramentas includas no SDK e, portanto, opcional. Recomenda-se: IDE Eclipse 3.5 (Galileo) ou superior; Eclipse JDT Plug-in (includo na maioria dos pacotes Eclipse IDE); Possibilidades de escolha de pacotes e ambientes de execuo: o Eclipse IDE para Java Developers; o Eclipse Classic (verses 3.5.1 ou superior); o Eclipse IDE para Java EE Developers; o JDK (Java Development Kit) verses 5 ou 6 ; o JRE (Java Runtime Environment) o Apache Ant 1.8 ou superior; SDK (Software Development Kit) O download do SDK est disponvel em arquivos

26

com extenso .zip e .exe para Windows, .zip para Mac OS X (Intel) e .tgz para Linux(i386). ADT (Android Development Tools) - Plugin que estende as capacidades do Eclipse para permitir a inicializao rpida de novos projetos Android, criar aplicaes para o usurio (UI), adicionar componentes baseados no Android Framework API, corrigir aplicaes usando as ferramentas Android SDK, e ainda exportar arquivos a fim de distribuir as aplicaes.

2.6 Outras tecnologias - Symbian


Symbian um Sistema Operacional voltado para o mercado de dispositivos embarcados, ou dispositivos mveis. um grupo composto pelas principais empresas do ramo de software para equipamentos portteis. O SO Symbian modular, ou seja, no possui uma interface definida, o que proporciona s empresas criarem sua prpria interface, podendo ser desde um simples sistema de texto em telas monocromticas at sistemas complexos com recursos mais avanados. O Sistema Operacional Symbian visa otimizao de seus recursos como bateria e memria, evitando seu desperdcio. um sistema de baixo custo, aberto, permite a instalao de softwares de terceiros, alm de permitir o desenvolvimento de aplicaes em diversas linguagens, tais como Java ME, Python, Ruby, entre outras.

2.6.1 Ambiente de implementao Symbian


O ambiente de implementao necessita das seguintes aplicaes: Java Runtime Environment - Ambiente de execuo Java; Prov uma base para a construo e execuo de diversas aplicaes. Active Perl - Ncleo para programao Perl. S60 Platform SDK for Symbian OS - Conjunto de softwares para o desenvolvimento de aplicaes para dispositivos mveis. Carbide - framework da Nokia baseado na IDE Eclipse para o desenvolvimento de software para mltiplas plataformas do Symbian OS e em mltiplas linguagens.

3. Instalao do Ambiente de Desenvolvimento


3.1 IDE Eclipse
Para o desenvolvimento de uma aplicao modelo foi utilizada a IDE Eclipse, desenvolvida por uma comunidade open source (cdigo livre) sem fins lucrativos, com o objetivo de proporcionar o desenvolvimento de softwares que auxiliam no desenvolvimento de sistemas. Para as aplicaes que visam ambiente Web, utilizou-se a tecnologia JSP (Java Server Pages) para a criao das pginas que fazem o acesso ao banco de dados e retornam os devidos resultados para a solicitao. Como servidor de aplicao foi utilizado o Glassfish3, em sua verso 2.1.

3.2 Banco de Dados


Uma ferramenta importante para o armazenamento das informaes necessrias de serem tratadas o banco de dados. Para tanto, utilizou-se o banco de dados PostgreSQL, que tambm de origem open source, com distribuio gratuita.

3.3 Emulador
A utilizao dos emuladores possibilita que a aplicao seja testada por meio do fornecimento de uma interface genrica de um dispositivo mvel. Desta forma no h a necessidade da gerao contnua de pacotes para a realizao desta tarefa. No software emulador exibido todo o funcionamento da aplicao. O emulador utilizado no projeto foi o SUN JAVA TOOLKIT, possibilitando a criao dos pacotes de arquivos com a extenso .JAR, formato no qual permitido o funcionamento de aplicaes nos celulares. A Figura 7 ilustra como exibido por meio do software emulador, um dispositivo genrico de celular.

Servidor de aplicao para compilao de arquivos Java

28

Figura 7: Simulao de um celular realizada pelo emulador.

3.4 Pacotes
Para o desenvolvimento de aplicaes mveis, faz-se necessrio que a IDE Eclipse possua suporte ao desenvolvimento de MIDlets, para isso, foi utilizado o pacote com as bibliotecas necessrias, para tal necessidade e disponibilizadas no site do EclipseME (http://sourceforge.net/projects/eclipseme/files/). O pacote possui os seguintes arquivos e diretrios conforme Figura 8:

Figura 8: Pacote contendo as bibliotecas necessrias ao desenvolvimento do projeto.

29

Os arquivo 'site.xml', features e plugings foram transferidos para o diretrio raiz do eclipse. Aps estas transferncias, o eclipse encontra-se com suporte ao desenvolvimento de aplicaes MIDlets. O prximo passo a instalao do software emulador (sun java toolkit), que pode ser encontrado no endereo: http://java.sun.com/products/sjwtoolkit/download.html. Aps a sua instalao, deve-se configurar o eclipse para que reconhea o emulador instalado. (http://eclipseme.org/docs/configuring.html#step3).

3.5 Passo a Passo


Os passos a seguir so aplicados em um ambiente linux de distribuio Ubuntu4: - O primeiro passo abrir o terminal e verificar se o Java encontra-se instalado na mquina de desenvolvimento, com o comando java -version, aparecendo informaes iguais ou semelhantes a Figura 9 porque significa que o Java est instalado corretamente.

Figura 9: Verificando a presena do Java na mquina de desenvolvimento - O prximo passo realizar o download e instalao do Eclipse, o exemplo em questo o Eclipse Galileo que encontra-se disponvel em http://www.eclipse.org/galileo e clicar na opo de download, Figura 10.

Figura 10: Site do Eclipse Galileo


4

Ubuntu um sistema operacional gratuito baseado em Linux mantido pela Canonical.

30

Com o download realizado, basta escolher um local para descompactar o pacote do Eclipse Galileo e torna-lo apto a ser utilizado, Figura 11.

Figura 11: Descompactando o Pacote do Eclipse Galileo Ao ser iniciado pela primeira vez, define-se o workspace5, Figura 12, aps, mostrado o ambiente de trabalho do Eclipse com suas abas e perspectivas, Figura 13.

Figura 12: Escolha de Workspace

Figura 13: O Ambiente do Eclipse Galileo

rea de trabalho para desenvolvimento

31

- O prximo passo realizar o download do EclipeME, disponvel em http://sourceforge.net/projects/eclipseme/files/, Figura 14.

Figura 14: Site do EclipseMe Com o download realizado, copia-se os arquivos contidos nos diretrios baixados, em seus respectivos diretrios no eclipse, para que o mesmo consiga trabalhar com MIDlets, Figura 15.

Figura 15: Esquerda, arquivos baixados a serem transferidos para o Eclipse Galileo

32

- O ltimo pacote a ser instalado o Sun Java Toolkit, disponvel em http://oracle.com/technetwork/java/download/135801.html, Figura 16.

Figura 16: Site da Oracle para download do Tollkit Com o download realizado, o passo seguinte realizar a instalao, abrindo o terminal do sistema e executando o arquivo, com o comando ./sun_java_wireless_toolkit-2.5.2_01linuxi486.bin., e aceitar os termos de utilizao, Figura 17.

Figura 17: Termo de Aceitao da Instalao do Sun Java Tollkit

33

Prosseguindo na instalao, escolha a opo 0 (zero) para inserir manualmente o path (caminho) do diretrio Java, recomenda-se que utilize o comando /usr/bin/X11, Figura 18.

Figura 18: Inserindo o path do diretrio Java Feito isto, defina o diretrio onde ser instalado o toolkit, Figura 19, e em seguida escolha a opo 0 (zero) para confirmar a instalao no diretrio informado e o toolkit estar disponvel para uso, Figura 20.

Figura 19: Inserindo diretrio para instalao

Figura 20: Confirma instalao do toolkit Aps a instalao concluda, deve aparecer uma resposta como na Figura 21:

Figura 21: Resultado instalao do toolkit Voltando ao eclipse, j possvel realizar a criao de um projeto do tipo MIDlet, que por sua vez vem preparado para o desenvolvimento de aplicativos para dispositivos mveis. Agora, com todos os pacotes necessrios instalados, aplica-se a criao de um projeto do tipo MIDlet e configura-lo para que o mesmo funcione devidamente, para isso, realiza-se

34

as seguintes instrues: - Clicar em File > New > Project; - Escolher a pasta J2ME; - Duplo clique sobre J2ME Midlet Sute, Figura 22; - Dar nome ao Projeto, Figura 23;

Figura 22: Janela com as opes de criao de uma MIDlet

Figura 23: Janela de criao de um projeto MIDlet

35

- Configurar o Emulador no projeto, informando o dispositivo que ir ser utilizado, Figura 24;

Figura 24: Importando emulador para o projeto

- Clicar em Next seguido de Finish para criar o projeto MIDlet, Figura 25.

Figura 25: Finalizando a criao do projeto MIDlet

36

Com o projeto criado, tem-se a seguinte viso das camadas de um projeto MIDlet, Figura 26.

Figura 26: Viso do eclipse com o projeto MIDlet criado No projeto MIDlet criado, pode-se ver uma estrutura interna de funcionamento pr definida, uma delas o arquivo com exteno JAD, onde ficam armazenadas as informaes como nome, tamanho, verso, configurao dentre outras opes, como pode-se ver na Figura 27.

Figura 27: Viso das opes de configurao do arquivo JAD

4. Desenvolvimento da Aplicao
Para que seja criada uma aplicao para celular utilizando-se a tecnologia Java, necessrio fazer uso da classe MIDlet, a qual fornece suporte funcionalidades e acesso a mtodos que os celulares j identificam e reconhecem, para tratar as informaes, a partir desse ponto, a implementao de aplicaes torna-se possvel da forma que for desejada. A aplicao tem por necessidade fazer a conexo com um banco de dados para a transmisso das informaes, utilizou-se a rede Wi-Fi para estabelecer a conexo primeiramente ao servidor web, onde acessado via url os valores para a consulta ao banco. Este procedimento necessrio, pois, atualmente, ainda no est disponvel tecnologia para que o celular interaja diretamente com um banco de dados convencional. Uma pgina web comum se encarrega de criar uma espcie de ponte entre o dispositivo e o banco de dados, desta forma, esta pgina faz o acesso ao banco e retorna a solicitao para o aparelho de celular. O funcionamento realizado com a passagem de parmetros para uma url determinada, onde, receber os parmetros e far o que est programado para realizar (inserir, alterar, excluir, listar), retornando os valores desejados, os quais sero repassados para a MIDlet que exibir na tela do celular. O funcionamento de uma MIDlet realizando conexo com o banco de dados, possvel com qualquer que seja o banco de dados, desde que o mesmo seja acessado por uma pgina de servidor web, podendo ser em qualquer linguagem, desde que a mesma atenda a pr-condio da possibilidade de receber parmetros. A aplicao MIDlet necessitou de mtodos para o tratamento do envio e recebimento dos parmetros, uma vez que, a passagem de parmetros que contenha em seu valor espaos em branco, ocorrer em erro na requisio, no realizando a tarefa como desejado, para isto, foram substitudos os caracteres referentes ao espao em branco pelo %20 que representa o mesmo caracter.

5. Concluso
Os dispositivos mveis tm disseminado em todas as classes sociais e em principal aos alunos que podem acessar Servidores de dados sem custo. Isto motiva a construo desta aplicao para utilizar o celular como meio de acesso Servidores de dados, sem a utilizao de internet. O desenvolvimento da aplicao de acesso a banco de dados para dispositivos mveis foi possvel utilizando-se as ferramentas e tecnologias adequadas, bem como a utilizao de banco de dados e servidor mais apropriados, embora fosse possvel o uso de outros bancos, servidores e linguagens. Por meio da utilizao das redes sem fio estabeleceu-se a transmisso de dados, pois esta constitui hoje uma revoluo na forma de comunicao podendo ter seu alcance geogrfico limitado ou no, o que oferece suporte implementao de diferentes tipos de sistemas. O uso dos aparelhos mveis vem se tornando cada vez mais crescentes, dada a popularizao de seu custo e disponibilidade de servio a qualquer hora e em qualquer lugar. O projeto desenvolvido constitui uma alternativa a diversos sistemas j existentes no mercado, possibilitando a vantagem da comodidade e disponibilidade de acesso a diversas funcionalidades, dispensando o uso de um computador. Portanto o sistema apresenta condies para ser implementado e utilizado para as mais diversas reas, salvo observadas as devidas requisies podendo futuramente ser utilizado para diversas aplicaes educacionais como o aluno acessar ao registro acadmico acessar a materiais de apoio inserido pelo seu professor, entre outros diversos recursos que poderiam ser disponibilizados, ampliando o meio de acesso informao.

6. Referncias Bibliogrficas
CAGNOTTO, Vincius, Desenvolvimento J2ME Criando seu Ambiente. Disponvel em: <http://viniciuscagnotto.wordpress.com/2010/03/19/desenvolvimento-j2me-criando-seuambiente/> . Acessado em: 25/10/2010.

CERT.BR, Cartilha de segurana: redes de banda larga e sem fio. Disponvel em: <http://cartilha.cert.br/bandalarga/sec2.html>. acessado em: 09/05/2011

ECLIPSE

ME,

Configurao

EclipseME

and

Eclipse

Disponvel

em:

<http://eclipseme.org/docs/configuring.html#step3>. Acessado em: 24/10/2010.

ECLIPSE

ME,

Creating

new

J2ME

MIDlet

Project.

Disponvel

em:

<http://eclipseme.org/docs/createProject.html#convert>. Acesso em: 24/10/2010.

FERNANDES, Rodolfo Chaves. Iniciando no desenvolvimento com java me. Disponvel em: <http://www.javamovel.com/2010/10/iniciando-no-desenvolvimento-com-java.html> Acessado em: 26/10/2010. .

HOWELL, Rick. WAP Wireless Application Protocol. So Paulo: Makron Books, 2001.

MARTINS, Renato Passarinho. Java2ME ou J2ME - Tutoriais de programao em portugus. Disponvel em: <http://www.wirelessbrasil.org/wirelessbr/secoes/sec_java2me.html> .

Acessado em: 20/10/2010.

MATTOS, rico Tavares de. Programao Java para wireless - Aprenda a desenvolver sistemas em J2ME!. So Paulo: Digerati Booksm, 2005.

NEITZKE,

Neri,

Canoas

RS.

Java

ME

II.

Disponvel

em:

<http://www.youtube.com/user/nerineitzke> . Acessado em: 26/10/2010.

ORACLE,

que

tecnologia

"Mobile"

Java?

Disponvel

em:

<http://www.java.com/pt_BR/download/faq/what_mj.xml>. Acessado em: 22/10/2010.

40

ORACLE, Tenho o KVM instalado em meu celular. O que isso?. Disponvel em: <http://www.java.com/pt_BR/download/faq/what_kvm.xml> . Acessado em: 22/10/2010.

ORACLE,

que

J2ME?.

Disponvel

em:

<http://www.java.com/pt_BR/download/faq/whatis_j2me.xml>. Acessado em: 22/10/2010.

ORACLE, Sun Java Wireless Toolkit 2.5.2_01 for CLDC Download. Disponvel em: <http://www.oracle.com/technetwork/java/download-135801.html>. 25/10/2010. Acessado em:

ORACLE,

Java

ME

Technology

CLDC.

Disponvel

em:

<http://www.oracle.com/technetwork/java/javame/tech/cldc-jsp-141864.html>. Acessado em: 09/05/2011

ORACLE, Applets. Disponvel: < http://java.sun.com/applets/>. Acessado em> 25/05/2011

ORACLE,

java.awt

(Java

Plataform

SE

v1.4.2).

Disponvel

em:

<

http://download.oracle.com/javase/1.4.2/docs/api/java/awt/package-summary.html>. Acessado em: 25/05/2011

ORRICO, Angelo Carneiro Araujo, Salvador - BA. Desenvolvendo uma aplicao J2ME. Disponvel em: <http://www.devmedia.com.br/post-2020-Desenvolvendo-uma-aplicacao-

J2ME.html> . Acessado em: 23/10/2010.

ORRICO, Angelo Carneiro Araujo, Salvador - BA. Desenvolvendo uma aplicao JME Parte II. Disponvel em: <http://www.devmedia.com.br/space.asp?id=153854> . Acessado em: 23/10/2010.

SANTOS, Leandro Gontijo dos, Paranava - PR. Web Service: acessando o banco de dados pelo celular Dicas. Disponvel em: <http://www.guiadohardware.net/dicas/web-

service.html> . Acessado em: 20/10/2010.

SOARES, Luiz Fernando Gomes. Redes de Computadores. So Paulo: Campus, 1995.

7. Anexo 1

7.1 Diagramas

Figura 28: Diagrama de Sequncia - Funcionamento Geral da Aplicao

Figura 29: Diagrama de Caso de Uso

42

Figura 30: Diagrama de Classe - Pessoa

Figura 31: Diagrama de Estrutura de Dados - Pessoa

43

7.2 Telas no Smartphone Nokia N95


Sistema Operacional: Symbian Resoluo da tela: 240 x 320px Conectividade: WiFi, Bluetooth, WAP e 3G Java Integrado: sim Fonte: http://www.nokia.com.br/produtos/celulares/nokia-n95-/especificacoes-tecnicas

Figura 32: NOKIA N95 - Imagem do Celular Pedindo acesso rede Wi-Fi.

Figura 33: NOKIA N95 - Escolha da rede Wi-Fi

44

Figura 34: NOKIA N95 - Lista de Dados retornados da consulta ao bancos

Figura 35: NOKIA N95 - Escolhendo a opo de Inserir um Novo Registro

Figura 36: NOKIA N95 - Tela de Insero de Dados

Figura 37: NOKIA N95 - Dados inseridos na tela

45

Figura 38: NOKIA N95 - Gravando os dados inseridos, no banco de dados

Figura 39: NOKIA N95 - Lista Atualizada com o novo registro inserido

Figura 40: NOKIA N95 - Escolhendo opo de excluso.

Figura 41: NOKIA N95 - Tela Atualizada aps excluso de arquivo

46

7.3 Telas no Nokia N78


Resoluo da tela: 240 x 320 pixels Conectividade: WLAN67 IEEE802.11 b/g com suporte UpnP Java Integrado: sim Fonte: http://www.nokia.com.br/produtos/celulares/nokia-n78/especificacoes-tecnicas

Figura 42: NOKIA N78 - Imagem do Celular Pedindo acesso rede Wi-Fi

Figura 43: NOKIA N78 - Dados inseridos na tela

47

Figura 44: NOKIA N78 - Escolhendo a opo de Gravar os dados inseridos na tela no banco de dados.

Figura 45: NOKIA N78 - Escolhendo a opo de Excluir os dados no banco de dados.

48

7.4 Telas no Smartphone SAMSUNG WAVE 525


Sistema Operacional: Bada Resoluo da tela : 240 x 400 pixels Tamanho da tela: 3.2" Conectividade: WiFi, Bluetooth e WAP Java Integrado: sim Fonte: http://www.samsung.com/br/consumer/cellular-phone/cellular-phone/smartphones/GTS5250HKLZTO/index.idx?pagetype=prd_detail&returnurl

Figura 47: SANSUMG WAVE 525- Lista Figura 46: SANSUMG WAVE 525Imagem do Celular Pedindo acesso rede Wi-Fi. de Dados retornados da consulta ao banco

49

Figura 49: SANSUMG WAVE 525- Lista Figura 48: SANSUMG WAVE 525- Dados inseridos na tela atualizada com as informaes do banco de dados

50

Figura 50: SANSUMG WAVE 525Escolhendo a opo de Inserir um Novo Registro Figura 51: SANSUMG WAVE 525- Tela de Insero de Dados

51

7.5 Fotos da Apresentao do Pr-Projeto

Figura 52: Imagem da Apresentao da Aplicao modelo, celular conectado ao computador

Figura 53: Imagem do Celular conectado ao Notebook e um monitor espelhando a imagem do notebook.

52

Figura 54: Aluna Jaline mostrando o funcionamento do sistema

Figura 55: Imagem da Apresentao da Aplicao desenvolvida.

8. Anexo 2 O programa
Pessoa.java import java.util.Vector; import javax.microedition.lcdui.Alert; import javax.microedition.lcdui.AlertType; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Form; import javax.microedition.lcdui.List; import javax.microedition.lcdui.TextField; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; public class Pessoa extends MIDlet implements CommandListener{ private Vector vetorDados; private Display display; private AcessoWeb acessoWeb; private List lista; //ir retornar uma lista dos resultados do banco private Form formPessoa; private TextField tfNome,tfFone; private Command cmSair,cmNovo,cmExcluir,cmGravar,cmAlterar,cmVoltar,cmRecarregar; private boolean novoRegistro = true; String nomePessoa="",fonePessoa=""; public Pessoa() { } protected void startApp() throws MIDletStateChangeException { display = Display.getDisplay(this);//cria as configuraes de tela do celular lista = new List("Lista de Pessoas", List.EXCLUSIVE); acessoWeb = new AcessoWeb(this);

54

formPessoa = new Form("Cadastro de Pessoa"); cmSair = new Command("Sair", Command.EXIT, 1); cmNovo = new Command("Novo", Command.SCREEN, 1); cmExcluir = new Command("Excluir", Command.SCREEN, 2); cmAlterar = new Command("Alterar", Command.SCREEN, 3); cmRecarregar = new Command("Atualizar", Command.SCREEN, 4); cmGravar = new Command("Gravar", Command.SCREEN, 1); cmVoltar = new Command("Voltar", Command.SCREEN, 2); tfNome = new TextField("Nome", "", 50, TextField.ANY); tfFone = new TextField("Telefone", "", 8, TextField.DECIMAL); lista.addCommand(cmSair); lista.addCommand(cmNovo); lista.addCommand(cmExcluir); lista.addCommand(cmAlterar); lista.addCommand(cmRecarregar); formPessoa.append(tfNome); formPessoa.append(tfFone); formPessoa.addCommand(cmGravar); formPessoa.addCommand(cmVoltar); lista.setCommandListener(this); formPessoa.setCommandListener(this); display.setCurrent(lista); acessoWeb.lerPessoa(); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } public void commandAction(Command c, Displayable d) { if (c == cmSair){ try {

55

destroyApp(true); } catch (MIDletStateChangeException e) { e.printStackTrace(); } notifyDestroyed(); } else if(c == cmNovo){ novoRegistro = true; display.setCurrent(formPessoa); formPessoa.setTitle("Inserir Pessoa"); tfNome.setString(""); tfFone.setString(""); } else if(c == cmVoltar){ display.setCurrent(lista); } else if(c == cmGravar){ if(novoRegistro){ acessoWeb.inserirPessoa(tfNome.getString(), tfFone.getString()); } else { acessoWeb.alterarPessoa(tfNome.getString(), tfFone.getString(),nomePessoa, fonePessoa); } } else if(c == cmRecarregar){ recarregaLista(); display.setCurrent(new Alert("Sucesso", "Atualizado com Sucesso!", null, AlertType.ALARM)); } else if(c == cmExcluir){ acessoWeb.excluirPessoa(lista.getString(lista.getSelectedIndex())); } else if(c == cmAlterar){ novoRegistro = false; String nomeFone = lista.getString(lista.getSelectedIndex());

56

nomePessoa = nomeFone.substring(0,nomeFone.indexOf(" - ")); fonePessoa = nomeFone.substring(nomeFone.indexOf(" - ")+3); tfNome.setString(nomePessoa); tfFone.setString(fonePessoa); display.setCurrent(formPessoa); formPessoa.setTitle("Alterao de Pessoa"); } } public void recebeDadosPessoa(Vector vetorDados){ this.vetorDados = vetorDados; int tamanho = vetorDados.size(); for (int i=0;i<tamanho;i++){ String[] dados = (String[]) vetorDados.elementAt(i); lista.append(dados[1]+" - "+dados[2], null); } } public void resultadoInserePessoa(int caracterLido){ if(caracterLido == 's'){ display.setCurrent(new Alert("Informao","Gravao Realizada com Sucesso!",null,AlertType.INFO)); lista.append(tfNome.getString()+" - "+tfFone.getString(), null); display.setCurrent(lista); }else{ if(caracterLido == 'e'){ display.setCurrent(new Alert("Informao","NOME e TEL j existem!",null,AlertType.ERROR)); display.setCurrent(lista); } else { display.setCurrent(new Alert("Informao","No foi Possvel Gravar!",null,AlertType.ERROR)); display.setCurrent(lista); } } } public void resultadoExcluirPessoa(int caracterLido){ if(caracterLido == 's'){

57

display.setCurrent(new Alert("Informao","Excluso Realizada com Sucesso!",null,AlertType.INFO)); lista.delete(lista.getSelectedIndex()); display.setCurrent(lista); }else{ display.setCurrent(new Alert("Informao","No foi Possvel Excluir",null,AlertType.ERROR)); } } public void resultadoAlterarPessoa(int caracterLido){ if(caracterLido == 's'){ display.setCurrent(new Alert("Informao","Alterao Realizada com Sucesso!",null,AlertType.INFO)); recarregaLista(); display.setCurrent(lista); }else{ display.setCurrent(new Alert("Informao","No foi Possvel Alterar",null,AlertType.ERROR)); } } public void recarregaLista(){ lista.deleteAll(); acessoWeb.lerPessoa(); } }

58

AcessoWeb.java import java.io.IOException; import java.io.InputStream; import java.util.Vector; import javax.microedition.io.Connector; import javax.microedition.io.HttpConnection; import javax.microedition.io.SocketConnection; import com.sun.kvem.io.j2me.serversocket.Socket; public class AcessoWeb implements Runnable { private Vector vetorDados; private HttpConnection objConexaoHttp; private String url; private InputStream objInputStream; private Pessoa objPessoa; private Thread thread; private String acao = "lerPessoa"; //JSP //private String uri = "http://localhost:8080/ModeloWeb/"; //private String ext = ".jsp"; //PHP //private String uri = "http://localhost/www/monografia/"; private String uri = "http://leandrosazevedo.info/monografia/"; private String ext = ".php"; public AcessoWeb(Pessoa objPessoa){ this.objPessoa = objPessoa; } public void lerPessoa(){ acao = "lerPessoa";

59

url = uri+"listaPessoas"+ext; iniciaThread(); } public String modificaEspaco(String p){ return p = p.substring(0,p.indexOf(' '))+"%20"+p.substring(p.indexOf(' ')+1);; } public void excluirPessoa(String nomeFone){ acao = "excluirPessoa"; String nomePessoa="",fonePessoa=""; nomePessoa = nomeFone.substring(0,nomeFone.indexOf(" - ")); fonePessoa = nomeFone.substring(nomeFone.indexOf(" - ")+3); while(nomePessoa.indexOf(' ') != -1){ nomePessoa = modificaEspaco(nomePessoa); } while(fonePessoa.indexOf(' ') != -1){ fonePessoa = modificaEspaco(fonePessoa); } url = uri+"excluirPessoa"+ext+"?nomePessoa="+nomePessoa+"&telefonePessoa="+fonePessoa; iniciaThread(); } public void alterarPessoa(String novoNome,String novoTelefone,String antigoNome,String antigoTelefone){ acao = "alterarPessoa"; while(novoNome.indexOf(' ') != -1){ novoNome = modificaEspaco(novoNome); } while(antigoNome.indexOf(' ') != -1){ antigoNome = modificaEspaco(antigoNome); } url = uri+"alterarPessoa"+ext+"?novoNomePessoa="+novoNome+"&novoTelefonePessoa="+novo Telefone+"&nomePessoa="+antigoNome+"&telefonePessoa="+antigoTelefone;

60

iniciaThread(); } public void inserirPessoa(String nomePessoa, String telefonePessoa){ acao = "inserePessoa"; while(nomePessoa.indexOf(' ') != -1){ nomePessoa = modificaEspaco(nomePessoa); } url = uri+"inserirPessoa"+ext+"?nomePessoa="+nomePessoa+"&telefonePessoa="+telefonePessoa ; iniciaThread(); } public void run() { System.out.println("Inicando o public void run()"); try{ if(acao.equals("lerPessoa")){ System.gc();//limpa dados vazios de objetos na memria vetorDados = new Vector();//ira armazenar os dados para jogar na tela do celular String[] dados; objConexaoHttp = (HttpConnection) Connector.open(url); if(objConexaoHttp.getResponseCode() == HttpConnection.HTTP_OK){ objInputStream = objConexaoHttp.openInputStream();//todo o conteudo resultado da pesquisa da url System.out.println("Http OK"); int i = 1, caracterLido = objInputStream.read();//retorna de 0 a 255 na tabela ascii StringBuffer stringBuffer = new StringBuffer(); while(caracterLido != '@'){ dados = new String[3]; while(caracterLido != ','){//lendo o codigo da pessoa stringBuffer.append((char) caracterLido);

61

caracterLido = objInputStream.read(); } System.out.println("Cdigo = "+stringBuffer.toString().trim()); dados[0] = stringBuffer.toString().trim(); stringBuffer.delete(0, stringBuffer.length());//limpando para nao acumular caracterLido = objInputStream.read(); while(caracterLido != ','){//lendo o nome da pessoa stringBuffer.append((char) caracterLido); caracterLido = objInputStream.read(); } System.out.println("Nome = "+stringBuffer.toString().trim()); dados[1] = stringBuffer.toString().trim(); stringBuffer.delete(0, stringBuffer.length());//limpando para nao acumular caracterLido = objInputStream.read(); while(caracterLido != '#'){//Lendo o telefone da pessoa stringBuffer.append((char) caracterLido); caracterLido = objInputStream.read(); } System.out.println("Telefone = "+stringBuffer.toString().trim()); dados[2] = stringBuffer.toString().trim(); stringBuffer.delete(0, stringBuffer.length()); caracterLido = objInputStream.read(); vetorDados.addElement(dados); } objPessoa.recebeDadosPessoa(vetorDados); objInputStream.close(); System.gc(); }

62

} else if(acao.equals("inserePessoa")){ objConexaoHttp = (HttpConnection) Connector.open(url); if(objConexaoHttp.getResponseCode() == HttpConnection.HTTP_OK){ System.gc(); System.out.println("Http OK no Insere Pessoa"); objInputStream = objConexaoHttp.openInputStream();//todo o conteudo resultado da pesquisa da url int caracterLido = objInputStream.read(); while(caracterLido != '@'){ if(caracterLido == 10){ caracterLido = objInputStream.read(); continue; } objPessoa.resultadoInserePessoa(caracterLido); caracterLido = objInputStream.read(); } objInputStream.close(); System.gc(); } } else if(acao.equals("excluirPessoa")){ objConexaoHttp = (HttpConnection) Connector.open(url); if(objConexaoHttp.getResponseCode() == HttpConnection.HTTP_OK){ System.gc(); System.out.println("Http OK no Excluir Pessoa"); objInputStream = objConexaoHttp.openInputStream();//todo o conteudo resultado da pesquisa da url int caracterLido = objInputStream.read(); while(caracterLido != '@'){ if(caracterLido == 10){ caracterLido = objInputStream.read(); continue; }

63

objPessoa.resultadoExcluirPessoa(caracterLido); caracterLido = objInputStream.read(); } objInputStream.close(); System.gc(); } } else if(acao.equals("alterarPessoa")){ objConexaoHttp = (HttpConnection) Connector.open(url); if(objConexaoHttp.getResponseCode() == HttpConnection.HTTP_OK){ System.gc(); System.out.println("Http OK no Alterar Pessoa"); objInputStream = objConexaoHttp.openInputStream(); int caracterLido = objInputStream.read(); while(caracterLido != '@'){ if(caracterLido == 10){ caracterLido = objInputStream.read(); continue; } objPessoa.resultadoAlterarPessoa(caracterLido); caracterLido = objInputStream.read(); } objInputStream.close(); System.gc(); } } } catch (IOException io) { System.out.println("Erro de IOException "+io); } catch (SecurityException se) { System.out.println("Erro de SecurityException "+se); } }

64

public void iniciaThread(){ System.out.println("Inicia Thread"); thread = new Thread(this); thread.start(); System.out.println("Startou a Thread"); } }

65

inserirPessoa.jsp <%@page import="com.sun.corba.se.spi.orbutil.fsm.Guard.Result"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF8"%> <%@ page import="java.sql.*"%> <% String driver = "org.postgresql.Driver"; String url = "jdbc:postgresql://localhost:5432/estoque"; String usuario = "postgres"; String senha = "senha"; Connection conexao; Statement statement; ResultSet resultSet; try { Class.forName(driver).newInstance(); conexao = DriverManager.getConnection(url,usuario,senha); statement = conexao.createStatement(); String sql = "insert into pessoa (nome,telefone) values ('"+request.getParameter("nomePessoa")+"','"+request.getParameter("telefonePessoa")+"')"; int gravou = statement.executeUpdate(sql);// 0 ou 1 if(gravou == 1){ out.print("s@"); System.out.println("IP do CLIENTE: "+request.getRemoteAddr()); }else{ out.print("f@"); } } catch(Exception e){ out.print(e+"f@"); } %>

66

alterarPessoa.jsp <%@ page import="com.sun.corba.se.spi.orbutil.fsm.Guard.Result"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF8"%> <%@ page import="java.sql.*"%> <% String driver = "org.postgresql.Driver"; String url = "jdbc:postgresql://localhost:5432/estoque"; String usuario = "postgres"; String senha = "senha"; Connection conexao; Statement statement; ResultSet resultSet; try { Class.forName(driver).newInstance(); conexao = DriverManager.getConnection(url, usuario, senha); statement = conexao.createStatement(); String sql = "UPDATE pessoa SET nome = '" + request.getParameter("novoNomePessoa") + "', telefone = '" + request.getParameter("novoTelefonePessoa") + "' WHERE nome = '" + request.getParameter("nomePessoa") + "' AND telefone = '" + request.getParameter("telefonePessoa") + "'"; int excluiu = statement.executeUpdate(sql);// 0 ou 1 if (excluiu == 1) { out.print("s@"); } else { out.print("f@"); } } catch (Exception e) { out.print(e + "f@"); } %>

67

listaPessoa.jsp <%@page import="com.sun.corba.se.spi.orbutil.fsm.Guard.Result"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF8"%> <%@ page import="java.sql.*"%> <% String driver = "org.postgresql.Driver"; String url = "jdbc:postgresql://localhost:5432/estoque"; String usuario = "postgres"; String senha = "senha"; Connection conexao; Statement statement; ResultSet resultSet; try { Class.forName(driver).newInstance(); conexao = DriverManager.getConnection(url,usuario,senha); statement = conexao.createStatement(); resultSet = statement.executeQuery("select * from pessoa"); String listaDados = ""; while(resultSet.next()){ out.print(resultSet.getInt(1)); out.print(","+resultSet.getString(2)); out.print(","+resultSet.getString(3)+"#"); } } catch(ClassNotFoundException Driver){ out.print("Driver no Localizado: "+Driver); } catch(SQLException Fonte){ out.print("Deu erro de conexao com a fonte de dados: "+Fonte); } out.print("@"); System.out.println("o celular me acessou!"); %>

68

excluirPessoa.jsp <%@page import="com.sun.corba.se.spi.orbutil.fsm.Guard.Result"%><%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*"%> <% String driver = "org.postgresql.Driver"; String url = "jdbc:postgresql://localhost:5432/estoque"; String usuario = "postgres"; String senha = "senha"; Connection conexao; Statement statement; ResultSet resultSet; try { Class.forName(driver).newInstance(); conexao = DriverManager.getConnection(url,usuario,senha); statement = conexao.createStatement(); String sql = "delete from pessoa where nome = '"+request.getParameter("nomePessoa")+"' AND telefone = '"+request.getParameter("telefonePessoa")+"'"; int excluiu = statement.executeUpdate(sql);// 0 ou 1 if(excluiu == 1){ out.print("s@"); }else{ out.print("f@"); } } catch(Exception e){ out.print(e+"f@"); } %>

You might also like