Vous êtes sur la page 1sur 68

UNIO DINMICA DE FACULDADES CATARATAS UDC SISTEMAS DE INFORMAO

ANLISE SOBRE AS PLATAFORMAS DE DESENVOLVIMENTO PARA DISPOSITIVOS MVEIS COM ESTUDO DE CASO EM ANDROID

AGNO SILVEIRA

Foz do Iguau 2012

UNIO DINMICA DE FACULDADES CATARATAS UDC SISTEMAS DE INFORMAO

ANLISE SOBRE AS PLATAFORMAS DE DESENVOLVIMENTO PARA DISPOSITIVOS MVEIS COM ESTUDO DE CASO EM ANDROID

AGNO SILVEIRA

Anteprojeto de Graduao submetido como requisito parcial por Agno Silveira, acadmico do Curso de Graduao de Sistemas de Informao obteno do grau de Bacharel em Sistemas de Informao, sob a orientao do professor Luciano S. Cardoso da UDC - Unio Dinmica de Faculdades Cataratas - Foz do Iguau, Paran.

Foz do Iguau 2012


2

TERMO DE APROVAO

ANLISE SOBRE AS PLATAFORMAS DE DESENVOLVIMENTO PARA DISPOSITIVOS MVEIS COM ESTUDO DE CASO EM ANDROID

Trabalho de Concluso de Curso apresentado Faculdade Dinmica das Cataratas, Curso de Sistemas de Informao para obteno do grau de Bacharel em Sistemas de Informao aprovado pela banca examinadora formada por:

________________________________________ Orientador: Professor Luciano S. Cardoso

BANCA EXAMINADORA:

________________________________________ Avaliador: Professor Carlos Massami Kaneko

________________________________________ Avaliador: Professor Adlio de Souza Conter

Foz do Iguau, ____________________ de 2012.

AGRADECIMENTOS Em primeiro lugar, agradeo a Deus, por me abenoar com a capacidade de estar concluindo esta etapa de minha vida e por estar sempre presente nos momentos difceis no decorrer desta caminhada. Aos amigos que conheci durante o curso, e meus familiares, principalmente minha me Izolete Boeno Silveira, por sempre me dar apoio moral e incentivo. Aos professores da UDC Unio Dinmica de Faculdade Cataratas, por auxiliarem no desenvolvimento deste trabalho sempre que necessrio. Por fim agradeo especialmente meu supervisor de estgio Professor Luciano S. Cardoso, que me co-orientou durante todas as etapas da monografia e nunca hesitou em oferecer auxilio durante o desenvolvimento deste trabalho.

RESUMO Com os avanos tecnolgicos ocorridos com a tecnologia de telefonia mvel e smartphones de modo geral como capacidade de memria e processamento, a mobilidade dos celulares traz uma nova realidade para as empresas da rea de tecnologia mobile, trazendo rapidamente novidades para os usurios finais. O crescimento do uso de dispositivos mveis, a quantidade de plataformas como Android, iOS e ambientes de desenvolvimento, tambm cresceu proporcionalmente. Sero apresentadas neste trabalho algumas ferramentas, aplicativos, e uma anlise sobre as plataformas de desenvolvimento para dispositivos mveis mais utilizadas atualmente. Aps analisar um estudo sobre as plataformas de dispositivos moveis, ser elaborado um estudo de caso onde ser desenvolvido um aplicativo para plataforma Android.

Palavras-chave: Smartphones, Plataformas, Desenvolvimento, Android.


5

ABSTRACT With technological advances in mobile technology and smartphones in general as memory capacity and processing, the mobility of mobile brings a new reality for businesses in the area of mobile technology, quickly bringing new products to end users. The growing use of mobile devices, the number of platforms such as Android, iOS and development environments, has also growing proportionately. Will be presented in this paper some tools, applications, and an analysis of the development platforms for mobile devices used nowadays. After reviewing a study on mobile device platforms, will produce a case study where an application will be developed for the Android platform.

Keywords: Smartphones, Platforms, Development, Android.


6

LISTA DE FIGURAS Figura 1: Arquitetura da plataforma S60 ................................................................. 20 Figura 2: Visual Studio ............................................................................................ 21 Figura 3: Eclipse...................................................................................................... 24 Figura 4: Extenses Java ........................................................................................ 25 Figura 5: Arquitetura do J2ME................................................................................. 27 Figura 6: NetBeans ................................................................................................. 28 Figura 7: Camadas da Arquitetura Android ............................................................. 40 Figura 8: Emulador Android .................................................................................... 37 Figura 9: IDE Eclipse com SDK Android ................................................................ 38 Figura 10: Aplicativos gratuitos e pagos para Android e iOS .................................. 42 Figura 11: IDE Xcode ............................................................................................. 32 Figura 12: Arquitetura iOS. ..................................................................................... 33 Figura 13: Campos da IDE Eclipse para adicionar a SDK Android ........................ 45 Figura 14: Campos da IDE Eclipse para Criar um Novo Projeto Android ................ 46 Figura 15: Graphical Layout .................................................................................... 47 Figura 16: Emulador avd_2_1 ................................................................................. 48

LISTA DE QUADROS Quadro 1: SO de smartphones mais vendidos no 1T12.........................................18

LISTA DE ABREVIATURAS E SIGLAS API - Application Programming Interface MVC - Model View Controller GPS - Global Positioning System EDGE- Enhanced Data-Rates for Global Evolution 3G - Terceira Gerao Wi-Fi- Wireless Fidelity PDA - Personal Digital Assistant J2ME - Java 2 Mobile Edition, J2SE - Java 2 Stander Edition J2EE - Java 2 Enterprise Edition SDK - Software Develoment kit JDK - Java Develoment kit WAP - Wireless Apllications Protocol VM - Virtual Machine NS - NextStep UI - User Interface AVD - Android Virtual Device USB - Universal Serial Bus GUI - (Graphical User Interface)

SUMRIO 1. INTRODUO .................................................................................................... 11 1.1. OBJETIVO GERAL .......................................................................................... 12 1.2. OBJETIVOS ESPECFICOS ............................................................................ 12 1.3. JUSTIFICATIVA ............................................................................................... 12 1.4. PROBLEMA .................................................................................................... 13 1.5. METODOLOGIA ............................................................................................... 13 1.6. ESTRUTURA DO TRABALHO ......................................................................... 14 2. DISPOSITIVOS MVEIS .................................................................................... 15 2.1. CONCEITO E FUNCIONALIDADES ................................................................ 15 3. DESENVOLVIMENTO PARA SMARTPHONES ................................................ 18 3.1.SYMBIAN OS ................................................................................................... 19 3.1.1. Plataformas Symbian. .................................................................................. 19 3.1.1.1. Plataforma S60 ........................................................................................... 19 3.2. BLACKBERRY OS ........................................................................................... 22 3.2.1. Plataforma BlackBerry e Desenvolvimento ................................................... 22 3.3 PLATAFORMA J2ME ........................................................................................ 25 3.3.1. Arquitetura J2ME ........................................................................................... 26 3.3.2 Ambiente para desenvolvimento J2ME. ......................................................... 28 4. iOS ...................................................................................................................... 30 4.1. PLATAFORMA iOS E DESENVOLVIMENTO ................................................. 31 4.2. ARQUITETURA DO iOS .................................................................................. 33 4.3. APLICATIVOS iOS ........................................................................................... 34 5. ANDROID............................................................................................................ 35 5.1. DEFINIO ...................................................................................................... 35 5.2. DESENVOLVIMENTO PARA PLATAFORMA ANDROID ................................ 36 5.3. ARQUITETURA DA PLATAFORMA ANDROID ............................................... 39 5.4. APLICATIVOS ANDROID ............................................................................... 42 6. ESTUDO DE CASO-DESENVOLVIMENTO DE APLICATIVO ANDROID ......... 44 7. CONCLUSO ..................................................................................................... 50 7.1. TRABALHOS FUTUROS ................................................................................. 51 8. REFERNCIAS BIBLIOGRFICAS ................................................................... 52 9. ANEXO CDIGO FONTE ............................................................................... 56
10

1. INTRODUO Com o grande avano da tecnologia os dispositivos mveis esto se tornando cada vez mais poderosos com relao s suas capacidades de comunicao, armazenamento e processamento, alm de estarem cada vez mais acessveis aos consumidores, que so atrados por uma grande diversidade de aplicaes, navegador de internet, banco de dados integrado, jogos, integrao com outros sistemas, GPS, conectividades diversas, como Bluetooth, EDGE, 3G e Wi-Fi. Dentre esses dispositivos mveis, esto includos handhelds, PDAs, tablets e telefones celulares (smartphones), que o foco deste trabalho. Os dispositivos mveis oferecem conectividade e poder de uso em qualquer lugar e em qualquer momento, tornando-se importantes tanto para uso pessoal ou profissional. Com o crescimento do uso de dispositivos mveis, a quantidade de plataformas e ambientes de desenvolvimento, tambm cresceu proporcionalmente, por este motivo a escolha de uma plataforma correta para o desenvolvimento de um projeto ou apenas um simples aplicativo, significa escolher uma soluo que oferea os melhores benefcios, em termos de custo, qualidade, e tempo de desenvolvimento para a finalizao do projeto. Sendo assim, sero apresentadas neste trabalho algumas ferramentas, aplicativos, e uma anlise sobre as plataformas de desenvolvimento para dispositivos mveis mais utilizadas atualmente e um estudo de caso onde ser desenvolvido um aplicativo para plataforma Android.

11

1.1.

OBJETIVO GERAL Elaborar uma anlise entre as plataformas de desenvolvimento para

dispositivos mveis, suas ferramentas, aplicaes, e criar um aplicativo para plataforma Android. 1.2. OBJETIVOS ESPECFICOS Expor os conceitos histricos das plataformas J2ME, Symbian, BlackBerry, Android e iOS; Apresentar as arquiteturas das plataformas citadas anteriormente; Expor os conceitos do Android Market, iPhone App Store e seus aplicativos; Fazer uma anlise das ferramentas de desenvolvimento para as plataformas citadas; Desenvolver um aplicativo para plataformas Android, com objetivo de expor o funcionamento da ferramenta de desenvolvimento. 1.3. JUSTIFICATIVA Este trabalho se justifica pela importncia do estudo sobre as plataformas de desenvolvimento para dispositivos mveis, e as tecnologias envolvidas nesta rea, alm da grande influncia no mercado de TI. Por estar em rpida e constante evoluo, importante fazer um estudo entre os principais ambientes de desenvolvimento, para que se possa saber como funciona uma plataforma de desenvolvimento para dispositivo mvel. Devido a esses fatores, h um intenso investimento na criao de plataformas que tornem o desenvolvimento de softwares mveis mais simples e economicamente viveis, sendo assim, a necessidade de estudos sobre ambientes de desenvolvimento para dispositivos mveis so de grande importncia.

