Professional Documents
Culture Documents
Trabalho apresentado ao Instituto Federal Fluminense como requisito parcial para a concluso do curso de Tecnologia em Anlise e Desenvolvimento de Sistemas.
Monografia apresentada ao Instituto Federal Fluminense, como requisito parcial para concluso do curso Tecnlogo em Anlise e Desenvolvimento de Sistema.
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
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.
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.
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
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
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.
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.
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.
17
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
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.
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).
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;
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
- 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.
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.
24
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
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.
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.
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.
28
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:
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).
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.
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.
31
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.
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 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;
35
- Configurar o Emulador no projeto, informando o dispositivo que ir ser utilizado, Figura 24;
- Clicar em Next seguido de Finish para criar o projeto MIDlet, Figura 25.
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.
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:
ECLIPSE
ME,
Creating
new
J2ME
MIDlet
Project.
Disponvel
em:
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> .
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:
ORACLE,
que
tecnologia
"Mobile"
Java?
Disponvel
em:
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:
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:
ORACLE,
java.awt
(Java
Plataform
SE
v1.4.2).
Disponvel
em:
<
ORRICO, Angelo Carneiro Araujo, Salvador - BA. Desenvolvendo uma aplicao J2ME. Disponvel em: <http://www.devmedia.com.br/post-2020-Desenvolvendo-uma-aplicacao-
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-
7. Anexo 1
7.1 Diagramas
42
43
Figura 32: NOKIA N95 - Imagem do Celular Pedindo acesso rede Wi-Fi.
44
45
Figura 39: NOKIA N95 - Lista Atualizada com o novo registro inserido
46
Figura 42: NOKIA N78 - Imagem do Celular Pedindo acesso rede Wi-Fi
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
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
Figura 53: Imagem do Celular conectado ao Notebook e um monitor espelhando a imagem do notebook.
52
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@"); } %>