12

1.4.

PROBLEMA Como so compostas as estruturas das plataformas, e como

desenvolver para dispositivos mveis?

1.5.

METODOLOGIA Este trabalho foi realizado atravs de pesquisas bibliogrficas

relacionadas s plataformas de desenvolvimento para dispositivos mveis, J2ME, Symbian, BlackBerry, Android e iOS. Foi utilizado como materiais de pesquisa livros e internet para a melhor qualidade da produo desta monografia. Aps o levantamento de material, foram expostos os conceitos das plataformas J2ME, Symbian, BlackBerry, Android e iOS, e tambm suas estruturas, arquiteturas e linguagens de desenvolvimento. O Projeto mostrar os conceitos das plataformas e aplicativos dos ambientes de desenvolvimento colocados anteriormente. Focando nas ferramentas para desenvolvimento. Esto expostos os conceitos do Android Market, iPhone App Store e seus aplicativos, por estarem relacionadas fortemente no mercado de TI para dispositivos mveis. Foi desenvolvido um aplicativo para plataforma Android, visando expor o funcionamento da ferramenta de desenvolvimento. Desta forma os procedimentos metodolgicos a serem desenvolvidos durante a execuo deste trabalho do a importncia devida ao seu contedo para a sua concluso com qualidade e desenvoltura.

13

1.6.

ESTRUTURA DO TRABALHO O captulo I traz a introduo, cuja temtica se baseia nos objetivos,

especificamente o objetivo geral e especfico. A justificativa do trabalho segue complementada pelo problema a ser resolvido atravs dos tpicos co-relacionados nas pginas a seguir. No captulo II esto expostos os conceitos e funcionalidades dos smartphones e alguns destes equipamentos, alm de um quadro dos sistemas operacionais mais vendidos mundialmente. O captulo III mostra uma abordagem das plataformas de desenvolvimento para smartphones mais utilizadas atualmente, seus conceitos, ambientes de desenvolvimento e principais caractersticas, as plataformas iOS e Android sero citadas nos captulos posteriores. O captulo IV faz uma abordagem sobre o sistema operacional iOS da Apple, seus conceitos, evoluo da tecnologia, arquitetura, principais aplicativos e seu ambiente de desenvolvimento. O captulo V mostra os conceitos do sistema operacional Android, suas caractersticas, arquitetura, aplicativos e sua plataforma de desenvolvimento, focando nos principais itens de o desenvolvimento para smartphones. O captulo VI expe um estudo de caso, onde ser desenvolvido um aplicativo para plataforma Android, visando expor a ferramenta para desenvolvimento.

14

2.

DISPOSITIVOS MVEIS muito comum nos dias atuais, celulares e outros dispositivos mveis

que funcionam como PDA, GPS, WAP, consoles, leitores de udio, navegador de internet, vdeo e texto, entre outras utilidades, tudo em um s aparelho. A mobilidade dos dispositivos mveis pode ser vista da seguinte forma, conforme exposto por Cavallini et al. (2010, p. 11), O digital o mundo que torna a nossa vida mais fcil e no mais complicada. O mobile quase um rgo humano que traz o digital a tiracolo e deixa a nossa vida mais prtica. Neste captulo sero expostos alguns conceitos sobre celulares, e as funcionalidades que os tornam cada vez mais indispensveis, j que cada vez mais os dispositivos mveis se tornam integrados e em alguns casos indispensveis para os usurios.

2.1.

CONCEITO E FUNCIONALIDADES Dentre os vrios dispositivos mveis que existe, o mais utilizado o

celular, mas a comunicao mobile vai alm deste aparelho. Segundo Cavallini et al. (2010, p. 12), Uma srie de outros aparelhos como o Kindle e o iPad podem utilizar a rede celular ou redes sem fio como o Wi-Fi para acessar a internet e outras funes avanadas, como, por exemplo, rodar aplicativos e jogos. Como acontece com os PCs, os smartphones no so todos iguais, porm na maioria das vezes eles podem executar o mesmo sistema operacional, mesmo se eles tiverem sido feitos por diferentes fabricantes. Como por exemplo, alguns modelos de dispositivos fabricados pela HTC e Samsung, utilizam o sistema operacional Android. No entanto, alguns sistemas operacionais, como o iOS, s podem ser executados em smartphones da Apple. Os principais recursos oferecidos atualmente nos smartphones so: Sistema Operacional: Programa ou conjunto de programas responsvel pelo gerenciamento de recursos do sistema;

15

Recursos de conectividade: Recursos utilizados para acessar redes 3G, WiFi, Bluetooth e GPS; Recursos Multimdia: Recursos utilizados para reproduzir arquivos de msica e vdeo em vrios formatos; Cmera: Recurso utilizado para tirar fotos e gravar vdeos; Touch-screen: Este recurso tem o mesmo propsito de um teclado, no entanto o funcionamento atravs de toques na tela do dispositivo. Ele foi popularizado pelo iPhone da Apple e atualmente utilizado em quase todos smartphones; Suporte a aplicativos: A possibilidade de instalar novos aplicativos amplia as funcionalidades do dispositivo proporcionando um funcionamento semelhante ao de um PC. A instalao de novos aplicativos pode ser feita atravs de diversas lojas on-line que disponibilizam aplicativos para download. Porm, nem todos os smartphones tm acesso aos mesmos aplicativos. Por exemplo, o iPhone acessa o App Store da Apple, enquanto aparelhos baseados na plataforma Android acessam o Android Market. Dentro do conceito histrico de dispositivos mveis, segundo Ferrari

(2011), se deu incio evoluo dos celulares em 1983, com o lanamento do Motorola Dyna TAC8000X, a antena (no retrtil) era responsvel por mais de um tero do tamanho do aparelho, guardava at 30 nmeros na memria e a bateria durava oito horas em espera. O iPhone foi lanado pela em 2007, e nos modelos atuais o aparelho possui o sistema operacional OS X, funes de iPod (outro eletrnico da mesma empresa), cmera digital de 8 megapixels, interface de multi-touch da tela, capacidade de at 64GB, conexo a internet via Wi-Fi ou 3G, software para downloads de aplicativos (App Store), que possui mais de 500.000 aplicativos com diversas funes, incluindo jogos, navegao GPS, redes sociais, publicidade, previso do tempo, bolsa de valores, Skype e chamadas com vdeo (FaceTime), o que o torna capaz de satisfazer as mais diversas necessidades dos usurios (APPLE, 2012). O Galaxy Note lanado final de 2011, com funes de tablet, possui agenda inteligente que permite o gerenciamento das atividades (S Planner), bloco

16

de notas otimizado (S Memo), capacidade de 32GB de memria, bateria de longa durao, 17 horas de conversao e 25 dias no modo de espera, possui uma interface que permite ver a caixa de entrada de e-mail e o corpo da mensagem na mesma tela, processador Dual Core de 1.4 GHz (SAMSUNG, 2012).

17

3.

DESENVOLVIMENTO PARA SMARTPHONES Existem vrias linguagens e plataformas utilizadas para

desenvolvimento de aplicativos, em diferentes sistemas operacionais, neste capitulo ser exposto algumas das plataformas mais utilizadas em relao ao nmero de dispositivos vendidos de cada plataforma, seus conceitos e bases para desenvolvimento com relao a dispositivos mveis, dando maior foco aos smartphones. A seguir o Quadro 1 ilustra os SOs de smartphones mais vendidos no 1T12:
Quadro 1. SO de smartphones mais vendidos mundialmente no 1T12 em milhares de unidades.

Sistema Operacional Android iOS Symbian Research In Motion (RIM) Bada Microsoft Outros Total
Fonte: (GARTNER, 2012).

1T12 Unidades 81,067.4 33,120.5 12,466.9 9,939.3 3,842.2 2,712.5 1,242.9 144,391.7

Market Share 1T12 (% ) 56,1 22,9 8,6 6,9 2,7 1,9 0,9 100

O motivo da escolha das plataformas para formar este trabalho foi o fato de que estas foram as mais utilizadas durante a evoluo da tecnologia para dispositivos mveis.

18

3.1.

SYMBIAN OS Segundo Jipping (2007), a Psion era uma pequena empresa Inglesa,

que comeou a produzir computadores de mo em 1984, tendo sistema operacional prprio, chamado EPOC, programado em C++. A Psion queria adaptar o EPOC para outros hardwares, como celulares e aparelhos de internet, foi ento que surgiu a oportunidade, onde a Psion e os lderes da indstria de telefonia mvel da poca, Nokia, Sony-Ericsson, Motorola e Panasonic formaram um ncleo do sistema operacional EPOC no final de 2000, que ficou chamado de Symbian OS.

3.1.1.

PLATAFORMAS SYMBIAN Como destaca Morimoto (2010), a famlia Symbian dividida em duas

plataformas parcialmente incompatveis. De um lado temos o S60, desenvolvido pela Nokia, e o UIQ, encontrado em aparelhos da Sony-Ericsson e da Motorola. O S60 e o UIQ so somente interfaces que rodam sobre o Symbian OS, incluindo aplicativos e bibliotecas de desenvolvimento. Entre os dois, o S60 o mais usado porque a Nokia vende um volume muito maior de aparelhos.

3.1.1.1.

PLATAFORMA S60 A plataforma SDK S60 foi criada com a finalidade de ser uma

plataforma para smartphones com Symbian OS desenvolvida pela Nokia Mobile Software, atualmente est licenciada para vrias outras fabricantes de dispositivos mveis no mundo (NOKIA DEVELOPER, 2012). A plataforma SDK S60 garante ao desenvolvedor que elementos especficos iro estar presentes em cada aparelho baseado em uma edio particular da plataforma. Isso feito utilizando a arquitetura, que consistem em: S60 UI style, S60 Applications, S60 Application Services, S60 Java, Technology Services, S60 Plataform Services e Extenes do Symbian OS construdas sobre o Symbian OS (NOKIA DEVELOPER, 2012).
19

A seguir a figura 1 ilustra a arquitetura da plataforma S60:

Figura 1. Arquitetura da plataforma S60. Fonte: (NOKIA DEVELOPER, 2012).

As aplicaes em Symbian OS seguem o padro de arquitetura de software clssico MVC (Model Viewel Controller). O nvel de suporte da estrutura, encapsula, da as informaes essenciais das classes e o resumo dos sistemas necessrios subjacentes a nvel de comportamento, em principio, um processo completo pode ser escrito sem qualquer outras dependncias diretas (JIPPING, 2007). Conforme explica Fitzek et al. (2010), a plataforma de desenvolvimento apenas suportada Windows e recomendvel que os usurios executem o Windows XP ou Windows Vista. Esta restrio devido ao fato de que algumas ferramentas na plataforma Symbian SDK S60 s esto disponveis em ambiente Windows. H, no entanto, um esforo contnuo para adicionar suporte oficial para outros ambientes de desenvolvimento como Linux ou Mac. Alm da exigncia do ambiente Windows, recomenda-se um PC razoavelmente rpido para o desenvolvimento, ou seja, um processador de 1800 MHz, 2GB RAM e espao livre em disco para as ferramentas, IDE e SDK. O Symbian OS muito verstil permitindo desenvolver aplicaes em diversas linguagens diferentes como Symbian C++, JavaME, C, entre outras. O

20

C++ como linguagem nativa do sistema possibilita que aplicaes escritas nesta linguagem obtenham acesso maior as APIs (Application Programming Interface) do sistema e desempenho superior se comparado a outras linguagens como Java. Dentre os ambientes para desenvolvimento de aplicaes esto, Microsoft Visual Studio C++ Professional, UIQ SDK for Symbian OS v7.0, Nokia Series 60 MIDP SDK v1.0, J2SE SDK, Wireless Developer Toolkit da Sun, Symbian OS v5 SDKs, Visual Basic 6.0 e Borland C++ (NOKIA DEVELOPER, 2012) A seguir a figura 2 ilustra a IDE Visual Studio com Emulador para SDK S60:

Figura 2. Visual Studio. Fonte: (SOFTWARE KNOWHOW, 2010).

Para que seja possvel utilizar o emulador durante o desenvolvimento, necessrio que o usurio esteja utilizando a verso mais atualizada do Java.

21

Conforme exposto por Fitzek et al. (2010, p. 14), para utilizar o emulador de telefone totalmente, necessrio o Java Runtime Environment. O emulador de telefone uma ferramenta valiosa no desenvolvimento e teste de aplicaes. preciso instalar a ltima verso do Java disponvel. Caso no tenha a verso atual do Java, ao tentar acessar as preferncias do emulador Symbian ir aparecer o seguinte erro, No possvel iniciar o gerenciador.

3.2.

BLACKBERRY OS O BlackBerry foi desenvolvido pela empresa canadense RIM

(Research In Motion), fundada em 1984 por Mike Lazaridis, e introduzido no mercado americano em janeiro de 1999, aps uma dcada de intensas pesquisas (BLACKBERRY, 2012), Conforme exposto por Dias (2011), o primeiro BlackBerry era uma espcie de pager bidirecional com teclado Qwerty que permitia a troca de informaes atravs de mensagens de texto com outros aparelhos, criando uma soluo mvel importante, foi somente com o desenvolvimento do Blackberry que a empresa conseguiu conquistar destaque no segmento de tecnologia. Rapidamente o novo produto se tornou uma tecnologia indispensvel como ferramenta para recepo automtica de mensagens de textos no caso de usurios mveis, alm de oferecer funes de organizador pessoal e aplicativos para dados empresariais. O BlackBerry possui o App World, este servio oferece aos usurios um ambiente de navegao para fazer downloads e atualizao de aplicativos.

3.2.1.

PLATAFORMA BLACKBERRY E DESENVOLVIMENTO Alguns dispositivos BlackBerry so baseados em C ++, mas os novos

suportam o J2ME (Java 2 Micro Edition), principalmente porque a tecnologia Java torna o desenvolvimento de aplicaes mais fcil. Sua plataforma independente elimina problemas de portabilidade, e sua coleta de lixo automtica permite que os desenvolvedores se concentrem na lgica do aplicativo ao invs de gerenciamento de memria (MAHMOUD, 2005).
22

A RIM possui mquina virtual Java prpria (JVM), compatvel com o J2ME, que suporta o CLDC (Connected Limited Device Configuration) e o MIDP (Perfil Mobile Information Device), adicionalmente, incorpora uma srie de APIs especficas do BlackBerry, que permitem o desenvolvimento de aplicaes mais sofisticadas e com visual similar ao das aplicaes nativas do Blackberry (KLEIN, 2008): CLDC (Connected Limited Device Configuration): a especificao do conjunto de interfaces e da mquina virtual Java para dispositivos mveis limitados em recursos; MIDP (Mobile Information Device Profile): um perfil do JavaME, baseado no CLDC, o ambiente JavaME mais popular hoje encontrado em celulares. Segundo exposto por Rizk (2009), para desenvolvimento J2ME para BlackBerry, necessrio instalar o JDK (Java Development Kit) ou kit de desenvolvimento de aplicativos, necessrio para compilar o widget BlackBerry, necessrio uma verso mnima do JDK 1.6, preciso tambm instalar a verso beta 3 do BlackBerry Widget Packager, verso de 32 bits para Windows XP e Windows Vista, atualmente no compatvel com sistemas operacionais de 64 bits ou com o Windows 7. Klein (2008) complementa que, depois deve-se combinar as ferramentas para desenvolvimento com uma IDE (Integrated Development Environment), ambiente integrado para desenvolvimento de software Java como Eclipse, Microsoft Visual Studio ou Netbeans. Existem vrios modelos de aparelhos BlackBerry com diferentes telas, teclados virtuais e resolues, para cada um existe recursos diferentes de se aplicar no momento do desenvolvimento. Como explica Rizk (2009), existem vrios modelos de dispositivos BlackBerry, onde as resolues de telas podem varias de 240 260-480 360. Alguns dos dispositivos tm um trackball ou ptica trackpad juntamente com o teclado. Alguns possuem teclados QWERTY completo, enquanto outros tm o teclado BlackBerry SureType, que tem uma ou duas letras por chave. O BlackBerry Storm pode apresentar diferentes tipos de teclados virtuais,
23

dependendo da orientao do dispositivo e as preferncias do usurio. A velocidade do processador e de memria pode variar de dispositivo para dispositivo, como tambm a velocidade da rede, e alguns recursos de hardware, tais como GPS, no esto disponveis em todos os dispositivos. O desenvolvedor deve estar ciente destas diferenas e projetar sua aplicao para trabalhar de acordo com o dispositivo BlackBerry. A seguir a figura 3 ilustra a ferramenta de desenvolvimento Eclipse:

Figura 3. Eclipse. Fonte: (DEVMOBILEBRASIL, 2011).

Os desenvolvedores podem acessar a BlackBerry Developer Zone, para aprender mais sobre os diversos mtodos de desenvolvimento para a plataforma e baixar ferramentas de desenvolvimento gratuitas para crias jogos, e aplicativos. Na BlackBerry Developer Zone o desenvolvedor ter acesso a documentaes de produtos, exemplos de cdigos e simuladores, e analisar o desempenho dos aplicativos (BLACKBERRY, 2012).

24

3.3.

PLATAFORMA J2ME Como descreve Piroumian (2002), Java 2 Micro Edition (J2ME) uma

plataforma inteiramente projetada com o intuito de atender as necessidades de desenvolvedores da rea de computao mvel. Pertencente a empresa Sun Microsystems, trata-se de uma verso reduzida da plataforma padro J2SE (Java 2 Standard Edition), que permite a produo de aplicaes para dispositivos mveis tais como telefones celulares, PDAs, smartphones, dentre outros. O que estes dispositivos tm em comum o fato de possurem pouco poder de processamento e pouca memria para suportar a J2SE usada em computadores desktop e servidores, da a necessidade de uma verso reduzida para a produo de materiais para tais dispositivos. Alm disso, compreende interfaces de usurio, modelos de segurana, protocolos de comunicao em rede e outras funcionalidades que, quando combinadas, constituem um ambiente de execuo Java otimizado para uso de memria, processamento e operaes de entrada e sada, conforme exposto por (PIROUMIAN, 2002). A seguir a figura 4 ilustra as extenses Java:

Figura 4. Extenses Java. Fonte: (SIBLOGSPOT, 2009). 25

Segundo Muchow (2004, p. 8), J2ME permite desenvolver aplicativos que no tem o mesmo poder de processamento e memria de uma plataforma desktop tpica. Os produtos podem incluir celulares, PDAs, sistemas de entretenimento e navegao automotiva por exemplo. Como argumenta Piroumian (2002), J2ME no define um novo tipo de Java, mas adapta sua plataforma para que seja possvel executar programas em dispositivos, como os citados anteriormente. Sendo assim, todo programa desenvolvido para J2ME poder ser executado sem nenhum problema nas edies Standard (J2SE) e Enterprise (J2EE), desde que as APIs usadas estejam presentes para estas plataformas.

3.3.1.

ARQUITETURA J2ME Como o J2ME acomoda uma ampla variedade de dispositivos mveis,

esta presente em sua arquitetura as configuraes, perfis e mquina virtual, que definem os recursos de linguagem e bibliotecas para estes dispositivos. Conforme exposto por Muchow (2004), uma configurao define uma plataforma Java para uma ampla variedade de dispositivos e esta vinculada a uma mquina virtual Java JVM (Java Virtual Machine), ou seja, uma configurao define os recursos da linguagem Java e as bibliotecas bsicas da JVM para essa configurao em particular. A configurao aplicada a um dispositivo mvel baseado na capacidade de memria, no vdeo e na conectividade de rede, e no poder de processamento disponvel (MUCHOW, 2004). A configurao foi definida em dois padres de configurao J2ME: o CLDC (Connected Limited Device Configuration), configurao de dispositivos de conexo limitada, que direcionada a dispositivos considerados de uso pessoal, mvel, como os smatphones, organizadores pessoais e outros aparelhos semelhantes, ou seja, a CLDC focada em dispositivos com restries de recursos. Em geral os dispositivos devem possuir de 160 KB a 512 KB de memria no-voltil para a mquina virtual e bibliotecas, e pelo menos 122 KB de memria RAM para a execuo da mquina virtual, processador pode ser de 16 ou 32 bits, e conexo com a rede limitada (SOUZA, 2012).
26

O CDC (Connected Device Configuration) ou configurao de dispositivos conectados, desenvolvida para aparelhos que suportam todas as funcionalidades da mquina virtual Java tradicional, como conversores de TV a cabo, alguns dispositivos GPS e alguns PDAs, os dispositivos devem possuir no mnimo 2 MB de memria ROM, 256 KB de memria RAM e algum tipo de conexo de rede. A CDC providencia um ambiente de execuo Java mais amplo que a CLDC e um ambiente mais prximo do ambiente J2SE (SOUZA, 2012). Em cima das configuraes esto os perfis de dispositivo, onde se encontra as APIs definidas pelo MIDP (Mobile Information Decive Profile), perfil de dispositivo de informao mvel, para projeto de interface com o usurio, suporte para interligao em rede e armazenamento persistente, levando em considerao as limitaes de tela e memria dos dispositivos mveis (MUCHOW, 2004). A seguir a figura 5 ilustra a Arquitetura do J2ME:

Figura 5. Arquitetura do J2ME. Fonte: (MUCHOW, 2004).

Conforme exposto por Muchow (2004, p.19), para a CLDC, a Sun desenvolveu uma mquina virtual especfica, projetada para ser o menor e mais eficiente possvel e manipular consideraes especiais dos dispositivos mveis, como a capacidade de memria, chama-se Mquina Virtual K, ou simplesmente KVM (K Virtual Machine).

27

3.3.2.

AMBIENTE PARA DESENVOLVIMENTO J2ME Segundo Wells (2004, p. 50), primeiramente para comear o

desenvolvimento, necessrio escolher uma IDE, uma ferramenta para que seja feito os cdigos das futuras aplicaes. Existem muitas alternativas existentes no mercado, algumas pagas, outras gratuitas como .Net Compact Framework, da Microsoft, Brew, da Qualcomm, Eclipse ME, da Eclipse Foundation, JBuilder MobileSet, da Borland Software Corporation e o NetBens, que ser usado como exemplo. Independente da escolha da IDE, obrigatrio a presena de alguns programas no computador, estes programas so o JDK (Java Development Kit) verso 5.0, o WTK (Wireless Toolkit) verso 2.3, que o Kit de Desenvolvimento da Sun Microsystems voltado para a criao de aplicaes mveis, e o Mobility Pack 5.0, pacote que adiciona suporte criao de aplicaes mveis no NetBeans (ORRICO, 2008). A seguir a figura 6 ilustra o Ambiente de desenvolvimento NetBeans:

Figura 6. NetBeans. Fonte: (ORRICO, 2008).

28

O WTK um kit de desenvolvimento, mas no prov um ambiente de desenvolvimento completo, apenas um compilador para as aplicaes mveis e alguns emuladores de dispositivos, todos fictcios, para testar as aplicaes criadas, por isso preciso uma IDE, como o NetBeans (ORRICO, 2008).

29

4. iOS O iOS, conhecido como iPhone OS antes de Junho de 2010, o sistema operacional da Apple. Desenvolvido originalmente para o iPhone que desde ento tem sido usado no iPad Touch, iPad e tambm na Apple TV. Este sistema operacional um exclusivo Apple, pois usado apenas em seus dispositivos. O iOS foi apresentado com o iPhone na Macworld Conference & Expo no dia 9 de Janeiro de 2007, e lanado em Junho do mesmo ano. A Apple no atribui nome para o SO, apenas deu referncia que se tratava de uma verso modificada do OS X. Em 17 de Outubro de 2007, a Apple anunciou que o SDK nativo estava em desenvolvimento e que estaria nas mos dos desenvolvedores at Fevereiro do ano seguinte (SILVA, 2011). Em Junho de 2010, a Apple rebatiza o nome do SO de iPhone OS para iOS. A interface do usurio do iOS baseada no conceito de manipulao direta, utilizando gestos em multi-toque. A interao com o sistema operacional inclui gestos como apenas tocar na tela, deslizar o dedo, e o movimento de pina, utilizado para se ampliar ou reduzir imagens. Acelermetros internos so usados por alguns aplicativos para responder agitao do aparelho, ou rod-lo em trs dimenses, mudando do modo retrato para paisagem (SILVA, 2011).

4.1.

PLATAFORMA iOS E DESENVOLVIMENTO De acordo com MARK et al. (2011, p. 46), o desenvolvimento e

designer para iOS foram guiados por um conceito chamado Model View Controller (MVC), que uma maneira muito lgica dividindo-se o cdigo que compe uma aplicao baseada em GUI (Graphical User Interface). O padro MVC divide todas as funcionalidades em trs categorias distintas: Model: As classes que armazenam dados de seu aplicativo; View: Composto por uma das janelas, controles e outros elementos que o usurio pode ver e interagir com ele;

30

Controller: O cdigo que vincula o modelo e a visualizao. Ele contm a lgica de aplicao que decide como lidar com o usurio. O objetivo da MVC fazer com que os objetos implementam esses

trs tipos de cdigos distintos a partir de outra possvel. A MVC ajuda a garantir a reutilizao mxima. Uma classe que implementa um boto genrico pode ser utilizada em qualquer aplicao. Uma classe que implementa um boto que faz algum clculo especial quando clicado s pode ser utilizada na aplicao para a qual foi originalmente escrito (MARK, 2011). Segundo BRANNAN e WARD (2011), para que seja possvel desenvolver para os dispositivos da Apple (iPhone, iPad), necessrio que seja feito um registro pessoal no iPhone Dev Center em http://developer.apple.com/iphone, a adeso gratuita. Neste mesmo endereo possvel baixar as ferramentas necessrias para poder desenvolver, estas ferramentas so: o kit de desenvolvimento SDK, a IDE Xcode (conjunto de ferramentas), Cocos2D (usado para criao de jogos, caso necessrio), preciso tambm que se tenha um computador com MAC OS X executando as ferramentas do Xcode. Quando inicializa uma aplicao no Xcode, existe a opo de inicializar no simulador ou no aparelho. O simulador providencia um ambiente local para testar as aplicaes e ter certeza que ela se comporta de maneira desejada. Depois de executar o comportamento bsico da aplicao, o Xcode inicializar a aplicao no IPhone conectado no computador (BRANNAN e WARD, 2011).

31

A seguir a figura 11 ilustra o ambiente de desenvolvimento Xcode:

Figura 11. IDE Xcode. Fonte: (MARK et al., 2011).

A linguagem de programao usada para desenvolver na plataforma iOS Objective-C, esta linguagem prpria para o desenvolvimento de dispositivos da Apple e foi herdada da linguagem C, utilizada para construo de aplicativos para iPhone, iPad, iPod Touch, ela adia a maior parte das decises que conseguir a partir do momento de compilao e execuo, e sempre que possvel faz tudo dinamicamente. Isso significa que a linguagem no requer apenas um compilador, mas tambm um sistema de runtime para executar o cdigo compilado (APPLE, 2012). CONWAY e HILLEGASS (2011, p. 31) complementam que, O runtime funciona como uma espcie de sistema operacional para linguagem Objective-C.

32

4.2.

ARQUITETURA DO iOS O Kernel do iOS possui uma arquitetura em camadas, onde as

camadas esto dividas em: Core OS, Core Services, Media, e Cocoa Touch. O Kernel baseado no kernel Mach, que se trata da mesma base encontrada no Mac OS X. No topo do kernel esto as camadas de servios utilizadas para implementao de aplicativos na plataforma, a estrutura das camadas esta representada na figura a seguir (APPLE, 2012). A seguir a figura 12 ilustra as camadas da arquitetura da plataforma iOS:

Figura 12. Arquitetura iOS. Fonte: (APPLE

2012).

Core OS: (Ncleo do sistema operacional) OS X Kernel, Sockets, Segurana, Gerenciamento de Energia, Certificados, Sistema de Arquivos. Core Services: (Servios oferecidos pelo sistema) SQLite, Acesso a Arquivos, Preferncias, Livro de Endereos, Rede. Media: (servios de mdia IOS) OpenAL, Gravao e Mixagem de Audio, Ncleo de Animao, Leitor de PDF, OpenGL ES e Quartz. Cocoa Touch: Eventos e controle, Acelermetro, Cmera, Alertas, Pickers, Sistema de Localizao. A arquitetura desta API do iOS dividida no Foundation Framework e no UIKit, e segue o padro MVC.

33

Foundation oferece classes utilitrias, como XMLParser, colees (Arrays e Dicionrios), servios (como o controlador do Desfazer e de Erros), entre vrios outros. As classes oferecidas pela Foundation comeam por NS (NextStep), e so a NSXMLParser, NSString e NSMutableArray. O UIKit controla as interaes do usurio UI (User Interface) em tempo de execuo, com ele que colocam botes, labels, campos de texto e tudo mais que o usurio interage como, UIButton, UIColor, UILabel, UIOutlet, UITextFieldDelegate e outros (APPLE, 2012).

4.3.

APLICATIVOS iOS Como explica CONWAY e HILLEGASS (2011), o que tornam os

dispositivos da Apple to famosos e essenciais, so seus aplicativos, que disponibiliza aos usurios servios de mapas, msicas, jogos, e cmera com funcionalidade built-in do iPhone, iPod Touch e iPad, mas a real vantagem destes dispositivos a App Store. Onde se encontram mais de um quarto de milho de aplicaes, que transformam o dispositivo em uma ferramenta especializada para exatamente o que o usurio desejar. A Apple revisa todos os aplicativos antes da publicao na App Store, e o usurio deve ler suas diretrizes atuais para a aceitao antes de iniciar a aplicao. A App Store uma aplicao da Apple sobre o iPhone, iPodTouch, e iPad. Os clientes podem usar a App Store para navegar e fazer download de aplicativos da Apple, e iTunes Store. CONWAY e HILLEGASS (2011, p. 4) tambm explicam que, alguns aplicativos so gratuitos, enquanto outros tm um custo (geralmente) nominal. Utilizando uma conta iTunes, possvel fazer download de aplicativos diretamente para os dispositivos da Apple. Muitas aplicaes so inteis, mas muitas so bastante surpreendentes. O download de aplicativos da App Store fcil e barato, e os desenvolvedores independentes podem desenvolver aplicativos para a App Store fazendo o download do SDK iOS, desenvolvendo um aplicativo, e se cadastrando no iOS Developer Program. A Apple, em seguida, analisa a aplicao, e uma vez que passe pelo processo de reviso, adicionado ao iTunes Store (CONWAY e HILLEGASS, 2011).
34

5.

ANDROID A plataforma Android foi concebida inicialmente pelo Google em 05 de

Novembro de 2007, tornando pblica a primeira plataforma open source de desenvolvimento para dispositivos mveis baseada na sintaxe da plataforma Java com sistema operacional baseado em Linux (RABELLO, 2012). A plataforma est sendo mantida pelo Open Handset Alliance (OHA), que um grupo formado por 84 empresas (de tecnologias de dispositivos mveis, provedoras de servios mveis e fabricantes), lideradas pela Google, as quais se uniram para inovar e acelerar o desenvolvimento de aplicaes e servios, trazendo aos consumidores uma experincia mais rica em termos de recursos, e menor custo financeiro para o mercado mvel, conforme exposto por (ABLESON et al., 2011).

5.1.

DEFINIO O Android uma plataforma para tecnologia mvel completa,

envolvendo um pacote com programas para celulares, j com um sistema operacional middleware, aplicativos e interface do usurio. Como mencionado por PEREIRA e SILVA (2009), a plataforma Android foi construda com a inteno de permitir aos desenvolvedores criar aplicaes mveis para aparelhos portteis e para ser verdadeiramente aberto. Por exemplo, uma aplicao pode apelar a qualquer uma das funcionalidades de ncleo a cmera, que permite aos desenvolvedores adaptarem e evolurem cada vez mais estas funcionalidades. Por ser open source, a plataforma Android pode ser sempre adaptado a fim de incorporar novas tecnologias, conforme estas forem surgindo. A plataforma vai estar sempre em evoluo, j que as comunidades de desenvolvedores estaro trabalhando em conjunto para construir aplicaes mveis inovadoras.

35

5.2.

DESENVOLVIMENTO PARA PLATAFORMA ANDROID O sistema operacional Android o primeiro projeto de uma plataforma

open source para dispositivos mveis em conjunto com a Open Hanset Alliance. A plataforma Android oferece aos desenvolvedores a capacidade de criar aplicaes extremamente ricas e inovadoras. Os desenvolvedores esto livres para aproveitar o hardware do dispositivo, as informaes de localizao de acesso, e execuo de servios. Os desenvolvedores tm acesso total s APIs (Application Programming Interface ou Interface de Programao de Aplicativos) do mesmo core utilizado pelo sistema operacional (ANDROID DEVELOPERS, 2011). Como descreve Gargenta et al. (2010), para que seja possvel o desenvolvimento para plataforma Android, necessrio o Android SDK (Software Develoment kit) kit de desenvolvimento e emulador que disponibiliza as ferramentas e APIs necessrias para desenvolver aplicaes para a plataforma Android, o SDK funciona em Windows, Linux e Mac OS X, necessrio que instale tambm o JDK e uma IDE. O sistema operacional Android oferece suporte completo para banco de dados SQLite, um leve e poderoso banco de dados, onde qualquer banco de dados criado poder ser acessado pelo nome de qualquer classe da aplicao, mas no permite acesso de fora do aplicativo (ANDROID DEVELOPERS, 2012). O Android conta com um emulador de dispositivos mveis, um dispositivo mvel virtual que roda no computador. O emulador permite ao desenvolvedor testar aplicativos Android sem o uso de um dispositivo fsico (ANDROID DEVELOPERS, 2012).

36

A seguir a figura 8 ilustra o Emulador para Android, utilizando IDE Eclipse:

Figura 8. Emulador Android. Fonte: Gargenta

et al. (2010).

Como descreve Gargenta et al. (2010), o desenvolvimento pode ser feito em outras linguagens de programao como: C/C++: apoiada pela Google atravs do NDK (Kit de Desenvolvimento Nativo), existente desde 2009, que permite os programadores criarem ou migrarem aplicativos nas linguagens C e C++ (cdigo nativo) para a plataforma Android, aumentando o numero de jogos e aplicaes multimdias no Android Market; .NET Framework: os desenvolvedores que utilizam as linguagens da Microsoft podem utilizar Mono For Android, esta habilita a programao para Android atravs da linguagem C# e .Net Framework 4. Isto feito atravs da transformao do cdigo .Net em cdigo nativo do Android. Como a grande maioria dos projetos desenvolvidos nas linguagens do framework da Microsoft, os projetos destinados ao SO Android podem ser desenvolvidos no Microsoft Visual Studio baixando-se um plug-in para o ambiente;
37

Scala: esta ainda uma linguagem pouco utilizada, esttica e funciona : sobre a Mquina Virtual Java (JVM). Ainda possui pouco material sobre uco Scala, apesar de sua sintaxe ser semelhante ao Java ela vem sendo Java, defendida por permitir a escrita do cdigo mais rapidamente e uma maior facilidade de compartilhamento do que a linguagem Java. O mtodo convencional para programao em Scala dado atravs da instalao do plug-in SBT (Simple Build Tool) na IDE Eclipse; Python: o projeto Python for Android possibilita desenvolvedores desta : distinta linguagem a migrarem aplicativos para a plataforma Android. A ferramenta utiliza os recursos do projeto SL4A (ScriptingLayer for Android), que permite usurio executarem linguagens tipadas no Android. Os aplicativos Python podem ser executados no emulador e no dispositivo vos emulador fsico. A seguir a figura 9 ilustra a IDE Eclipse com SDK Android uir lustra Android:

Figura 9. IDE Eclipse com SDK Android Android.

38

A plataforma Android foi desenvolvida com base no sistema operacional Linux e composta por um conjunto de ferramentas que atua em todas as fases do desenvolvimento do projeto, desde a execuo at a criao de softwares especficos, segundo PEREIRA e SILVA (2009, p. 12).

5.3. ARQUITETURA DA PLATAFORMA ANDROID A arquitetura da plataforma Android dividida em vrias camadas: Applications and Widgets, Application Framework, Libraries, Android Runtime, e Linux Kernel. Conforme menciona Gargenta et al. (2010), na camada Applications and Widgets, est localizada uma lista de aplicaes padres que incluem um cliente de e-mail, programa de SMS, calendrio, mapas, navegador, gerenciador de contatos, e outros que sero desenvolvidos pela comunidade, sendo todas essas aplicaes escritas na linguagem Java. Gargenta et al. (2010, p.33) argumenta que, na camada Application Framework esto os componentes que permitiro com que novas estruturas sejam utilizadas para futuras aplicaes, enfatizando a reutilizao de cdigo. Os seguintes componentes fazem parte desta camada: Um rico e extensvel conjunto de grficos que pode ser utilizado para construir uma aplicao, bem como listas, grids, caixas de textos, botes, e at um navegador web embutido. Provedores de contedo que habilitam s aplicaes acessar dados de outras aplicaes (como os Contatos, por exemplo) ou compartilhar seus prprios dados. Recursos que prove acesso a recursos no-codificados como strings, grficos, e arquivos de layout. Um gerenciador de notificao que permite que todas as aplicaes exibam mensagens de alerta personalizveis na barra de status. Um de atividade que gerencia o ciclo de vida das aplicaes e permite controlar os recursos previamente alocados, sendo que caso eles no

39

estejam sendo mais utilizados, os mesmos so desalocados para liberar memria. A seguir a figura 7 ilustra as camadas da Arquitetura Android:

Figura 7. Camadas da Arquitetura Android. Fonte: (GARGENTA et al., 2010).

Como descreve Gargenta et al. (2010), logo abaixo da camada Application Framework esta subdivida o grupo das bibliotecas (libraries) e o ambiente de execuo (runtime) da plataforma Android, composto pelas bibliotecas padro e pela mquina virtual denominada Dalvik. No primeiro grupo esto as bibliotecas escritas em C/C++, que so compostas por uma coleo de bibliotecas que so utilizadas pela plataforma Android. Estas bibliotecas so: Biblioteca de sistema C: uma implementao da biblioteca C padro (libc), otimizada para dispositivos que suportam a plataforma Linux (embededlinux).

40

Bibliotecas de Mdias: as bibliotecas suportam execuo e gravao da maioria dos formatos de udio e vdeo, bem como exibio de imagens, incluindo MPEG4, H.264, MP3, AAC, AMR, JPG, e PNG. Gerenciador de Superfcie: gerencia o acesso ao display do dispositivo e camadas de grficos 2D e 3D de mltiplas aplicaes. LibWebCore: uma moderna engine de navegador web que turbina tanto o navegador da plataforma Android e um outro navegador qualquer desenvolvido. SGL: uma engine de grficos 2D. 3D libraries: uma implementao baseada na especificao OpenGL ES 1.0, a qual utiliza tanto acelerao de hardware 3D e um avanado e otimizado software para renderizao de modelos tridimensionais. FreeType: renderizao em formatos bitmaps e vetoriais de fontes. SQLite: uma poderosa e leve engine de banco de dados relacional disponvel para todas as aplicaes. Meier (2011) afirma que sobre o ambiente de execuo, a plataforma

composta pela mquina virtual Dalvik. Toda e qualquer aplicao em Android roda dentro de seu prprio processo, isto , no contexto da sua instncia de mquina virtual. Esta VM foi escrita para que os dispositivos possam suportar mltiplas mquinas virtuais eficientemente. A Dalvik executa arquivos no formato Dalvik Executable, com extenso .dex, um arquivo .dex nada mais do que uma espcie de bytecodes de Java, os famosos arquivos compilados .class, otimizados para a plataforma Android. Segundo Meier (2011, p.13), Na base, est localizado o kernel Linux, que para a Android ser a verso 2.6, fornecendo servios do ncleo do sistema como segurana, gerenciamento de memria, gerenciamento de processos, pilhas de redes, etc.

41

5.4.

APLICATIVOS ANDROI ANDROID Aplicativo, ou simplesmente app, um programa que adiciona novas

funes ao celular. Eles podem ser comprados e baixados das lojas virtuais vinculadas ao sistema operacional do aparelho. As mais populares so App Store, para o sistema operacional da Apple (iOS), e Android Market, para Android do Android, Google. O mercado de aplicativos Android Market foi disponibil disponibilizado em outubro de 2008, porm, com pouco mais de dois mil aplicativos disponveis para download. Em dezembro de 2009, esse nmero j havia subido para cerca de 20 . mil apps. O crescimento do nmero de aparelhos e as vendas em 2010 segu seguiram juntamente com a expanso de aplicativos disponibilizados no Android Market. Atualmente, a loja conta com mais de 400 mil aplicativos gratuitos e pagos para te, download, entre eles sucess , sucessos como o Angry Birds, TweetDeck e Facebook, (RASMUSSEN, 2011). A seguir a figura 10 ilustra o numero de aplicativos pagos e gratuitos para Android e iOS:

Figura 10. Aplicativos gratuitos X pagos para Android Market e iOS(App Store) Fonte: (LOOKOUT, ativos (App Store). 2012).

42

O Brasil faz parte dos pases que podem vender e comprar aplicativos no Android Market, funo essa liberada no final de 2010. Diferente da loja de aplicativos da Apple, uma das vantagens do Market a venda de jogos tambm para o nosso pas, algo bloqueado pela Apple devido s leis que regem a classificao etria de games no Brasil (RASMUSSEN, 2011). Existem alguns aplicativos disponveis no Android Market conhecidos como spyware ou malware, que possuem cdigos maliciosos e vrus, estes aplicativos mal intencionados podem ser baixados livremente, pois a Google no restringe os aplicativos que so postados no Android Market. Os softwares maliciosos podem roubar dados dos usurios, gravar conversas, e at mesmo informaes para fazer ligaes sem a autorizao expressa do usurio (BRUNELLI, 2011). O Android Market possui alguns antivrus, incluindo o aplicativo Avast, e j possvel encontrar solues da AVG, BitDefender, Kaspersky, e Trend Micro. Assim como a AVG, que comprou a DroidSecurity para criar o AntiVirus Free atual, a Avast comprou a empresa ITAgents, que criou o Theft Aware. O programa verifica o contedo e aplicativos no aparelho e no carto de memria, identifica riscos potenciais e filtra ligaes e SMS, o que pode evitar os cavalos de tria que ligam para nmeros estrangeiros, por exemplo. Alm disso, oferece proteo contra endereos suspeitos na Internet (EISHIMA, 2011). Eishima (2008), tambm complementa que, assim como outros programas do gnero antivrus, o Avast oferece a opo de limpar a memria do aparelho, tocar um alarme, travar o sistema e reiniciar o sistema remotamente, alm de localiz-lo em caso de perda ou roubo.

43

6. ESTUDO DE CASO DESENVOLVIMENTO DE APLICATIVO ANDROID Para o desenvolvimento do aplicativo na plataforma Android, primeiramente foi necessrio instalar as ferramentas de desenvolvimento citadas no item 5.2., o JDK e uma IDE (neste caso o Eclipse) para executar a ferramenta Android SDK. Como descreve Gargenta et al. (2010), para que seja possvel o desenvolvimento para plataforma Android, necessrio o Android SDK (Software Develoment kit) kit de desenvolvimento e emulador que disponibiliza as ferramentas e APIs necessrias para desenvolver aplicaes para a plataforma Android, necessrio que instale tambm o JDK e uma IDE. Aps instalado a IDE Eclipse e a ferramenta JDK, foi necessrio instalar o plugin Android SDK diretamente no Eclipse da seguinte forma: Na IDE Eclipse, em (help) e (Install New Software); No campo (Work with), adicionar o link: http://schemas.android.com/apk/res/android no campo (Location), este link encontra-se no site www.androiddevelopers.com; Clicar em (ok), depois (finish), e aguardar que seja instalado.

44

A seguir a figura 13 ilustra os campos para instalar o plugin Android SDK:

Figura 13. Campos da IDE Eclipse para adicionar a SDK Android.

Depois de instalado o plugin, foi criado um novo Android Project, para ser desenvolvido o aplicativo. O novo projeto foi criado da seguinte forma: Na IDE Eclipse, em (New) e (Android Project); Logo dado o nome do projeto, e selecionado qual verso da plataforma Android para qual ser desenvolvido (no caso Android 2.1); Depois clicado em (Next >) e (Finish).

45

A seguir a figura 14 ilustra os campos para Criar um Novo Projeto Android:

Figura 14. Campos da IDE Eclipse para Criar um Novo Projeto Android.

Depois de gerado o projeto, automaticamente criado a estrutura bsica inicial, porm, foi criado 3 pacotes onde se encontram as classes que constituram a formao do aplicativo final. Dentre estas classes esto a classe (BaseDAO.java) do pacote (br.agenda.DAO), onde esta o cdigo de criao do banco de dados, utilizando a biblioteca SQLite existente no SDK Android, e a classe (ContatoVO.java) do pacote (br.agenda.POJO), que a responsvel pelo transporte dos dados entre a interface e o banco de dados. Na arquitetura para o desenvolvimento em Android possvel criar classes que contm a ferramenta Graphical Layout, usada para inserir imagens, editore de texto, botes, listas de arquivos, CheckBox, relgio, controle de zoom, dentre outros recursos que facilitam o desenvolvimento.

46

A seguir a figura 15 ilustra alguns recursos do Graphical Layout:

Figura 15. Graphical Layout.

Para finalizar o aplicativo, foi utilizado o emulador do SDK Android AVD (Android Virtual Device), onde possvel realizar os testes e verificaes para garantir o funcionamento perfeito do aplicativo, neste caso foi criado uma Agenda de Contatos, onde se pode cadastrar o nome, endereo, e telefone do contato, alm de ser possvel editar e excluir um contato existente. Antes de utilizar o emulador, este deve ser criado da seguinte forma:

47

Na IDE Eclipse, preciso clicar no cone do emulador Android no lado superior esquerdo (Opens the Android Virtual Device Manager); Adicionar um novo emulador (AVD) em (New); No campo (Target) preciso selecionar a verso do Android de acordo com o que foi criado o projeto; Deve-se definir o nome do emulador (neste caso o nome avd_2_1), capacidade de memria e a resoluo de tela (neste caso 1024 MB, e resoluo de HVGA); E por fim clicar em (Creat AVD), o emulador ser carregado e estar pronto para uso. A seguir a figura 16 ilustra o Emulador avd_2_1:

Figura 16. Emulador avd_2_1.

Para instalar este aplicativo no celular, primeiramente necessria que a verso do dispositivo seja a mesma criada no projeto, para que no ocorram erros durante a execuo das funes do aplicativo, segundo passo, preciso que
48

o celular seja conectado por cabo USB (Universal Serial Bus), e que esteja com as funes (Fontes Desconhecidas, Depurao USB, Permanecer Ativo e Permitir Locais Fictcios) selecionadas, assim quando executar o projeto no Eclipse, automaticamente poder ser escolhido se deve rodar no Emulador AVD, ou no dispositivo externo (celular). Caso for selecionado o celular como emulador, o aplicativo ser instalado automaticamente e pronto para uso. Para o desenvolvimento deste aplicativo, no houve problemas que dificultassem o objetivo final e o funcionamento correto. Com a experincia adquirida aps finalizar este projeto, possvel executar outros com mais facilidade e menos tempo, dependendo do problema a ser resolvido.

49

7. CONCLUSO Tendo em vista que a tecnologia para dispositivos mveis evolui rapidamente e que as pessoas (usurios) esto cada vez mais dependentes destas tecnologias, alm do fato da existncia de vrias plataformas para desenvolvimento destes dispositivos, foi proposta a realizao deste trabalho e por base no contedo apresentado do mesmo, pode-se considerar que de vital importncia a escolha mais adequada da plataforma para desenvolvimento de aplicativos para smartphones, de acordo com a problemtica do desenvolvedor, ou empresa desenvolvedora. Algumas das possveis solues de desenvolvimento citadas no decorrer do trabalho so as ferramentas de desenvolvimentos (IDEs) como o Eclipse, NetBeans, Visual Studio e Xcode, voltada apenas para desenvolvimento de dispositivos da Apple. Porm, como o mercado atual esta crescendo na maior parte para plataforma Android, que patrocinada e utilizada por instituies e empresas participantes da OHA (Open Handset Alliance), como a Acer, Asus, Dell, LG, Samsung, Sony Ericsson, Toshiba, Intel, e a Google que a lder deste grupo, ajudando a demonstrar a aplicabilidade e confiabilidade do sistema operacional Android. O desenvolvimento de um estudo de caso permitiu avaliar as principais vantagens e dificuldades encontradas durante o desenvolvimento e instalao do aplicativo em um exemplo real, alm de expor de forma prtica a criao, desenvolvimento e finalizao de um projeto de aplicativo Android. Para tanto, com a realizao desta pesquisa possvel compreender a importncia dos sistemas operacionais e ferramentas para desenvolvimento em dispositivos mveis, de forma que os desenvolvimentos de aplicaes podem ser executadas em ambas as plataformas, mas no com os mesmos recursos, o que pode afetar no resultado final das aplicaes e projetos. Conclui-se que o desenvolvimento para dispositivos mveis, indispensvel, por estar em constante evoluo e ser de alta usabilidade para os usurios finais, ainda pode-se afirmar que de suma importncia uma escolha adequada da ferramenta para desenvolvimento, visando a qualidade do produto final.
50

Este trabalho contribuiu para ampliar meus conhecimentos em termos de plataformas de desenvolvimento para dispositivos mveis, principalmente por ter executado um projeto de criao de um aplicativo na prtica e estudado as plataformas dos sistemas operacionais mais vendidos mundialmente, Android e iOS.

7.1. TRABALHOS FUTUROS Como neste trabalho foi apresentados conceitos sobre as plataformas e ferramentas para desenvolvimento de aplicaes para dispositivos mveis focando nos smartphones com estudo de caso em Android. Para a continuao deste trabalho prope-se realizar uma anlise aprofundada da plataforma iOS, suas ferramentas, podendo tambm dar maior foco nos dispositivos mveis como Tablets, por estarem em constante evoluo no mercado tecnologico. Para trabalhos futuros, tambm pode ser feito o desenvolvimento de um projeto utilizando outra plataforma de desenvolvimento, ou uma anlise comparativa entre duas plataformas utilizando um quadro por exemplo.

51

8. REFERNCIAS BIBLIOGRFICAS ABLESON, Frank W; SEM, Robi; KING, Chris. Android in Action. 2 ed. United States of America. Manning Publications Co. 2011. APLLE. iOS Developer Library. Disponvel em: <http://developer.apple.com/library/ios/navigation/#section=Resource%20Types&to pic=Guides>. Acessado em: 08 de junho de 2012. BLACKBERRY. Disponivel em: < http://br.blackberry.com/>. Acessado em: 08 de junho de 2012. BRANNAN, James A; WARD, Blake. iOS SDK Programming: A beginners Guide. United States of America. The McGraw-Hill Companies. 2011. BRUNELLI, Joo Moreno. Malware para Android. 2011. Disponvel em: http://tecnoblog.net/82503/malware-android-cresce/. Acessado em: 17 de maio de 2012. CAVALLINI, Ricardo; XAVIER, Lo; SOCHACZEWSKI, Alon. Mobilize. So Paulo. Ed. dos Autores. 2010. CONWAY, Joe; HILLEGASS, Aaron. iOS Programming: The Big Nerd Ranch Guide. 2 ed. Atlanta, United States of America. Copyright Big Nerd Ranch, Inc. 2011 DIAS, Kadu. BlackBerry. 2011. Disponvel em: http://mundodasmarcas.blogspot.com.br/2006/09/blackberry-always-on-alwaysconnected.html. Acessado em: 03 de abril de 2012. EISHIMA, Rubens Haruo. Avast Lana Antivrus Para Android. 2011. Disponvel em: http://www.superdownloads.com.br/materias/avast-lanca-antivirus-android.html. Acessado em 17 de maio de 2012.

52

FERRARI, Bruno. Os tijoles Esto de Volta. Revista poca, publicado em 12 de dezembro de 2011. Disponvel em: http://colunas.revistaepoca.globo.com/fazcaber/2011/12/12/diagrama-sobre-aevolucao-dos-celulares-fotos-ou-desenhos/. Acessado em 18 de maro de 2012. GALAXY NOTE. Disponvel em: <http://www.samsung.com/br/>. Acessado em: 28 de maro de 2012. GARGENTA, Marko; MILANO, Diego Torres; RAPP, Nathan; MARTIN, Michael. Hello, Android: Introducing Googles Mobile Development Platform. 3 ed. United States of America. Pragmatic Programmers LLC. 2010. GARTNER. Vendas mundiais de dispositivos mveis para usurios finais por Vendedor 2012. IPHONE. Disponvel em: <http://www.apple.com/br/iphone/>. Acessado em: 18 de maro de 2012. IPAD. Disponvel em: <http://www.apple.com/br/ipad/>. Acessado em: 28 de maro de 2012. BULL JUNIOR, Lealcy. Do tijolo ao IPhone: A evoluo dos celulares. Disponvel em: http://ceticismo.wordpress.com/2007/06/05/do-tijolo-ao-iphone-aevolucao-dos-celulares/. Publicado em 05/06/2007. Acesso em: 11/02. KLEIN, Eduardo. Desenvolvimento J2ME para celulares. 2008. Disponvel em: http://arquiteturaemobilidade.blogspot.com.br/search/label/blackberry. em: 03 de abril de 2012. LOOKOUT. Aplicativos pagos e gratuitos Android e iOS. 2011. Disponvel em: https://www.mylookout.com/appgenome. Acessado em: 18 de maio de 2012. Acessado (Empresa) 1T12. 2012. Disponvel em: http://www.gartner.com/it/page.jsp?id=2017015. Acessado em: 10 de junho de

53

MARK, Dave; NUTTING, Jack; LaMarche, Jeff. Beginning iOS 5 Development: Exploring the iOS SDK. Apress ED Books. 2011. MEIR, Reto. Professional Android Application Development. Indiana: Wiley Publishing Inc., 2009. MORIMOTO, Carlos E. SmartPhones: A historia do Symbian. 2010. Disponvel em: http://www.hardware.com.br/dicas/historia-symbian.html. Acessado em: 02 de abril de 2012. MUCHOW, John W. Core J2ME Tecnologia & MIDP. So Paulo: Pearson Makron Books, 2004. OHA. Disponvel em:
<http://www.openhandsetalliance.com/android_overview.html>

Acessado em: 07 de

maro de 2012. PEREIRA, Lcio C. Oliva; SILVA, Michel Loureno. Android Para

Desenvolvedores. Rio de Janeiro: Brasport Livros e Multimdia Ltda, 2009. RABELLO, Ramon Ribeiro. Artigo da revista WebMobile 18 - Android: um novo paradigma de desenvolvimento mvel. 2012. Disponvel em: http://www.devmedia.com.br/artigo-webmobile-18-android-um-novo-paradigma-dedesenvolvimento-movel/9350. Acessado em: 09 de maro de 2012. RASMUSSEN, Bruna. Android: o sistema operacional mvel que conquistou o mundo. 2011. Disponvel em: http://www.tecmundo.com.br/infografico/9010-android-o-sistema-operacionalmovel-que-conquistou-o-mundo.htm. Acessado em: 15 de abril de 2012. RIZK, Anthony. Beginning BlackBerry Development. United States of America, New York. Ed. Apress. 2009.

54

SILVA, Renato. A evoluo do sistema operacional iOS. 2011. Disponvel em: http://pt.calameo.com/read/00053935644470a885967. Acessado em: 18 de maio de 2012. SOUZA, Leonardo da Silva. J2ME-Plataforma Java Para Dispositivos Mveis. 2011. Disponvel em: http://www.ebah.com.br/content/ABAAAelI4AJ/j2me-plataforma-java-dispositivosmoveis. Acessado em: 11 de abril de 2012. VISUAL STUDIO. 2008. Disponvel em:

http://www.softwareknowhow.info/portals/0/articleresources/images/43-mobileplatforms-1.jpg&imgrefurl. Acessado em: 12 de junho de 2012. WELLS, Martin J. J2ME: Game Programming. Boston. Thomson Course Technology. 2004.

55

9. ANEXO CDIGO FONTE Pacote: br.agenda.DAO Classe BaseDAO.java:


package br.agenda.DAO; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; //Classe responsvel pela criao do Banco de Dados e tabelas public class BaseDAO extends SQLiteOpenHelper { public static final String TBL_AGENDA = "agenda"; public static final String AGENDA_ID = "_id"; public static final String AGENDA_NOME = "nome"; public static final String AGENDA_ENDERECO = "endereco"; public static final String AGENDA_TELEFONE = "telefone"; private static final String DATABASE_NAME = "agenda.db"; private static final int DATABASE_VERSION = 1; //Estrutura da tabela Agenda (sql statement) private static final String CREATE_AGENDA = "create table " + TBL_AGENDA + "( " + AGENDA_ID + " integer primary key autoincrement, " + AGENDA_NOME + " text not null, " + AGENDA_ENDERECO + " text not null, " + AGENDA_TELEFONE + " text not null);"; public BaseDAO(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } //Criao da tabela @Override public void onCreate(SQLiteDatabase database) { database.execSQL(CREATE_AGENDA); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //Caso seja necessrio mudar a estrutura da tabela //dever primeiro excluir a tabela e depois recri-la db.execSQL("DROP TABLE IF EXISTS " + TBL_AGENDA); onCreate(db); } }

Classe ContatoAdapter.java:
package br.agenda.DAO; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.TextView; import android.widget.Toast; import br.agenda.POJO.ContatoVO; import br.agenda.contatos.R.id; import br.agenda.contatos.R.layout; public class ContatoAdapter extends BaseAdapter { 56

private Context context; private List<ContatoVO> lstContato; private LayoutInflater inflater; public ContatoAdapter(Context context, List<ContatoVO> listAgenda) { this.context = context; this.lstContato = listAgenda; inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); } //Atualizar ListView de acordo com o lstContato @Override public void notifyDataSetChanged() { try{ super.notifyDataSetChanged(); }catch (Exception e) { trace("Erro : " + e.getMessage()); } } public int getCount() { return lstContato.size(); } //Remover item da lista public void remove(final ContatoVO item) { this.lstContato.remove(item); } //Adicionar item na lista public void add(final ContatoVO item) { this.lstContato.add(item); } public Object getItem(int position) { return lstContato.get(position); } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup viewGroup) { try { ContatoVO contato = lstContato.get(position); //O ViewHolder ir guardar a instncias dos objetos do estado_row ViewHolder holder; //Quando o objeto convertView no for nulo ns no precisaremos inflar //os objetos do XML, ele ser nulo quando for a primeira vez que for carregado if (convertView == null) { convertView = inflater.inflate(layout.contato_row, null); //Cria o Viewholder e guarda a instncia dos objetos holder = new ViewHolder(); holder.tvNome = (TextView) convertView.findViewById(id.txtNome); holder.tvEndereco = (TextView) convertView.findViewById(id.txtEndereco); holder.tvTelefone = (TextView) convertView.findViewById(id.txtTelefone);

57

convertView.setTag(holder); } else { //pega o ViewHolder para ter um acesso rpido aos objetos do XML //ele sempre passar por aqui quando,por exemplo, for efetuado uma rolagem na tela holder = (ViewHolder) convertView.getTag(); } holder.tvNome.setText(contato.getNome()); holder.tvEndereco.setText(contato.getEndereco()); holder.tvTelefone.setText(contato.getTelefone()); return convertView; }catch (Exception e) { trace("Erro : " + e.getMessage()); } return convertView; } public void toast (String msg) { Toast.makeText (context, msg, Toast.LENGTH_SHORT).show (); } private void trace (String msg) { toast (msg); } //Criada esta classe esttica para guardar a referncia dos objetos abaixo static class ViewHolder { public TextView tvNome; public TextView tvEndereco; public TextView tvTelefone; } }

Classe ContatoDAO.java:
package br.agenda.DAO; import java.util.ArrayList; import java.util.List; import br.agenda.POJO.ContatoVO; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; public class ContatoDAO { private SQLiteDatabase database; private BaseDAO dbHelper; //Campos da tabela Agenda private String[] colunas = {BaseDAO.AGENDA_ID, BaseDAO.AGENDA_NOME, BaseDAO.AGENDA_ENDERECO, BaseDAO.AGENDA_TELEFONE }; public ContatoDAO(Context context) { dbHelper = new BaseDAO(context); } public void open() throws SQLException { database = dbHelper.getWritableDatabase(); } public void close() { dbHelper.close(); } 58

public long Inserir(ContatoVO pValue) { ContentValues values = new ContentValues(); //Carregar os valores nos campos do Contato que ser includo values.put(BaseDAO.AGENDA_NOME, pValue.getNome()); values.put(BaseDAO.AGENDA_ENDERECO, pValue.getEndereco()); values.put(BaseDAO.AGENDA_TELEFONE, pValue.getTelefone()); return database.insert(BaseDAO.TBL_AGENDA, null, values); } public int Alterar(ContatoVO pValue) { long id = pValue.getId(); ContentValues values = new ContentValues(); //Carregar os novos valores nos campos que sero alterados values.put(BaseDAO.AGENDA_NOME, pValue.getNome()); values.put(BaseDAO.AGENDA_ENDERECO, pValue.getEndereco()); values.put(BaseDAO.AGENDA_TELEFONE, pValue.getTelefone()); //Alterar o registro com base no ID return database.update(BaseDAO.TBL_AGENDA, values, BaseDAO.AGENDA_ID + " = " + id, null); } public void Excluir(ContatoVO pValue) { long id = pValue.getId(); //Exclui o registro com base no ID database.delete(BaseDAO.TBL_AGENDA, BaseDAO.AGENDA_ID + " = " + id, null); } public List<ContatoVO> Consultar() { List<ContatoVO> lstAgenda = new ArrayList<ContatoVO>(); //Consulta para trazer todos os dados da tabela Agenda ordenados pela coluna Nome Cursor cursor = database.query(BaseDAO.TBL_AGENDA, colunas, null, null, null, null, BaseDAO.AGENDA_NOME); cursor.moveToFirst(); while (!cursor.isAfterLast()) { ContatoVO lContatoVO = cursorToContato(cursor); lstAgenda.add(lContatoVO); cursor.moveToNext(); } //Tenha certeza que voc fechou o cursor cursor.close(); return lstAgenda; } //Converter o Cursor de dados no objeto POJO ContatoVO private ContatoVO cursorToContato(Cursor cursor) { ContatoVO lContatoVO = new ContatoVO(); lContatoVO.setId(cursor.getLong(0)); lContatoVO.setNome(cursor.getString(1)); lContatoVO.setEndereco(cursor.getString(2)); lContatoVO.setTelefone(cursor.getString(3)); return lContatoVO; } }

Pacote: br.agenda.POJO Classe ContatoVO.java:


package br.agenda.POJO; import java.io.Serializable; //Classe responsvel pelo transporte dos dados entre a //interface(tela) e Banco de Dados public class ContatoVO implements Serializable { private static final long serialVersionUID = 1L; private long id; 59

private String nome; private String endereco; private String telefone; public long getId() { return id; } public void setId(long id) { this.id = id; } public String getNome() { return nome; } public void setNome(String value) { this.nome = value; } public String getEndereco() { return endereco; } public void setEndereco(String value) { this.endereco = value; } public String getTelefone() { return telefone; } public void setTelefone(String value) { this.telefone = value; } // Will be used by the ArrayAdapter in the ListView @Override public String toString() { return nome; } }

Pacote: br.agenda.UI Classe ContatoUI.java:


package br.agenda.UI; import br.agenda.POJO.ContatoVO; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.EditText; import android.widget.Toast; import br.agenda.contatos.R; public class ContatoUI extends Activity { private static final int INCLUIR = 0; //private static final int ALTERAR = 1; ContatoVO lContatoVO; EditText txtNome; EditText txtEndereco; EditText txtTelefone; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.contato); try{ final Bundle data = (Bundle) getIntent().getExtras(); int lint = data.getInt("tipo");

60

if (lint == INCLUIR){ //quando for incluir um contato criamos uma nova instncia lContatoVO = new ContatoVO(); }else{ //quando for alterar o contato carregamos a classe que veio por Bundle lContatoVO = (ContatoVO)data.getSerializable("agenda"); } //Criao dos objetos da Activity txtNome = (EditText)findViewById(R.id.edtNome); txtEndereco = (EditText)findViewById(R.id.edtEndereco); txtTelefone = (EditText)findViewById(R.id.edtTelefone); //Carregando os objetos com os dados do Contato //caso seja uma incluso ele vir carregado com os atributos text //definido no arquivo main.xml txtNome.setText(lContatoVO.getNome()); txtEndereco.setText(lContatoVO.getEndereco()); txtTelefone.setText(lContatoVO.getTelefone()); }catch (Exception e){ trace("Erro : " + e.getMessage()); } } public void btnConfirmar_click(View view){ try{ //Quando confirmar a incluso ou alterao deve-se devolver //o registro com os dados preenchidos na tela e informar //o RESULT_OK e em seguida finalizar a Activity Intent data = new Intent(); lContatoVO.setNome(txtNome.getText().toString()); lContatoVO.setEndereco(txtEndereco.getText().toString()); lContatoVO.setTelefone(txtTelefone.getText().toString()); data.putExtra("agenda", lContatoVO); setResult(Activity.RESULT_OK, data); finish(); }catch (Exception e) { trace("Erro : " + e.getMessage()); } } public void btnCancelar_click(View view){ try{ //Quando for simplesmente cancelar a operao de incluso //ou alterao deve-se apenas informar o RESULT_CANCELED //e em seguida finalizar a Activity setResult(Activity.RESULT_CANCELED); finish(); }catch (Exception e) { trace("Erro : " + e.getMessage()); } } public void toast (String msg){ Toast.makeText (getApplicationContext(), msg, Toast.LENGTH_SHORT).show (); } private void trace (String msg){ toast (msg); } }

Classe main.java:
package br.agenda.UI; import java.util.List; import br.agenda.DAO.ContatoAdapter; import br.agenda.DAO.ContatoDAO; 61

import import import import import import import import import import import import import import import import import import

br.agenda.POJO.ContatoVO; android.app.Activity; android.app.ListActivity; android.widget.*; android.view.*; android.content.Intent; android.os.Bundle; android.view.ContextMenu; android.view.Menu; android.view.MenuItem; android.view.View; android.view.ContextMenu.ContextMenuInfo; android.widget.AdapterView; android.widget.ListView; android.widget.Toast; br.agenda.contatos.R; android.app.Activity; android.os.Bundle;

public class main extends ListActivity { /** Called when the activity is first created. */ private static final int INCLUIR = 0; private static final int ALTERAR = 1; private ContatoDAO lContaoDAO; //instncia responsvel pela persistncia dos dados List<ContatoVO> lstContatos; //lista de contatos cadastrados no BD ContatoAdapter adapter; //Adapter responsvel por apresentar os contatos na tela boolean blnShort = false; int Posicao = 0; //determinar a posio do contato dentro da lista lstContatos @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lContaoDAO = new ContatoDAO(this); lContaoDAO.open(); lstContatos = lContaoDAO.Consultar(); adapter = new ContatoAdapter(this, lstContatos); setListAdapter(adapter); registerForContextMenu(getListView()); } // Este evento ser chamado pelo atributo onClick // que est definido no boto criado no arquivo main.xml public void onClick(View view) { switch (view.getId()) { case R.id.add: InserirContato(); break; } } //Rotina executada quando finalizar a Activity ContatoUI @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { ContatoVO lAgendaVO = null; try{ super.onActivityResult(requestCode, resultCode, data); if (resultCode == Activity.RESULT_OK){ //obtem dados inseridos/alterados na Activity ContatoUI 62

lAgendaVO = (ContatoVO)data.getExtras().getSerializable("agenda"); //o valor do requestCode foi definido na funo startActivityForResult if (requestCode == INCLUIR){ //verifica se digitou algo no nome do contato if (!lAgendaVO.getNome().equals("")) { //necessrio abrir novamente o BD pois ele foi fechado no mtodo onPause() lContaoDAO.open(); //insere o contato no Banco de Dados SQLite lContaoDAO.Inserir(lAgendaVO); //insere o contato na lista de contatos em memria lstContatos.add(lAgendaVO); } }else if (requestCode == ALTERAR){ lContaoDAO.open(); //atualiza o contato no Banco de Dados SQLite lContaoDAO.Alterar(lAgendaVO); //atualiza o contato na lista de contatos em memria lstContatos.set(Posicao, lAgendaVO); } //mtodo responsvel pela atualiza da lista de dados na tela adapter.notifyDataSetChanged(); } } catch (Exception e) { trace("Erro : " + e.getMessage()); } } private void InserirContato(){ try{ //a varivel "tipo" tem a funo de definir o comportamento da Activity //ContatoUI, agora a varivel tipo est definida com o valor "0" para //informar que ser uma incluso de Contato Intent it = new Intent(this, ContatoUI.class); it.putExtra("tipo", INCLUIR); //chama a tela e incluso startActivityForResult(it, INCLUIR); } catch (Exception e) { trace("Erro : " + e.getMessage()); } } @Override protected void onResume() { //quando a Activity main receber o foco novamente abre-se novamente a conexo lContaoDAO.open(); super.onResume(); } @Override protected void onPause() { //toda vez que o programa perde o foco fecha-se a conexo com o BD lContaoDAO.close(); super.onPause(); } public void toast (String msg){ Toast.makeText (getApplicationContext(), msg, Toast.LENGTH_SHORT).show (); } private void trace (String msg){ 63

toast (msg); } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { try{ //Criao do popup menu com as opes sobre os Contatos AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo)menuInfo; if (!blnShort){ Posicao = info.position; } blnShort = false; menu.setHeaderTitle("Selecione:"); //a origem dos dados do menu est definido no arquivo arrays.xml String[] menuItems = getResources().getStringArray(R.array.menu); for (int i = 0; i<menuItems.length; i++) { menu.add(Menu.NONE, i, i, menuItems[i]); } }catch (Exception e) { trace("Erro : " + e.getMessage()); } } //Este mtodo disparado quando o usurio clicar em um item do ContextMenu @Override public boolean onContextItemSelected(MenuItem item) { ContatoVO lAgendaVO = null; try{ int menuItemIndex = item.getItemId(); //Carregar a instncia POJO com a posio selecionada na tela lAgendaVO = (ContatoVO) getListAdapter().getItem(Posicao); if (menuItemIndex == 0){ //Carregar a Activity ContatoUI com o registro selecionado na tela Intent it = new Intent(this, ContatoUI.class); it.putExtra("tipo", ALTERAR); it.putExtra("agenda", lAgendaVO); startActivityForResult(it, ALTERAR); //chama a tela de alterao }else if (menuItemIndex == 1){ //Excluir do Banco de Dados e da tela o registro selecionado lContaoDAO.Excluir(lAgendaVO); lstContatos.remove(lAgendaVO); adapter.notifyDataSetChanged(); //atualiza a tela } }catch (Exception e) { trace("Erro : " + e.getMessage()); } return true; } @Override protected void onListItemClick(ListView l, View v, int position, long id){ super.onListItemClick(l, v, position, id); //por padro o ContextMenu, s executado atravs de LongClick, mas //nesse caso toda vez que executar um ShortClick, abriremos o menu /e tambm guardaremos qual a posio do item selecionado Posicao = position; blnShort = true; 64

this.openContextMenu(l); } }

Layouts xml: contato_row.xlm:


<?xml version="1.0" encoding="utf-8"?> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:orientation="vertical"> <RelativeLayout android:id="@+id/LinearLayout02" android:layout_height="wrap_content" android:layout_width="fill_parent"> <TextView android:id="@+id/txtNome" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Nome" > </TextView> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/txtEndereco" android:text="Endereo" android:layout_below="@+id/txtNome"> </TextView> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/txtTelefone" android:text="Telefone" android:layout_below="@+id/txtEndereco"> </TextView> </RelativeLayout> </LinearLayout>

contato.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/txtAux1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:gravity="right" android:text="Nome :" android:width="70dip" > </TextView> 65

<EditText android:id="@+id/edtNome" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="5dip" android:layout_toRightOf="@+id/txtAux1" android:text="Nome Contato" android:width="190dip" > </EditText> <TextView android:id="@+id/txtAux3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/edtNome" android:layout_centerVertical="@+id/txtAux2" android:layout_marginTop="10dip" android:gravity="right" android:text="Endereo :" android:width="70dip" > </TextView> <EditText android:id="@+id/edtEndereco" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edtNome" android:layout_marginLeft="5dip" android:layout_toRightOf="@+id/txtAux3" android:text="Endereco Contato" android:width="190dip" > </EditText> <TextView android:id="@+id/txtAux5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/edtEndereco" android:layout_centerVertical="@+id/txtAux2" android:layout_marginTop="10dip" android:gravity="right" android:text="Telefone :" android:width="70dip" > </TextView> <EditText android:id="@+id/edtTelefone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/edtEndereco" android:layout_marginLeft="5dip" android:layout_toRightOf="@+id/txtAux5" android:text="Telefone Contato" android:width="190dip" > </EditText> <LinearLayout android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/edtTelefone" android:layout_marginTop="31dp" android:gravity="center_vertical" > 66

<Button android:id="@+id/btnConfirmar" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:onClick="btnConfirmar_click" android:text="Confirmar" /> <Button android:id="@+id/btnCancelar" android:layout_width="0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:onClick="btnCancelar_click" android:text="Cancelar" /> </LinearLayout> </RelativeLayout>

main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/add" android:layout_width="wrap_content" android:layout_height="62dp" android:layout_gravity="center_horizontal" android:onClick="onClick" android:text="Adicionar Contato" android:textSize="18dp" /> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Lista de Contatos:" android:textSize="22dp" android:textAppearance="?android:attr/textAppearanceLarge" /> <LinearLayout android:id="@+id/group" android:layout_width="wrap_content" android:layout_height="wrap_content" > </LinearLayout> <ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>

67

68

Vous aimerez peut-être aussi