UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO Alexandre Araújo e Silva Um Aplicativo Android para o Wiki Disciplinas do DCC/UFBA Salvador 2011 Alexandre Araújo e Silva UM APLICATIVO ANDROID PARA O WIKI DISCIPLINAS DO DCC/UFBA Monografia apresentada ao Curso de Graduação de Ciência da Computação, Departamento de Ciência da Computação, Instituto de Matemática, Universidade Federal da Bahia, como requisito para a obtenção do grau de Bacharel em Ciência da Computação. Orientador: Prof. Schwarzmuller Salvador 2011 Anna Friedericka Dedico este estudo a minha mãe, Dona Nara, minha maior incentivadora, meu maior exemplo e maior responsável por todas minhas realizações e conquistas. Gostaria de agradecer, primeiramente a Deus, e a todos que contribuíram para a realização deste trabalho, especialmente professora Frieda, pela orientação e por acreditar no sucesso do trabalho. RESUMO Este trabalho apresenta o protótipo de uma aplicação móvel que traz os benefícios da mobilidade, para que docentes e discentes do Departamento de Ciências da Computação da Universidade Federal da Bahia (DCC/UFBA) tenham acesso às informações do wiki de disciplinas através de um dispositivo móvel com a plataforma Android. O wiki de disciplinas do DCC/UFBA é uma ferramenta de colaboração, utilizada por alunos e professores para acessar informações sobre as disciplinas do departamento, projetada para o ambiente web. O Android é um sistema operacional para dispositivos móveis desenvolvido pela Google e outras grandes empresas de telefonia celular. Devido à necessidade de disponibilizar o conteúdo do wiki a todos em qualquer lugar onde estiverem, de uma maneira prática e fácil de visualizar, através de um dispositivo móvel, foi projetado e desenvolvido um protótipo de aplicativo móvel para acessar estas informações. Palavras-chave: Android, computação móvel, dispositivos móveis, wiki. ABSTRACT This paper presents the prototype of a mobile application that brings the benefits of mobility, so that teachers and students of Department of Computer Science of Federal University of Bahia (DCC/UFBA) have access to wiki disciplines information through a mobile device with Android platform. The wiki DCC/UFBA disciplines is a collaboration tool, used by students and teachers to access information about the department disciplines, designed for web environment. Android is an operating system for mobile devices developed by Google and other major cell phone companies. Because of the need to provide the wiki content to all everywhere they are, in a practical and easy to view through a mobile device, was designed and developed a mobile application prototype to access this information. Key words: Android, mobile computing, mobile devices, wiki Índice de Figuras Figura 1 - Logo do Android ........................................................................................ 31 Figura 2 - Arquitetura do Android .............................................................................. 34 Figura 3 - Emulador do Android ................................................................................ 39 Figura 4 - Versões do Android................................................................................... 40 Figura 5 - Ciclo de vida de uma activity ..................................................................... 42 Figura 6 - Exemplo de Activity ................................................................................... 44 Figura 7 - Exemplo BroadcastReceiver ..................................................................... 45 Figura 8 - Hierarquia de nós View e ViewGroup na interface gráfica ........................ 46 Figura 9 - Arquivo XML de layout .............................................................................. 47 Figura 10 – Exemplo de permissão ........................................................................... 49 Figura 11 - Estrutura do AndroidManifest.xml ........................................................... 50 Figura 12 - Tela inicial do Android Market ................................................................. 52 Figura 13 - Tela de instalação de um aplicativo ........................................................ 53 Figura 14 - Disciplinas.dcc.ufba.br ............................................................................ 57 Figura 15 - Diagrama de Casos de Uso .................................................................... 58 Figura 16 - Diagrama de sequência Buscar Disciplina .............................................. 59 Figura 17 - Diagrama de sequência Listar Disciplinas .............................................. 60 Figura 18 - Arquitetura da aplicação ......................................................................... 61 Figura 19 – Conexão com a página do wiki .............................................................. 61 Figura 20 - IDE Eclipse ............................................................................................. 62 Figura 21 - Tela de edição do XML Layout ............................................................... 63 Figura 22 - Tela inicial do aplicativo .......................................................................... 63 Figura 23 - XML de layout da Activity principal.......................................................... 64 Figura 24 - Parte do código da Activity Principal DisciplinasDCC ............................ 65 Figura 25 - Tela de Pesquisa por Disciplinas ............................................................ 65 Figura 26 - Tela Lista de Disciplinas ......................................................................... 66 Figura 27 - Tela de Seleção de Disciplinas ............................................................... 66 Figura 28 - Tela de exibição da disciplina ................................................................. 67 Figura 29 - Opções da Tela de Disciplinas ................................................................ 68 Figura 30 - Wiki acessado pelo aplicativo ................................................................. 68 SIGLAS E SÍMBOLOS 3G 4G AAC ADT API BSD CDMA CSS DCC DDMS GPS GSM HTML IDE IOS J2ME JVM MMS MP3 OHA PC PDAs RIM SDK SMS TDMA UID UFBA WAP WMA XML Terceira Geração de Celulares Quarta Geração de Celulares Advanced Audio Coding Android Development Tools Interface de Programação de Aplicações Berkeley Software Distribution Acesso Múltiplo por Divisão de Código Cascading Style Sheets Departamento de Ciências da Computação Dalvik Debug Monitor Service Sistema de Posicionamento Global Sistema Global para Comunicações Móveis HyperText Markup Language Integrated Development Environments Iphone Operating System Java 2 Micro Edition Máquina Virtual Java Serviço de Mensagens Multimídia MPEG-1/2 Audio Layer 3 Open Headset Alliance Computador Pessoal Personal Digital Assistants Research In Motion Software Development Kit Serviço de Mensagens Curtas Acesso Múltiplo por Divisão de Tempo Unix User Identification Universidade Federal da Bahia Protocolo para Aplicações Sem Fio Windows Media Audio Extensible Markup Language SUMÁRIO 1 INTRODUÇÃO ................................................................................................... 10 2 DISPOSITIVOS E APLICAÇÕES MÓVEIS ....................................................... 13 2.1 2.2 2.3 2.4 2.5 2.6 3 A PLATAFORMA ANDROID ............................................................................. 31 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 4 ARQUITETURA DO ANDROID ................................................................... 34 MÁQUINA VIRTUAL DALVIK ...................................................................... 38 ANDROID SDK ........................................................................................... 38 VERSÕES DO ANDROID ........................................................................... 39 COMPONENTES DA APLICAÇÃO ............................................................. 40 INTERFACE GRÁFICA ............................................................................... 46 SEGURANÇA E PERMISSÕES .................................................................. 48 ANDROID MANIFEST................................................................................. 49 COMUNICAÇÃO COM UM SERVIDOR ...................................................... 51 ANDROID MARKET .................................................................................... 52 TRABALHO DESENVOLVIDO .......................................................................... 54 4.1 4.2 4.3 4.4 5 COMPUTAÇÃO MÓVEL ............................................................................. 14 DISPOSITIVOS MÓVEIS ............................................................................ 19 PLATAFORMAS E LINGUAGENS .............................................................. 23 APLICATIVOS MÓVEIS .............................................................................. 26 MOBILIDADE, USABILIDADE E EFICIÊNCIA ............................................ 27 SEGURANÇA ............................................................................................. 29 QUESTIONÁRIO DE PESQUISA ................................................................ 54 WIKI DISCIPLINAS DO DCC....................................................................... 55 O PROJETO DA APLICAÇÃO .................................................................... 57 PROTÓTIPO DA APLICAÇÃO .................................................................... 61 CONCLUSÃO .................................................................................................... 70 REFERÊNCIAS ......................................................................................................... 72 APÊNDICE 1 - QUESTIONÁRIO .............................................................................. 75 10 1 INTRODUÇÃO Num mundo em que o fluxo de informações cresce de forma acelerada, manter-se atualizado é uma necessidade para todos. Estar o tempo todo conectado e ter sempre à sua disposição todos os recursos e informações necessárias à realização de suas tarefas são formas de alcançar este objetivo. O avanço da tecnologia tornou isso perfeitamente possível. A computação móvel trouxe a proliferação dos dispositivos móveis de diferentes formatos e capacidades que, aliados ao aperfeiçoamento das redes sem fio e telefonia celular, garantem a mobilidade aos seus usuários (INTEL, 2007). Não existe invenção que tenha avançado tanto no mundo quanto o celular. O aparelho passou por um processo de evolução, e deixou de ter apenas a função de servir como comunicador de voz, adquirindo ao longo do tempo novas funcionalidades e recursos, e originando novos dispositivos que chegam a possuir a capacidade de um computador pessoal. Hoje o número de aparelhos celulares já passou dos 5 bilhões, próximo de atingir a incrível média de um aparelho para cada habitante do planeta. Os usuários têm a necessidade de ter recursos como Sistema de Posicionamento Global (GPS), câmera, músicas, acesso à Internet, entre outros. A evolução dos dispositivos trouxe tudo isso e mais um pouco. Os principais recursos dos dispositivos móveis são as aplicações móveis, ou aplicativos, que vão desde simples ferramentas de produção pessoal até sistemas de contas de banco. Existem diversas plataformas móveis, cada uma com particularidades, vantagens e desvantagens. O objetivo principal das empresas desenvolvedoras é construir plataformas modernas e ágeis, que deixem seus usuários satisfeitos. Grandes empresas têm travado uma enorme disputa para se manter a frente do mercado consumidor. Visando este mercado em expansão, a Google, gigante da internet, juntamente com um grupo de grandes empresas de telefonia móvel, chamado Open Headset Alliance (OHA), criou o Android, uma plataforma de desenvolvimento para 11 aplicativos móveis, baseada no sistema operacional Linux. A plataforma apresenta uma interface visual rica, GPS, diversas aplicações já instaladas e ainda um ambiente de desenvolvimento bastante poderoso, inovador e flexível (LECHETA, 2010). Além disso, o Android é uma plataforma de código aberto e bastante flexível em relação a mudanças desejadas pelos desenvolvedores. O wiki Disciplinas do Departamento de Ciências da Computação da Universidade Federal da Bahia (DCC/UFBA) é uma ferramenta de colaboração coletiva onde alunos e professores do departamento compartilham informações sobre as disciplinas através de uma página web. No wiki é possível encontrar diversas informações sobre as disciplinas, como conteúdo programático, notas de aula, exercícios, assim como dados do semestre atual, como calendário com datas de provas e trabalhos, metodologia e notas dos trabalhos, entre outros. Dessa forma, alunos e professores se mantém sempre atualizados do que acontece nas disciplinas. Por isso, existe a necessidade de deixar estas informações disponíveis a todos em qualquer lugar que estiverem, de uma maneira prática e fácil de visualizar, através de um dispositivo móvel. Este trabalho tem como objetivo apresentar um protótipo de aplicativo móvel que traz os benefícios da mobilidade, aliado às facilidades de desenvolvimento oferecidas pela plataforma Android, para que docentes e discentes tenham acesso às informações do wiki de disciplinas. O tema e o objetivo do trabalho foram definidos devido ao desejo do autor de aprender novas tecnologias, que apresentassem uma tendência de crescimento no mercado tecnológico, e de desenvolver uma ferramenta útil para docentes e discentes do DCC. A escolha de desenvolver um aplicativo pra o Android se deu por conta da flexibilidade e das facilidades oferecidas por esta plataforma de desenvolvimento. Primeiramente, foi realizada uma pesquisa online com alunos e professores do DCC, cujo objetivo era medir a utilização de dispositivos móveis e do wiki de disciplinas, e o impacto que um aplicativo móvel para acessar as informações do wiki iria causar e se seria utilizado. 12 Os resultados da pesquisa mostraram a grande utilização de dispositivos móveis dentro do departamento e a tendência do número de adoções aumentar. Além disso, a maioria dos respondentes afirmou que utilizaria o aplicativo móvel para acessar o wiki de disciplinas. Como o resultado da pesquisa se mostrou positivo para o desenvolvimento do aplicativo, foi elaborado um projeto, onde os requisitos foram levantados e as funcionalidades da aplicação apresentadas. Após o projeto, foi construído um protótipo da aplicação, que simula o funcionamento do aplicativo real. Este trabalho está estruturado da seguinte maneira: introdução ao conteúdo abordado no texto, que é este primeiro capítulo. O segundo capítulo aborda os conceitos de dispositivos e aplicações móveis, traçando um histórico da computação móvel, descrevendo as principais plataformas e destacando as principais características desta tecnologia. No terceiro capítulo é descrita a plataforma Android, seu funcionamento e suas características. O trabalho desenvolvido é apresentado no quarto capítulo, dividido em três etapas: uma pesquisa entre alunos e professores do DCC/UFBA para avaliar a importância do aplicativo móvel a ser desenvolvido dentro do departamento; o projeto da aplicação, onde é descrito o funcionamento do aplicativo e, por último, o protótipo da aplicação, com detalhes sobre sua implementação. No quinto e último capítulo, são apresentadas as conclusões sobre o trabalho e os futuros trabalhos a serem desenvolvidos baseados neste estudo. 13 2 DISPOSITIVOS E APLICAÇÕES MÓVEIS O mercado de celulares e dispositivos móveis vem crescendo cada vez mais. De acordo com estudos, hoje existem mais de cinco bilhões de celulares no mundo, o que corresponde a quase um aparelho para cada pessoa da população. Os usuários modernos buscam cada vez mais celulares que possuam diversos recursos como câmeras, músicas, bluetooth, ótima interface visual, jogos, GPS, acesso a internet e e-mails, televisão digital, etc. O mercado corporativo também vê oportunidade nesse segmento, ao incorporar aplicações móveis no seu dia-a-dia trazendo mais agilidade para seus negócios e integrando-as com seus sistemas de back-end. Assim, como as empresas buscam lucros e mais lucros, celulares e smartphones podem se encaixar perfeitamente num espaço onde “mobilidade” é uma palavra cada vez com mais evidência. (LECHETA, 2010) A mobilidade remete os softwares de volta à arquitetura baseada em clienteservidor. Esta arquitetura era dominante há alguns anos atrás, antes que os aplicativos web, baseados em um cliente central (o navegador web), tomassem conta do mercado devido à explosão da internet. É a constante transformação do mundo tecnológico (NUNES, 2011). Nunes (2011) diz que o mundo móvel é muito mais híbrido e “despadronizado” que o mundo web, no qual a diferença se localiza basicamente nos navegadores, onde Internet Explorer e Firefox exercem certo domínio, e apresentam apenas pequenas diferenças na exibição de sistemas web. No mundo móvel, existe uma grande variedade de fabricantes de aparelhos e sistemas operacionais. Além disso, dispositivos móveis exigem que suas aplicações apresentem uma experiência de usuário muito mais simplificada que aquelas projetadas para ambiente web, exibidas em computadores pessoais (PCs). O motivo disto é que existe uma enorme diferença entre o tamanho de tela e a resolução de um 14 smartphone comum e o menor monitor de PC com resolução de 1024 por 768 pixels. Ou seja, não é muito provável que uma interface projetada para web se redimensione bem quando acessada em um dispositivo móvel. (NILSEN et al., 2007) São diversas as plataformas móveis, Java Micro Edition (J2ME), Iphone, Symbian, Blackberry, Android e Windows Mobile (agora Windows Phone), citando apenas as principais, cada qual com suas particularidades. Cada aparelho também tem suas características de hardware específicas, como câmera, GPS, tipo de teclado, tamanho e resolução de tela. Neste contexto, empresas e desenvolvedores buscam uma plataforma de desenvolvimento que seja moderna e ágil. Já os usuários necessitam de celulares com muitos recursos, que tenham visual elegante e moderno, e que sejam de fácil navegação. Grandes empresas têm disputado uma grande corrida para ter a preferência dos usuários neste nicho de mercado. Para ocupar este espaço, a Google, junto com grandes empresas do mercado de telefonia celular, formou a OHA, e criou o Android, plataforma de desenvolvimento para aplicativos móveis baseada no sistema operacional Linux, com diversas aplicações previamente instaladas e um ambiente de desenvolvimento com muitos recursos (LECHETA, 2010). 2.1 COMPUTAÇÃO MÓVEL Jhonson (2007) levanta um questionamento sobre o que se movimenta dentro do conceito da Computação Móvel, o dispositivo (junto com o usuário) ou o código. De acordo com o autor, “existe uma definição que diz que computação móvel permite que usuários tenham acesso a serviços independente de sua localização”. Para que este objetivo seja alcançado deve existir então uma infra-estrutura de comunicações sem fio, além de suporte à mobilidade. Assim, usuário e dispositivo se movimentam, o que não impede que o código também se movimente (entre dispositivos e servidores), conceito conhecido como “código móvel”. 15 Existe uma gama de serviços que podem ser implementados para computação móvel. Trocas de mensagens – Serviço de Mensagens Curtas (SMS) e Serviço de Mensagens Multimídia (MMS), serviço de e-mail, chat, são apenas alguns exemplos. Hoje em dia, o segmento que mais cresce nessa área são os aplicativos móveis, que oferecem diversos serviços, desde consultas bancárias ou marcações de consultas médicas até localização geográfica. Tudo isso só é possível devido à disponibilidade de acesso à comunicação. A utilização de serviços móveis só está disponível para o usuário por causa da existência das redes de telefonia celular e das redes sem fio. Os principais padrões de rede sem fio atualmente são as tecnologias bluetooth, WiFi, WiMax e 3G. A história do celular se inicia através de uma atriz, a austríaca Hedwig Kiesler. Kiesler era casada com um austríaco nazista fabricante de armas, e se mudou para os Estados Unidos em ocasião da segunda guerra mundial. Lá, ficou sabendo que alguns torpedos teleguiados da marinha americana haviam sido interceptados por inimigos. Então, empenhou-se na criação de um sistema em que duas pessoas se comunicassem mudando o canal, para que a conversa não fosse interceptada. Essa foi a primeira concepção do celular, patenteada em 19401. Em 1947, um grupo de engenheiros teve a idéia de criar um sistema que fosse capaz de realizar a comunicação entre dois telefones sem fio. Então, começou a ser desenvolvido no laboratório Bell, nos Estados Unidos, um sistema telefônico de alta capacidade interligado por diversas antenas, sendo que cada antena era considerada uma célula. Por isso o nome de celular. Inicialmente, as idéias não passaram muito da teoria e pouco se pôs em prática (JORDÃO, 2009). Entre 1947 e 1973, muitos fabricantes fizeram testes, mas o primeiro celular a ser desenvolvido foi o Ericson MTA, da Ericson, que pesava cerca de 40 quilogramas e seria instalado em porta-malas de carros (WIKIPEDIA, 2011). Porém, tudo começou de verdade em 1973, quando foi efetuada a primeira chamada de um telefone móvel para um telefone fixo. A partir deste fato pôde-se 1 Extraído de História de Tudo (História do Celular). Disponível em http://www.historiadetudo.com/celular.html 16 comprovar que o celular funcionaria perfeitamente e que a rede de telefonia projetada em 1947 tinha sido idealizada corretamente. Em 3 de abril de 1973, a Motorola se tornou a primeira empresa a mostrar um aparelho em funcionamento. O aparelho se chamava Dynatac e era apenas um protótipo, portanto não estava a venda ao público. Foi com ele que ocorreu a primeira ligação de um aparelho celular. Ele tinha 25 centímetros de comprimento, sete centímetros de largura e pesava cerca de um quilograma. Porém, o primeiro modelo só foi liberado comercialmente nos Estados Unidos apenas em 1983. Outras marcas já tinham iniciado suas operações no Japão e na Escandinávia, em 1979. Os primeiros aparelhos não eram tão portáteis e chegavam a pesar em média um quilograma e tinham quase 30 centímetros de altura. A maioria era desenvolvida para ser instalada em carros, e seu preço era astronômico, portanto apenas uma pequeníssima parte da população tinha acesso aos aparelhos. No início, os assinantes tinham que pagar 20 mil dólares para possuir um sistema telefônico deste tipo. Naquela época, consultorias contratadas para analisar as perspectivas do celular para investidores, concluíram que os celulares não eram um bom negócio e não vingariam, não alcançando mais do que 15% da população dos Estados Unidos ao final de 20 anos. Na análise, portanto, não foram levados em conta dois fatores essenciais: o impacto da miniaturização e a revolução da digitalização nas telecomunicações e na eletrônica em geral. Trinta anos depois, os consultores puderam comprovar o erro que cometeram em suas previsões. Nas décadas de 70 e 80, Japão e Suécia efetivaram tecnologias próprias. No final da década de 80, a tecnologia já estava desenvolvida em quase todos os países. Só em 1990, o primeiro celular foi lançado no Brasil, no Rio de Janeiro, e em seguida, em Uberlândia (WIKIPEDIA, 2011). A segunda geração de celulares chegou logo no início dos anos 90 e, além de novos aparelhos com tamanho e peso aceitáveis, também aderiu a novos padrões de comunicação. Acesso Múltiplo por Divisão de Tempo (TDMA), Acesso Múltiplo por Divisão de Código (CDMA) e Sistema Global para Comunicações Móveis (GSM) eram as três tecnologias de comunicação que imperavam naquela época. Esta geração perdurou até a virada do milênio e trouxe novidades como: 17 • O serviço de mensagem de texto (SMS): na época era pouco utilizado, pois as mensagens eram limitadas a poucos caracteres e não permitiam o uso de caracteres especiais. Além disso, era necessário que o celular do destinatário fosse compatível com o do remetente. Geralmente, um teclado alfanumérico estava presente nos celulares capazes de enviar mensagens de texto; • Toques monofônicos e polifônicos: com o avanço da tecnologia, surgiram para substituir as campanhias um tanto quanto irritantes dos celulares mais antigos; • Displays coloridos: os dispositivos monocromáticos não transmitiam tudo que os olhos podiam perceber. Logo, as fabricantes introduziram visores com escalas de cinza, recurso que permitia as pessoas distinguir imagens. Mas ninguém estava muito satisfeito ainda, pois tudo parecia muito irreal. Foi um grande susto quando surgiu o primeiro celular com quatro mil cores, uma tecnologia incrível para um aparelho tão pequeno. A partir daí, surgiram os aparelhos com 64 mil cores e, logo depois, com 256 mil cores – agora as imagens já podiam ser vistas como no mundo real e não se percebia mais a falta de cores. A evolução continuou e hoje os aparelhos possuem 16 milhões de cores, recurso fundamental em aparelhos de alta resolução; • Mensagens multimídia e Internet: com o advento das imagens coloridas, logo veio um novo recurso que possibilitava a troca de imagens entre celulares. Eram as mensagens multimídia, as famosas MMS. Com a evolução do serviço, tornou-se possível também o envio de vídeos. Mas o que as pessoas esperavam mesmo estava finalmente disponível nos celulares: a Internet. Evidentemente, ela não se parecia nem um pouco com a que era acessada através dos computadores pessoais. Havia a necessidade dos portais criarem páginas personalizadas para celular (páginas WAP), com conteúdo reduzido e poucos detalhes. Mas isso certamente iria evoluir muito em breve. Novos serviços eram implantados pelas operadoras de telefonia móvel e novas funções apareciam nos celulares. A geração 2,5G, não reconhecida oficialmente, foi marcada pelo aumento significativo da velocidade de acesso à Internet, pelas novas características dos aparelhos e por apresentar um novo conceito de celular aos usuários. 18 A implementação da câmera nos celulares foi um fato revolucionário. Apesar de até hoje a maioria dos celulares não possuir uma câmera de boa qualidade, naquela época foi uma grande novidade para os usuários um aparelho cuja função principal era a comunicação, trazer consigo este recurso. Uma função que se tornou um dos grandes atrativos nos celulares foi o suporte a reprodução de arquivos MPEG-1/2 Audio Layer 3 (MP3). O que hoje é comum, um dia já foi um grande luxo. Mesmo antes da existência desses arquivos, as fabricantes já cogitavam a idéia de reproduzir musicas no aparelho. O suporte a reprodução não se restringiu apenas a MP3, mas também a outros arquivos de áudio – como o Advanced Audio Coding (AAC) e o Windows Media Audio (WMA), entre outros. Além disso, muitos fabricantes adicionaram equalizador, suporte a listas de reprodução, visualizações, entre outros. Hoje já não se fala muito em celular. O assunto predominante são os smartphones, termo que foi adotado devido à utilização de um sistema operacional nos celulares. Além do sistema operacional, estão incluídos nos smartphones redes sem fio (WiFi), câmera de qualidade razoável, bluetooth, memória interna com muito espaço – ou espaço para cartão externo -, funções aprimoradas, suporte a redes de terceira geração (3G) e muito mais. Assim, a terceira geração de celulares chegou e trouxe com ela vantagens como videochamada, conexão de internet de alta velocidade, economia de energia nos aparelhos e funcionalidade de internet sem a necessidade de um aparelho celular (é possível utilizar a rede de internet 3G em Modems). Os dispositivos móveis evoluíram e de aparelhos sem fio destinados a comunicação com voz, com funcionalidades estáticas e codificadas em hardware, transformaram-se em dispositivos extensíveis, capazes de se conectar a Internet, transmitir dados e utilizar softwares avançados (MATTOS, 2005). A evolução continua e já se discutem idéias de como será a quarta geração de telefonia celular, apesar de que, como a 3G, ela demore algum tempo para chegar e se estabelecer. A quarta geração de celulares (4G) deve continuar investindo no avanço da transmissão de dados. É provável que os novos aparelhos comecem a trabalhar com o protocolo IP e sejam compatíveis com as redes de computador, tornando-se assim pequenos computadores. 19 2.2 DISPOSITIVOS MÓVEIS Estima-se que em 2020 o mundo terá cerca de 55 bilhões de dispositivos móveis, dentre os quais estarão celulares comuns, smartphones, Ipods, tablets e aqueles dispositivos que farão a comunicação entre máquinas. Isto sugere que a mobilidade irá superar largamente os limites atuais da telefonia celular móvel (SIQUEIRA, 2011). Nenhuma outra invenção se expandiu e alcançou tanto as pessoas em tão pouco tempo quanto o celular. O celular alcançou, em 30 anos, 5,3 bilhões de pessoas, numa população que se aproxima de 6,9 bilhões de habitantes. A previsão diz que, ao final de 2011, o mundo ultrapassará a marca dos seis bilhões de celulares. Televisão, rádio, computador pessoal e Internet, juntos, superam em apenas um bilhão a quantidade de usuários comparados aos de celulares. Quando se fala em dispositivo móvel, é comum pensar primeiramente em smartphone. Ambos viraram sinônimos. Porém, a variedade de dispositivos não se resume apenas aos smartphones. O número de novos dispositivos cresceu largamente na última década, com os laptops e seus modems 3G, netbooks e, ultimamente, os tablets. A tendência é que nos próximos dez anos estes dispositivos se multipliquem, num cenário em que a comunicação máquina-máquina deverá superar largamente a comunicação entre seres humanos. Do lado do usuário, haverá uma grande expansão na utilização da computação móvel, comercio móvel, videoconferência, televisão móvel e muitas outras aplicações da internet de banda larga móvel. O elemento de desequilíbrio deste cenário poderá ser o tablet, especialmente se for utilizado para recepção móvel de televisão, filmes, shows, revistas e livros, além de todas as outras funções hoje vistas nos smartphones. De acordo com dados revelados pela Wireless Intelligence2, no Mobile World Congress 2011, maior evento sobre dispositivos móveis do mundo, realizado em 2 http://www.wirelessintelligence.com/ 20 Barcelona no início de 2011, já existem países em que o número de celulares ultrapassa o número de habitantes. Na Europa, Itália (155), Portugal (140), Rússia (132), Alemanha (131), Espanha (128), Reino Unido (123), Ucrânia (120), Finlândia e todos os países escandinavos têm mais de 115 celulares por 100 habitantes. Na Ásia, a grande surpresa é a liderança do Vietnã, com 144 celulares por 100 habitantes. Em 2º lugar, vem o Japão, com 94 celulares em cada 100 pessoas. China e Índia são os dois maiores mercados do mundo. As estatísticas da China são surpreendentes. Em 10 anos, o número de celulares pulou de seis milhões para atuais 842 milhões. A China Mobile é a maior operadora do mundo, com mais de 600 milhões de assinantes. Na América Latina, a Argentina tem densidade expressiva de 133 celulares por 100 habitantes. No Brasil, a penetração já supera os 107%. Os países emergentes ocupam uma posição de destaque na expansão do celular no mundo. Nos países do BRIC (Brasil, Rússia, Índia e China) foram instalados 250 milhões dos 600 milhões de celulares postos em serviço no mundo inteiro em 2010. Devido ao fato de ter sido o continente em que a comunicação móvel chegou mais recentemente, a África apresenta o maior ritmo de crescimento. No Oriente Médio, a maior utilização se dá na Arábia Saudita (140 celulares a cada 100 pessoas) e em Israel (128 celulares a cada 100 pessoas). O Brasil disputa hoje com a Indonésia o quinto lugar entre os maiores mercados de telefonia do mundo. A Tabela 1 mostra o ranking com os sete países que lideram este mercado em número de celulares. Tabela 1 - Maiores mercados de telefonia do mundo País Número de celulares China 842 Índia 757 Estados Unidos 304 Rússia 220 Indonésia 209 Brasil 206 Japão 122 Fonte: SIQUEIRA, 2011 21 Como já se pode perceber, existem diversas categorias de dispositivos móveis. Estes grupos estão divididos por características como capacidade computacional, capacidade de armazenamento de dados, funcionalidades, recursos e tamanho. No primeiro grupo estão os laptops, notebooks e netbooks. Estes dispositivos são computadores portáteis, leves, que foram desenvolvidos para serem transportados e utilizados em qualquer lugar com facilidade. Possuem capacidade computacional equivalente a um desktop. No segundo grupo estão os Personal Digital Assistants (PDAs). Hoje já defasados, os PDAs possuem telas pequenas, mas tem um poder de processamento mais alto que o de telefones celulares, porém baixo se comparado à capacidade dos notebooks. Os PDAs suportam aplicativos desenvolvidos em linguagens de programação de alto nível, recursos multimídia, entre outros. Já foram bastante úteis na realização de tarefas simples. Seus aplicativos se propunham a gerenciar contatos, manejar despesas e organizar a agenda. Eram muito úteis na época dos monitores de tubo. Começaram a entrar em decadência quando surgiram os primeiros celulares com recursos parecidos. Hoje em dia, um aparelho que se assemelha aos PDAs antigos é o Ipod Touch (INFOWORLD/EUA, 2010) No terceiro grupo, estão os celulares e smartphones. Antes, estes aparelhos possuíam telas minúsculas e quase nenhum recurso. Porém, aparelhos com estas características já estão quase em desuso atualmente. Devido ao avanço tecnológico, a capacidade de memória destes dispositivos foi expandida, assim como o acesso a redes sem fio e o suporte a tecnologias avançadas, como o Java. Estes avançados aparelhos, conhecidos como smartphones, agora detém a maior fatia do mercado de celulares. Além de servir como telefone, estes aparelhos possuem recursos equivalentes ou até mais avançados que os existentes nos PDAs. São diversas marcas e modelos disponíveis, cada um com recursos, além de sistema operacional e poder de computação próprios. Os smartphones, com seus diversos recursos, colocaram em decadência pelo menos 10 gadgets que há algum tempo atrás ocupavam posição de destaque no mercado. Entre eles pode-se citar MP3 Players, consoles de videogame portátil, câmeras digitais, vídeo players, 22 gravador de voz, GPS, PDA, relógios de pulso, guia de ruas e televisores portáteis (BERTOLUCCI, 2011). No grupo mais recente, estão incluídos os leitores digitais, ou tablets. Inicialmente criados apenas para servirem como leitores de livros digitais, hoje funcionam como mini-computadores. Suas características se assemelham ao de PDAs e smartphones, porém com telas maiores, e mais recursos disponíveis. O tablet é um dispositivo móvel em forma de prancheta, que pode ser utilizado para acessar a Internet, visualizar fotos, ler livros, jornais e revistas, além de possuir recursos para organização pessoal e entretenimento com jogos de terceira dimensão (3D). A tela de touchscreen é o principal dispositivo de entrada, e suas funcionalidades podem ser acionadas pela ponta do dedo ou por uma caneta. Possui diversas funcionalidades semelhantes às de computadores completos e smartphones. Existem também os leitores de livros eletrônicos, que possuem recursos mais limitados que os tablets, e como o próprio nome já diz, servem para a leitura de livros em formato eletrônico. Como existem vários dispositivos numa mesma categoria, com características comuns e também diferentes, o desenvolvimento de aplicativos para dispositivos da mesma categoria pode variar. A forma de desenvolver uma aplicação, assim como a linguagem de programação utilizada irá depender do hardware e dos recursos disponíveis em cada aparelho. Durante o Mobile World Congress, o Iphone 4 foi escolhido o melhor dispositivo móvel da atualidade. Concorrendo com modelos lançados em 2010, como o Samsung Galaxy S, o HTC Desire e o LG Optimus 7, o aparelho foi escolhido pelo júri devido a fatores como design, qualidade da tela e “ecossistema fenomenal” (VEJA, 2011). A HTC foi escolhida a melhor fabricante do mundo, sendo considerado o seu rápido avanço no mercado, com um “ótimo” portfólio de produtos disponíveis em diversas plataformas (ver seção 3.4) – como as desenvolvidas por Google e Microsoft. 23 2.3 PLATAFORMAS E LINGUAGENS Existem vários sistemas operacionais para dispositivos moveis. Todos eles possuem plataformas para desenvolvimento e execução de seus aplicativos. Cada plataforma possui suas particularidades tais como linguagens suportadas (uma plataforma pode suportar mais de uma linguagem de programação, a exemplo do Symbian, que suporta as linguagens J2ME, Symbian C++ e Python, entre outras), recursos mínimos e aparelhos compatíveis. Isto significa que uma aplicação desenvolvida para uma plataforma não funcionará em outro. O primeiro sistema operacional para dispositivos móveis a se popularizar foi o PalmOS (MENDONÇA, 2007). Desenvolvido há quase 10 anos, chegou a atingir quase 90% do mercado mundial de palmtops nos tempos áureos. O sistema realizava tarefas simples muito bem, mas deixava a desejar em questões mais sofisticadas, como multitarefa ou recursos de segurança. Apesar de limitado, era surpreendentemente rápido e responsível. O desenvolvimento do PalmOS parou já há alguns anos, e foi substituído por uma nova plataforma, um sistema multitarefa chamado WebOS, baseado em Linux, destinado a smartphones. Além do Android, que será abordado logo mais, existem outras cinco plataformas mais fortes no mercado atualmente. É provável que, em alguns anos, algumas delas já não existam mais, com duas ou três dominando o mercado. • Java 2 Micro Edition (J2ME): criada pela Sun e atualmente mantida pela Oracle (após esta ter adquirido a Sun) é a plataforma Java voltada para dispositivos com recursos de hardware e software ilimitados. Pelo fato de necessitar-se apenas de uma máquina virtual (JVM – Java Virtual Machine) para executar aplicativos na linguagem J2ME, é suportada por um grande número de aparelhos. É uma plataforma gratuita, com diversas Integrated Development Environments (IDEs) disponíveis, sendo a maior comunidade de desenvolvedores móveis. Os sistemas operacionais que dão suporte a ela são: Symbian (UIQ, S30, S40, S60, S80, S90), Palm Os, Linux, Brew, BlackBerry e Microsoft Windows Mobile. A desvantagem do J2ME é estar muito desatualizado. Mesmo sendo a plataforma mais popular e utilizada, sua última especificação foi feita em 2002, quando os aparelhos ainda não 24 possuíam tantos recursos como os de hoje. Como conseqüência, o destino do J2ME é perder espaço e entrar em desuso, devido à ascensão de plataformas mais novas e atualizadas, como o Android e o Iphone. A linguagem Java é também utilizada em outras plataformas, como o BlackBerry e o Android, que veremos a seguir. É provável que, se não for lançada uma nova versão da plataforma (3.0) brevemente, o J2ME deixe de ser adotado. • Iphone Operating System (IOS): mantido pela Apple, possui sua própria plataforma de desenvolvimento e suporta aplicativos desenvolvidos apenas na linguagem Objective C através da ferramenta Iphone Software Development Kit (SDK). O Iphone SDK possui versões para Linux e Windows, por isso é necessário ter um computador com o sistema MAC OS instalado. Apesar do alto custo para iniciar o desenvolvimento e do grande número de aplicativos já existentes, a demanda por estes continua a crescer, sendo o Iphone uma das plataformas com maior índice de crescimento. • BlackBerry: os aparelhos são desenvolvidos pela Research in Motion (RIM) e possuem sistema operacional próprio, o BlackBerry OS. Possui sua própria linguagem de desenvolvimento, uma Interface de Programação de Aplicações (API) Java criada pela RIM, que oferece diversos recursos para que o desenvolvedor explore melhor o aparelho. O BlackBerry suporta também aplicativos desenvolvidos em J2ME, porém sem acesso a recursos que a API juntamente com a ferramenta BlackBerry JDE possibilitam a utilização. O BlackBerry já foi líder no mercado de smartphones, mas nos últimos anos perdeu algum espaço para Iphone e Android, porém continua entre os dispositivos mais utilizados. A plataforma tem popularidade destacável principalmente no mercado corporativo. Desenvolver para BlackBerry é difícil, pois apesar de utilizar Java, sua API possui particularidades que dificultam o processo e a base de conhecimento não é muito difundida. Somente agora, após perder espaço no mercado, é que a RIM tem visado facilitar o desenvolvimento, lançando novas versões da sua plataforma. • Symbian: é o sistema operacional utilizado pela maioria dos aparelhos de hoje, já foi mantido por um consórcio de diversos fabricantes, como Nokia, Siemens, Samsung, Ericsson, Sony Ericsson e Panasonic. Atualmente 25 pertence à Nokia, que adquiriu quase a totalidade de suas ações no final de 2008. A grande preocupação do Symbian é evitar ao máximo o desperdício dos recursos do celular, como bateria e memória. É um sistema totalmente modular, o que permite cada empresa criar sua própria interface. Devido a sua versatilidade, permite o desenvolvimento de aplicativos em diversas linguagens, como Symbian C/C++, Java ME, FlashLite, HyperText Markup Language (HTML) 5, Perl, Python, Ruby, Lua, Acelerômeter e QT. A Nokia oferece uma IDE gratuita para desenvolvimento, a Carbide C++, baseada no Eclipse. O Symbian é utilizado na Series 60, atualmente a maior plataforma para smartphones, desenvolvida pela Nokia e utilizada também pela Ericsson (WIKIPEDIA, 2011). • Windows Mobile/Windows Phone: é o sistema operacional móvel da Microsoft. Inicialmente conhecido como Pocket PC, ganhou o nome de Windows Mobile quando passou para uma versão que servia tanto para palmtops (Pocket PCs) quanto para celulares (smartphones) e também em outros aparelhos de multimídia em geral. Assim, as aplicações rodavam em ambos os dispositivos, sem alteração alguma. O Windows Mobile foi projetado para realizar boa parte do que é possível na versão do Windows para computadores pessoais, vindo com um conjunto de aplicações básicas bastante conhecidas no mundo do PC, como o Word, Excel, PowerPoint e Windows Media Player Pocket. O Windows Mobile foi sucedido pelo Windows Phone 7, lançado no final de 2010. O Windows Phone 7 foi totalmente reescrito, não sendo baseado nas versões anteriores do Windows Mobile, apresentando uma interface gráfica totalmente nova, não permitindo a personalização das interfaces e controlando rigorosamente todo o hardware do sistema operacional (WIKIPEDIA, 2011). Existem outras plataformas menos utilizados no mercado, como o Bada e o MeeGo, ambos baseados em Linux e de código aberto. O primeiro foi projetado exclusivamente para celulares Samsung. O segundo surgiu de uma parceria entre Nokia e Intel, que tem como foco levar o MeeGo além dos celulares e expandi-lo para netbooks,TVs, PDAs, GPS e tablets, realizando a integração entre todos os dispositivos onde estiver instalado, facilitando a comunicação entre os usuários desses aparelhos (CAMARGO, 2010). 26 2.4 APLICATIVOS MÓVEIS Milhares de aplicações móveis surgem todos os dias e exploram as diversas potencialidades das novas tecnologias de comunicação. Os aplicativos móveis são programas produzidos para dispositivos móveis como celulares, pagers, smartphones, tablets e alguns tipos de netbooks. Hoje em dia, mesmo os celulares mais simples possuem diversos aplicativos e ainda há a possibilidade de instalar novos aplicativos. Um estudo realizado pela Nokia, em parceria com um renomado professor da universidade americana Cornell University, mostrou que 55% dos usuários de smartphones acreditam que os aplicativos móveis influenciam beneficamente suas vidas. (CONVERGÊNCIA DIGITAL, 2011) Os smartphones, celulares com características que podem se comparar a computadores pessoais, como capacidade e funcionalidades, abriram caminho para o desenvolvimento do mercado de aplicativos móveis. Existe uma grande diferença entre os aplicativos móveis e as aplicações baseadas em web. Enquanto estas têm sua arquitetura baseada em um cliente central, que é o navegador web, as aplicações móveis tem arquitetura baseada em cliente-servidor, adotada pelos softwares que dominavam o mercado antes que a Internet explodisse no mundo da tecnologia. Essa pequena diferença impacta bastante no desempenho e na usabilidade das aplicações, o que será tratado na seção posterior. Os aplicativos podem ser utilizados com diferentes objetivos, tanto para aplicações pessoais quanto comerciais. Inicialmente, os aplicativos eram simplesmente ferramentas de escritório, como agenda, calendário, entre outros. Com o avanço dos recursos disponíveis nos dispositivos, abriu-se um leque de oportunidades a serem exploradas pelos desenvolvedores. 27 Existem infinitas possibilidades para o mercado de aplicativos móveis: informação, entretenimento ou serviço (PAPERCLIQ, 2009). De acordo com o estudo da Nokia, a coleção de aplicativos que uma pessoa possui em seu dispositivo demonstra suas necessidades, personalidade e interesses. Aplicativos de grande sucesso hoje em dia são os que permitem acesso, mesmo que muitas vezes limitado, a determinadas funcionalidades de redes sociais, mantendo o usuário conectado a sua rede de contatos em qualquer lugar que estiver. Cada plataforma possui um repositório próprio para que os desenvolvedores disponibilizem suas aplicações. Cada uma possui um conjunto de regras próprio para o compartilhamento dessas aplicações, assim como uma política de vendas e downloads. Tais repositórios são conhecidos como lojas de aplicativos, e as mais importantes são a Apple App Store, a Blackberry App World (RIM), a Ovi Store (Nokia) e o Android Market. A receita global das lojas virtuais de aplicativos para smartphones cresceu 160,2% em 2010, movimentando US$2,2 bilhões, mais que o dobro em relação aos US$828 milhões registrados em 2009, segundo pesquisa da IHS iSuppli. Líder absoluta do segmento, a Apple App Store respondeu por 82% do total das vendas. Em segundo lugar, apareceu a loja de aplicativos do BlackBerry, da RIM. O avanço mais expressivo se deu por parte da Android Market, da Google, que pulou para 4,7% crescimento de 3,3% em relação a 2009, e se aproximou da Ovi Store, loja de aplicativos da Nokia, atual terceira colocada. (TI INSIDE, 2011) Em termos de número de downloads, a IDC prevê que ele cresça de 10,9 bilhões em 2010 para 76,9 bilhões em 2014. Assim, acredita-se que o faturamento do setor ultrapasse US$35 bilhões até 2014. (IMASTERS, 2010) 2.5 MOBILIDADE, USABILIDADE E EFICIÊNCIA Geralmente, o objetivo dos usuários ao acessar websites ou aplicativos móveis é obter informações imediatas. Por isso, é de grande importância que a forma de 28 apresentação e a interface do dispositivo sejam adequadas para atender tais necessidades. O tipo de arquitetura utilizado pelas aplicações móveis pode causar grande impacto no desempenho e na usabilidade do aplicativo. São dois os tipos de arquitetura mais comuns, via web (HTML) ou com clientes específicos para cada plataforma (cliente-servidor). Nos aplicativos cliente, boa parte do conteúdo já está presente no aparelho: camada visual, tabelas, imagens, textos-padrão, entre outros. O que trafega pela rede são basicamente as informações necessárias para popular o aplicativo, que geralmente são textos simples e trafegam rapidamente pela rede. Na abordagem web, todo o conteúdo tem de ser carregado do servidor para o dispositivo, sendo necessário fazer o download de tudo a cada requisição. Além de ser mais lento, sai mais caro para o usuário, que precisa pagar pelo tráfego de dados. Além disso, a usabilidade das aplicações web é limitada pelo conjunto de recursos da linguagem HTML, mesmo que os navegadores móveis estejam evoluindo. Ainda são poucos os elementos de interface disponíveis para interatividade, como caixas de seleção e escolha, pop-ups, alertas, tabelas e alguns outros. Mesmo com as facilidades de acesso à Internet pelo celular, a experiência de uso das interfaces ainda carece de melhorias. Pesquisas e estudos apontam alguns problemas e motivos para a insatisfação dos usuários (AVELLAR E DUARTE, 2010): • A velocidade das conexões impede que os sites carreguem mais rápido; • Dificuldade de configuração dos serviços pelos usuários; • Programas simples como uma agenda de manuseio complicado, devido ao design inadequado do hardware; • Informações e conteúdo aproveitados diretamente de websites planejados para PCs, pouco adaptados para o ambiente móvel. Uma aplicação deve ser projetada e planejada para que funcione sem problemas no dispositivo móvel desejado. É necessário que o projeto tenha em vista 29 o tamanho reduzido das telas, para que a exibição do conteúdo não sofra nenhum distúrbio. Além disso, em termos de eficiência na utilização dos recursos, o ideal é usar somente o necessário. Assim, evita-se o processamento exagerado no dispositivo e, em conseqüência, o consumo alto de memória, o que poderia causar travamentos, além de outros problemas. A simplicidade e a facilidade de uso são extremamente importantes, pois fazem com que o usuário realize as tarefas desejadas correta e rapidamente. Se o usuário encontrar alguma dificuldade na primeira tentativa de uso, é provável que ele não use mais o aplicativo (NUNES, 2011). Projetar a aplicação para executar apenas tarefas simples ou em um servidor remoto são alternativas para alcançar essa simplicidade. Planejar com cuidado a aplicação é o ponto mais importante. O conserto de um aplicativo já pronto, para caber na memória do dispositivo, por exemplo, pode dar muito mais trabalho do que tomar precauções para que esses erros muito comuns sejam evitados. 2.6 SEGURANÇA Os dispositivos móveis armazenam muitas informações importantes, como números de telefone, endereços pessoais, oportunidades de negócios, senhas e documentos. Além disso, estes aparelhos estão cada vez mais conectados à internet, seja através de 3G ou Wifi, além de aplicações que permitem ao usuário visualizar e manipular contas financeiras, cotações de leilão e contas de compras com cartão de crédito estarem se tornando cada vez mais comuns. Por isso, os dispositivos móveis também estão vulneráveis a ataques maliciosos provocados por malware instalados nos mesmos. O número destes ataques aumentou mais de 45% em 2010, e a falta de conhecimento sobre as ameaças móveis por parte dos usuários e a falta de segurança dos dispositivos, faz com que a vulnerabilidade aumente (KATKAR, 2011). 30 A maioria das pessoas desconhece que as mesmas práticas que as deixam vulneráveis, como abrir links desconhecidos ou instalar programas pouco confiáveis, ou as protegem, como utilizar um antivírus, em seus computadores pessoais também são aplicados aos seus aparelhos portáteis. Existem diversos motivos que deixam os dispositivos móveis suscetíveis a ataques. Dentre eles está a distribuição de aplicativos através de lojas de terceiros, onde não há regras de certificação de aplicações. O uso regular do e-mail e as limitações atuais dos browsers móveis tornam mais difícil a identificação de mensagens e sites fraudulentos. Para melhorar este cenário, seria interessante adotar uma cultura de segurança móvel. A primeira medida que o usuário deve tomar é utilizar sempre a última versão do sistema disponível para o seu aparelho, estando sempre atento às atualizações. Outra postura que deve ser mantida é instalar apenas aplicativos disponibilizados por alguém confiável, de preferência apenas aqueles que estão na loja oficial do sistema. Os antivírus também já fazem parte do cenário dos dispositivos móveis. Mesmo mais leves que aqueles utilizados nos computadores, eles estão presentes rodando em background e analisando todo arquivo que o usuário tente abrir (Tech Dreams Brasil, 2011). 31 3 A PLATAFORMA ANDROID Visando ocupar um lugar de destaque também neste nicho de mercado, a Google, empresa que provocou uma grande revolução na internet nos últimos anos, juntouse a empresas do mercado de telefonia celular e criou um grupo chamado de Open Handset Alliance (OHA), com o objetivo de criar uma plataforma única e aberta para celulares que trouxesse maior satisfação dos consumidores para com o produto final. Fonte: SILVEIRA, 2010 Figura 1 - Logo do Android A esta nova plataforma de desenvolvimento para aplicativos móveis foi dado o nome de Android. Ela é baseada em um sistema operacional Linux, com diversas aplicações já instaladas e ainda, um ambiente de desenvolvimento bastante poderoso, ousado e flexível. Além disso, utiliza-se a linguagem Java para desenvolver as aplicações, podendo ser usados todos os recursos que ela oferece (LECHETA, 2010). O anúncio do Android, no início de novembro de 2007, atraiu grande atenção, pelo motivo de seu desenvolvimento estar sendo liderado pelo grande nome da Internet atualmente, a Google e, além dele, grandes outras empresas como a HTC, 32 LG, Motorola, Samsung, Sony Ericsson, Toshiba, Sprint Nextel, China Mobile, TMobile, ASUS, Intel, Garmin e muitas outras3, que formam a OHA. Antes do anúncio do Android, especulava-se que a Google iria lançar um aparelho (hardware), como o Iphone, intitulado Gphone. Mas o que se viu foi o lançamento de uma nova plataforma (software). Sendo um software, o Android está ao alcance de todos, podendo rodar em qualquer aparelho móvel, não importando a marca. É como o Microsoft Windows, que pode rodar em qualquer computador pessoal (LIMA, 2007). A vantagem do Android para os fabricantes de celulares é a existência de uma plataforma única e consolidada e, além disso, livre e de código aberto4. Sua licença flexível permite que cada fabricante realize modificações no código-fonte de acordo com suas necessidades e objetivos, sem a necessidade de compartilhá-las e sem precisar pagar nada pela utilização da plataforma. Também pelo fato de ser de código aberto, o Android pode ser aperfeiçoado por desenvolvedores de todo o mundo, que podem contribuir para seu código-fonte, corrigindo falhas e criando novas funcionalidades. Uma grande característica, se não a maior, do Android é possuir uma arquitetura bastante flexível, focada na integração de aplicações. Não há diferença entre uma aplicação nativa e outra desenvolvida por uma pessoa ou empresa. Isso significa que aplicações nativas podem ser integradas com “novas” aplicações, ou até mesmo substituídas pelas criadas. Isso é bastante interessante para operadoras e fabricantes de celulares, que tem a possibilidade de trocar telas e funcionalidades do celular de acordo com seu plano de marketing. A Motorola, por exemplo, desenvolveu o MotoBlur, uma repaginação do Android, que integra a plataforma com um conjunto de serviços que agrega redes sociais, e-mail e outros serviços da nuvem (AURICCHIO, 2009). 3 A lista completa dos integrantes do http://www.openhandsetalliance.com/oha_members.html 4 grupo pode ser O download do código-fonte do Android pode ser feito no site: http://source.android.com/ vista em 33 Durante a operação do sistema operacional Android, mensagens são disparadas o tempo todo para indicar a “intenção” do usuário de realizar determinada tarefa. Para isso existe uma classe, chamada de Intent, que é o coração do Android. De acordo com o conteúdo da mensagem, qualquer aplicação interessada neste pode interceptá-la e executar a tarefa necessária. Por exemplo, se existe a intenção de abrir uma aplicação nativa, como o browser, ou abrir uma nova tela de uma aplicação, basta criar um novo objeto Intent e configurar o conteúdo de sua mensagem para que possa ser reconhecido pelo sistema operacional. Outro ponto forte do Android é o sistema operacional baseado em Linux, onde ele mesmo é o encarregado de gerenciar a memória e os processos. Assim, diversas aplicações podem ser executadas ao mesmo tempo, sendo que aplicações que executam em segundo plano não são percebidas pelo usuário enquanto este acessa a internet ou atende uma ligação, por exemplo. Entre os demais recursos do Android pode-se citar: o Framework de Aplicação, que permite a incorporação, a reutilização e a substituição de recursos dos componentes; a Máquina Virtual Davik, máquina virtual otimizada para dispositivos móveis; Navegador Web Integrado, baseado na engine open source WebKit; Gráficos Otimizados, com gráficos e tratamento de imagens através de uma biblioteca 2D e gráficos 3D baseados na especificação OpenGL ES 1.0, que tornam possível a criação de jogos excelente qualidade de resolução; SQLite, gerenciador de banco de dados embutido; Suporte Multimídia a diversos formatos de som, vídeo e imagens, nativamente; Telefonia GSM, mesmo apresentando limitações dependentes de hardware, integração facilitada a tecnologias GSM; protocolos de comunicação Wireless, também com as limitações da telefonia GSM, suporta a tecnologia Bluetooth EDGE, 3G e Wi-Fi; Câmera, GPS, bússola e acelerômetro: integra-se facilmente a hardwares para câmeras embutidas e localização via GPS, como bússola e acelerômetro, ambos dependentes das limitações do hardware; Poderoso Ambiente de Desenvolvimento, com emulador de dispositivo, ferramenta para depuração, analisador de memória e performance e um plugin para a IDE Eclipse, o Android Development Tools (ADT) (PEREIRA, et al., 2009). 34 Além disso, existem também os recursos visuais e funcionalidades que impressionam o usuário comum. Através da navegação de telas por meio de touch screen, o usuário tem uma ótima experiência na utilização do aparelho. A plataforma Android já tem atingido, além dos celulares e tablets, netbooks, máquinas digitais, televisão e até mesmo carros, fazendo com que ela atinja mercados onde outras plataformas, como o Java ME, não conseguiram grande penetração (SILVEIRA, 2010). Com uma visão de futuro, o Android pode ser um potencial sistema operacional para desktops. Indício disso é que muito já se falou sobre o possível GoogleOS, existindo a possibilidade do Android ser o futuro GoogleOS camuflado, onde suas experiências podem ser de uma certa maneira transportadas para o desktop (LIMA, 2007). 3.1 ARQUITETURA DO ANDROID Já foi visto que o Android possui uma arquitetura bastante flexível. Ela é estruturada em cinco camadas, cada uma com uma funcionalidade específica, como pode ser visto na Figura 2 e descritas abaixo (GOOGLE, 2011): Fonte: GOOGLE, 2011 Figura 2 - Arquitetura do Android 35 • Aplicações Na camada superior (Applications), localizam-se as aplicações fundamentais do Android, como cliente de e-mail, mapas, navegadores, calendários, programas de SMS, agenda, gerenciadores de contatos, entre outros. • Framework Nesta camada localizam-se todas as APIs e os recursos necessários para os aplicativos, como classes visuais, que incluem listas, grandes, caixas de texto, botões e até um navegador web embutido, View system (componentes que constroem aplicativos), provedor de conteúdo (Content Provider), que possibilita o acesso a informações de uma aplicação por outra, ou o compartilhamento de informações, que possibilita a troca de informações entre aplicativos e gerenciadores de recursos, gerenciador de localização, gerenciador de notificação, de pacotes e de atividade, que controla o ciclo de vida da aplicação e o acesso e navegação entre as aplicações (AQUINO, 2007). Os principais elementos dessa camada são: o Activity Manager – gerencia o ciclo de vida das activities, no início e no final de sua execução, possibilitando o deslocamento de uma activity para outra e assim por diante. o Package Manager – utilizada pelo Activity Manager para ler as informações dos Pacotes de arquivos do Android (APK’s). O package manager se comunica com o resto do sistema e verifica os pacotes que estão sendo utilizados pelo sistema e suas capacidades. o Window Manager – gerencia as apresentações de janela, indicando aquela que está ativa e assim por diante. o Content Providers – possibilita a troca de informações entre os aplicativos, através do compartilhamento de dados. o View System – disponibiliza todo o tratamento gráfico para a aplicação, como botões, layouts e frames. 36 Nesta camada também se localizam outros elementos, como Location Service, Bluetooth Service, Wi-Fi Service, USB Service, e Sensor Service. Todos os componentes disponíveis no Android têm acesso pleno às APIs utilizadas pelo núcleo da plataforma. A reutilização de componentes é simplificada, possibilitando que qualquer aplicação publique suas capacidades e que estas possam ser reutilizadas por outra aplicação, dependendo apenas de restrições de segurança. • Bibliotecas O Android possui um conjunto de bibliotecas desenvolvidas em C/C++, que são utilizadas por vários recursos do sistema. Estas bibliotecas são acessadas pelos frameworks disponibilzados aos desenvolvedores. Dentre as principais bibliotecas estão: o Freetype – utilizada para renderizar fontes e bitmaps; o System C library – sua implementação deriva da biblioteca C padrão sistema (libc) do Berkeley Software Distribution (BSD); o Webkit – baseia-se no código aberto do browser webkit, um renderizador de páginas para navegadores, com suporte a Cascading Style Sheets (CSS), Javascript, Doom e Ajax; o SQLite – engine de banco de dados relacional, implementada em C, leve e embutida. o SGL – responsável pela composição de gráficos 2D; o Surface Manager – controla e gerencia o acesso aos subsistemas de exibição, como as camadas de aplicações 2D e 3D; o Media Libraries – suportam diversos formatos de áudio e vídeo, bem como imagens estáticas, e hardware e software de plug-ins de codec; o LibWebCore – utilizada para exibições web e no Android Browser; o 3D libraries – baseadas nas API’s do OpenGL ES 1.0. 37 • Android Runtime Pequena camada do ambiente de execução, que é instanciada a cada execução de uma aplicação no Android. O Dalvik foi projetado de forma que várias máquinas virtuais possam executar concorrentemente de maneira eficiente. As classes compiladas por um compilador Java (arquivos .class) são convertidas para a máquina virtual através da ferramenta DX, distribuída com o Android SDK, gerando um arquivo .DEX (Dalvik Executable), que é executado pelo Dalvik. O Dalvik baseia-se no kernel do Linux para prover a funcionalidade de múltiplas threads e a gestão de baixo nível de memória. O Core Librarie fornece a maioria das funcionalidades disponíveis nas principais bibliotecas do Java, através de um grupo de bibliotecas. Estruturas de dados, acesso a arquivos e acesso a redes e gráficos são algumas dessas funcionalidades. • Linux Kernel A versão 2.6 do kernel do Linux é utilizada pela arquitetura do Android. O kernel funciona como uma camada de abstração entre o hardware e o resto da pilha de software, além de servir para os serviços centrais do sistema, como segurança, gestão de memória, gestão de processos, pilha de protocolos de rede e modelos de drivers. Além disso, nesta camada também existe um poderoso gerenciador de energia, onde um aplicativo solicita o gerenciamento de energia e o driver de energia do kernel passa a checar periodicamente a utilização de todos os dispositivos, desligando aqueles que não estão sendo utilizados. 38 3.2 MÁQUINA VIRTUAL DALVIK A linguagem Java é utilizada para a construção de aplicações para o Android. Nesta abordagem, existe uma máquina virtual otimizada para execução em dispositivos móveis, chamada Dalvik. As aplicações do Android são desenvolvidas normalmente com o Java, utilizando-se todos os seus recursos, porém após o bytecod (.class) ter sido compilado, ele é convertido para o formato .dex (Dalvik Executable), que é a aplicação do Android compilada. Após isso, os arquivos .dex e outros recursos como imagens são compactados em um arquivo com extensão .apk (Android Package File), que é a aplicação final, pronta para ser distribuída e instalada. 3.3 ANDROID SDK O Android SDK5 é o software usado no desenvolvimento de aplicações no Android. Ele contém um emulador que simula o celular, ferramentas utilitárias e uma API completa para a linguagem Java, com todas as classes necessárias para desenvolver as aplicações. O Android SDK pode rodar em uma IDE como o Eclipse, Intellije e Netbeans. Pode ser desenvolvido também utilizando a linha de comando. A IDE Eclipse é a mais utilizada pelos desenvolvedores. Ela possui um plugin customizado, chamado Android Development Tool (ADT), que fornece suporte à edição de vários tipos de arquivos. O emulador contido no SDK pode simular diversos tipos de hardware. Ele representa perfeitamente o funcionamento de um celular com o Android. Tudo que executa num celular, pode ser executado no emulador. Um exemplo de emulador pode ser visto na Figura 3. 5 O Android SDK pode ser baixado em http://developer.android.com/sdk/ 39 Fonte: GOOGLE, 2011 Figura 3 - Emulador do Android Outro componente incluso no SDK é o Dalvik Debug Monitor Service (DDMS), que possibilita o acompanhamento de todos os processos que executam no hardware durante a aplicação, podendo simular inclusive o envio e recebimento de ligações e mensagens de texto. 3.4 VERSÕES DO ANDROID Existem diversas versões do sistema operacional do Android, e cada celular possui uma versão diferente. O primeiro celular Android, o HTC G1, possuía a versão 1.1 (LECHETA, 2010) e, obviamente, os mais novos dispositivos saem com versões mais recentes. No Android, uma versão do sistema operacional é conhecida como plataforma. Cada plataforma tem um código identificador, conhecido como API Level. A Figura 4 mostra as plataformas existentes até o momento da escrita deste trabalho, e as versões correspondentes do Android. 40 Fonte: GOOGLE, 2011 Figura 4 - Versões do Android As primeiras versões, até o Android 2.3, são utilizadas em smartphones. Já as versões mais novas, Android 3.0 e Android 3.1 são utilizadas pelos tablets, possuindo novos recursos disponíveis apenas para esses dispositivos. Para o futuro, a Google já anunciou uma nova versão, que se chamará Ice Cream Sandwich e tem como objetivo integrar smartphones e tablets, colocando todos os aparelhos móveis na mesma página, através de um sistema operacional modular (PC WORLD, 2011). 3.5 COMPONENTES DA APLICAÇÃO No Android, existe um grupo de quatro componentes essenciais, que o sistema pode instalar e executar sempre que necessário. Toda aplicação deve utilizar ao menos um desses componentes, não sendo necessária, entretanto, a utilização de todos eles ao mesmo tempo. Sempre que forem utilizados por uma aplicação, estes elementos devem ser declarados num arquivo Extensible Markup Language (XML), chamado AndroidManifest.xml. Neste arquivo estão contidos todos os componentes da aplicação, além das capacidades e requerimentos para tais (LECHETA, 2010). Os quatro componentes principais são: • Activities; • Intent Receivers ou Broadcast Receivers; • Services; 41 • Content Providers. A Activity (Atividade) é o componente mais comumente utilizado. Na maioria das vezes, é representado por uma tela na aplicação. Uma activity é sempre implementada como uma classe que extende da classe base Activity. Sua interface é composta por Views, que consistem em várias telas que respondem a eventos previamente programados. Cada activity possui um ciclo de vida específico, que é definido através dos seguintes métodos: • onCreate(): chamado na criação inicial da atividade; • onStart(): chamado quando a aplicação se torna visível para o usuário; • onResume(): chamado quando a aplicação inicia a interação com o usuário, ficando no topo da pilha de atividade; • onPause(): chamado quando uma outra atividade está prestes a começar. Geralmente as informações que ainda não foram salvas são gravadas neste momento; • onStop(): chamado quando a atividade não está mais em uso e perdeu foco para outra atividade; • onDestroy(): chamado quando a atividade termina, ou quando o sistema precisa liberar recursos, finalizando a atividade. 42 Fonte: adaptado de LECHETA, 2010 Figura 5 - Ciclo de vida de uma activity O ciclo de vida de uma activity, mostrado na Figura 5, funciona da seguinte maneira: quando uma atividade é iniciada, esta é colocada no topo da “pilha de atividades” e se torna a atividade em execução. Se existir alguma activity anterior, esta permanece na posição logo abaixo, e só passa para o estado “Executando” quando a activity acima for finalizada. Uma activity pode se encontrar em quatro estados: • Executando: a atividade está ativa no dispositivo; • Parada: a atividade perdeu foco para outra, mas mantém todas as suas informações de estado, mesmo sem interagir com o usuário. Pode ser finalizada se o sistema estiver com baixo nível de memoria disponível; 43 • Interrompida: a atividade não está sendo utilizada pelo usuário, mas mantém suas informações de estado. Geralmente é finalizada quando uma recuperação de memória é necessária e assim perde suas informações; • Finalizada: a atividade pode ser removida, caso esteja parada ou interrompida temporariamente. Nesse caso, o estado anterior só pode ser restaurado se o desenvolvedor tiver implementado os métodos. Existem basicamente três ciclos numa atividade: • Ciclo completo: começa no onCreate(), quando toda configuração é realizada, e termina no onDestroy(), com a liberação de todos os recursos utilizados pela atividade; • Ciclo de vida visível: começa no onStart(), quando a atividade fica disponível e visível para o usuário, mesmo não havendo interação. Termina com a chamada a onStop(), quando o usuário não visualiza mais a atividade; • Primeiro ciclo da atividade: começa no onResume() e termina no onPause(). É quando a atividade está visível e em interação com o usuário, no topo da pilha de atividades. O código neste período deve ser leve, devido a iminente troca dos estados onPause() e onResume(). O movimento entre as atividades é dado através da Intent, que representa a intenção de cada activity, ou seja, ela define o que deve ser feito caso seja acionada. A classe Intent Filter descreve todas as ações (Intents) que uma atividade pode acionar. Assim, quando uma Intent é acionada, o sistema busca os filtros de intenção de todas as atividades e escolhe aquela mais adequada com aquela Intent. Então, a nova activity é informada do interesse, carregando uma nova tela. Cada activity deve ser configurada no arquivo AndroidManifest.xml, utilizando a tag <activity>, como no exemplo da Figura 6, em que a activity ExemploActivity1 é a activity principal da aplicação. 44 Fonte: Adaptado de LECHETA, 2010 Figura 6 - Exemplo de Activity Os Services são códigos sem interface de usuário, que rodam em background e não são interrompidos pela troca de atividade pelo usuário. Diferentemente das activities que possuem ciclo de vida próprio e vida curta, os services mantém o serviço ativo até que seja recebida outra ordem. Através de uma interface de serviço a aplicação pode se conectar com um serviço conectado. Um serviço geralmente consome muitos recursos, além de memória e CPU. Não precisa de interface gráfica, pois não há necessidade de interação com o usuário. Um processo da classe Service pertence ao ciclo de vida controlado pelo sistema operacional do Android e é mantido em execução até que seja necessário encerrar alguns processos para liberar memória e recursos. O uso da classe Service poderia ser substituído pela utilização de uma thread simples, porém isto não é recomendado pois o Android conhece a classe Service e pode gerenciar o seu ciclo de vida junto com os outros processos do sistema operacional. Ou seja, se uma thread for utilizada ela pode ser eliminada pois não faz parte do ciclo de vida conhecido do Android. Por outro lado, existe um controle sobre o ciclo de vida da classe Service, que tem prioridade máxima sobre qualquer outro processo executando em segundo plano e somente será encerrado em condições críticas de memória (LECHETA, 2010). Mesmo que um Service seja encerrado, o Android posteriorimente tentará iniciálo para que o processo continue assim que as condições de memória e os recursos usados estejam normais. Assim, o serviço deve ser codificado de uma forma que seja possível recuperar o seu estado no momento de seu encerramento. Geralmente, um Service é iniciado por um Broadcast Receiver. 45 O Broadcast Receiver ou Intent Receiver é o componente responsável por tratar a reação ao evento recebido através de uma intenção. Ele não possui uma interface com o usuário, mas pode interagir com o usuário através de um gerenciador de notificações (Notification Manager), um mecanismo que alerta o usuário sobre a ocorrência de algum evento de interesse. A classe BroadcastReceiver sempre é executada em segundo plano durante pouco tempo e não há interface gráfica. Seu objetivo é receber uma mensagem (Intent) e processá-la sem o usuário perceber. O BroadcastReceiver é configurado no arquivo AndroidManifest.xml, utilizando a tag <receiver> em conjunto com a tag <intent-filter>, definindo uma ação e uma categoria. Na Figura ExemploReceiver1 que 7 podemos pode visualizar interceptar uma a configuração mensagem da com classe a ação FAZER_ALGO. Fonte: Adaptado de LECHETA, 2010 Figura 7 - Exemplo BroadcastReceiver O último componente é o Content Provider, ou provedor de conteúdo, utilizado quando existe a necessidade de compartilhar dados da aplicação com outras aplicações. Através dele, um repositório utilizado por ambas as aplicações permite o armazenamento e a recuperação de dados. Utilizando a classe ContentProvider, uma aplicação pode consultar, inserir, alterar e excluir informações de uma outra aplicação. O Android tem uma série de provedores de conteúdos nativos, como por exemplo, consultar os contatos da agenda, visualizar os arquivos, imagens e vídeos. Há um padrão na forma de comunicação da aplicação com um provedor de conteúdo, independetemente de ter sido criado pelo desenvolvedor ou ser nativo do Android. 46 3.6 INTERFACE GRÁFICA A interface gráfica de uma aplicação Android é construída utilizando-se objetos das classes View e ViewGroup. Existem diversos tipos de objetos e todos eles são descendentes da classe View (GOOGLE, 2011). A classe View serve como base para subclasses chamadas widgets, que oferecem objetos de interface completamente implementados, como botões e campos de texto. A classe ViewGroup serve como base para subclasses chamadas layouts, que oferecem diversos tipos de arquitetura de layout, como linear, tabular e relativa. A interface de uma Activity é declarada utilizando-se uma hierarquia de nós de View e ViewGroup, como visto na Figura 8. A árvore hierárquica pode ser simples ou complexa, dependendo da necessidade da aplicação e pode ser construída utilizando-se widgets e layouts pré-definidos ou com Views criadas pelo próprio desenvolvedor. Fonte: GOOGLE, 2011 Figura 8 - Hierarquia de nós View e ViewGroup na interface gráfica A activity deve chamar o método setContentView(), passando como referência o nó raiz da árvore de hierarquia, para que esta seja anexada à tela. A forma mais comum de se definir o layout da aplicação e expressar sua árvore é utilizando um arquivo XML. O XML oferece uma estrutura de fácil entendimento para o layout, como o HTML. Cada elemento XML é um objeto View 47 ou ViewGroup (ou descendente destes). Objetos View são as folhas da árvore, enquanto os objetos ViewGroup são os ramos. O nome de um elemento XML corresponde à classe Java que ele representa. Assim, um elemento <TextView> cria um objeto TextView na interface, e um objeto <LinearLayout> cria um objeto LinearLayout. Fonte: Adaptado de GOOGLE, 2011 Figura 9 - Arquivo XML de layout A Figura 9 mostra um exemplo simples de arquivo XML de layout vertical com um campo de texto e um botão. Pode-se notar que o elemento LinearLayout contém os elementos TextView e Button. É possível aninhar vários LinearLayout (ou outros tipos de view group), para construir layouts mais complexos. É possível também construir objetos View e ViewGroup no próprio código Java, utilizando o método addView(View) para inserir dinamicamente estes novos objetos. Um widget é um objeto View que serve como interface de interação com o usuário. O Android provê uma variedade de widgets, como botões, checkboxes e caixas de texto, permitindo rápida criação da interface. Existem também widgets mais complexos, como relógio e controle de zoom. Além disso, o desenvolvedor pode criar seus próprios elementos, definindo suas próprias classes ou extendendo e combinando widgets já existentes. 48 3.7 SEGURANÇA E PERMISSÕES O Android não apresenta um framework que gerencie e implemente políticas de segurança para o download de aplicativos. O gerenciamento é feito pelo próprio usuário, cabendo a este definir se determinada aplicação pode realizar determinada operação. O conceito de Unix User Identification (UID) implementado no Android é diferente daquele dos PCs, onde cada usuário tem um único UID e todas as aplicações que rodam para ele possuem o mesmo UID. No Android, um UID é alocado a uma aplicação e não a uma pessoa. As aplicações ficam separadas umas das outras, sendo cada uma um processo separado com UID único e com permissões de uso distintas. A arquitetura do Android foi desenhada de forma que nenhuma aplicação tenha permissão para realizar qualquer operação que impacte negativamente o funcionamento de outras aplicações, do sistema operacional ou do usuário. Isso inclui leitura ou gravação de dados particulares do usuário (como contatos e emails), ler ou escrever arquivos de outro aplicativo, acessar a rede, manter o dispositivo acordado, entre outros. O kernel do Android mantém as aplicações dentro de uma sandbox, que define os seus limites de utilização de recursos. Por conta disto, todos os recursos e dados devem ser compartilhados explicitamente. As permissões são declaradas pelas aplicações estaticamente e, no momento da instalação do aplicativo, o sistema solicita o consentimento do usuário. Não existe um mecanismo de concessão de permissões dinâmica, pois isso prejudicaria a experiência do usuário em detrimento da segurança. As aplicações Android (arquivos .apk) devem ser assinadas com um certificado cuja chave primária é mantida por seus desenvolvedores. Este certificado não precisa ser assinado por uma entidade de certificação. O objetivo dos certificados é identificar os autores de cada aplicação, permitindo que o sistema gerencie o acesso das aplicações a determinados recursos. 49 O Android tenta minimizar o impacto de uma aplicação em pertubar a experiência de uso do usuário fazendo com que a permissão de uso de determinadas funções, como discar um número, tenha que ser explicitamente solicitada (TAURION, 2010). Uma aplicação básica do Android não possui permissões associadas a ela, ou seja, ela não pode fazer nada que impacte na experiência do usuário ou em qualquer dado do dispositivo. Para usar qualquer recurso protegido do dispositivo, uma declaração deve ser incluída no AndroidManifest.xml, utilizando-se a tag <usespermission>. Na Figura 10, o exemplo de uma aplicação que precisa controlar o recebimento de SMS. Fonte: Adaptado de GOOGLE, 2011 Figura 10 – Exemplo de permissão 3.8 ANDROID MANIFEST Toda aplicação Android deve possuir um arquivo, conhecido como manifesto, o AndroidManifest.xml. Este arquivo deste conter todas as informações essenciais sobre o aplicativo que o sistema Android deve ter antes que ele possa executar qualquer código da aplicação. O manifesto inclui, entre outros: • A declaração do nome do pacote Java da aplicação, que serve como um identificador exclusivo para o aplicativo; • A descrição dos componentes da aplicação: activities, servers, broadcast receivers e content providers que compõem a aplicação; • A declaração das classes que implementam cada um dos componentes e a publicação de suas capacidades. Isto permite que o Android saiba o que os componentes são e em que condições eles podem ser iniciados; 50 • Processos que irão hospedar os componentes da aplicação; • Permissões que o aplicativo deve ter para acessar partes protegidas da API e interagir com outras aplicações; • Permissões que outras aplicações devem ter para interagir com componentes do aplicativo; • Nível mínimo da API do Android que o aplicativo requer; • Bibliotecas que devem ser ligadas à aplicação. A estrutura do arquivo AndroidManifest.xml pode ser vista na Figura 11. Fonte: GOOGLE, 2011 Figura 11 - Estrutura do AndroidManifest.xml 51 3.9 COMUNICAÇÃO COM UM SERVIDOR Existem aplicações que necessitam se comunicar com algum servidor web, para realizar o sincronismo das informações. No Android, pode-se utilizar o protocolo HTTP, sockets ou web services para realizar esta comunicação (LECHETA, 2010). Uma aplicação pode utilizar um banco de dados no Android, porém muitas vezes este banco já existe em algum lugar. Por questões de segurança e também da grande quantidade de informações que necessitam ser armazenadas, é recomendado que este banco esteja em um servidor convencional, e não no celular. Daí surge a necessidade da aplicação executando no celular se comunicar com o servidor do banco de dados para obter as informações necessárias. As aplicações de mobilidade estão se tornando cada vez mais “on-line”, acessando e atualizando as informações em tempo real. Hoje as operadoras fornecem serviços de internet com planos cada vez mais acessíveis, além da conexão 3G, que aumenta a velocidade da conexão. Dessa forma, é necessário desenvolver aplicações que se comuniquem com outras já existentes na internet. A primeira forma de comunicação é através de um socket, disponível em um determinado endereço e com uma porta devidamente aberta, aguardando a conexão. Utiliza-se o pacote java.net e a classe java.net.Socket, da mesma forma que uma aplicação Java normal. Outra forma de comunicação é através do protocolo HTTP, no qual um servidor web na internet é utilizado para receber as requisições e enviar a resposta para o celular. Nesse caso, o celular vira o cliente do servidor web, como se fosse um browser. A última maneira é acessando um web service, uma das tecnologias mais utilizadas para integrar aplicações atualmente. O Android não possui nenhuma API nativa para acessar um web service, porém qualquer outra biblioteca pode ser utilizada e incorporada a um projeto. No entanto, a biblioteca escolhida deve ser leve 52 e compacta, pois a aplicação irá executar num dispositivo móvel, que não tem a mesma capacidade de processamento de um computador normal. 3.10 ANDROID MARKET O Android Market6 é um repositório central dos aplicativos desenvolvidos para o Android. Nele, os desenvolvedores podem disponibilizar suas aplicações, de maneira semelhante ao Youtube7, bastando cadastrar e enviar o aplicativo. Ao publicar uma aplicação, o desenvolvedor tem que pagar uma taxa e concordar com os termos de uso. Depois disso, o aplicativo já pode ser baixado e instalado pelos usuários. Existem aplicativos gratuitos e outros pagos. Quem constrói os aplicativos tem direito a 70% dos seus lucros. Para os usuários utilizarem o Android Market basta acessar o site pelo celular e baixar o aplicativo desejado. Existe um ranking de melhores aplicativos, de acordo com a classificação e os comentários deixados pelos usuários. Fonte: EIRAS, 2011 Figura 12 - Tela inicial do Android Market A Figura 12 mostra a tela inicial do Android Market acessado pelo dispositivo, e a Figura 13 mostra a tela de instalação de um aplicativo. 6 Site para download de aplicativos do Android: http://market.android.com/ 7 Site de compartilhamento de vídeos: http://www.youtube.com/ 53 Fonte: EIRAS, 2011 Figura 13 - Tela de instalação de um aplicativo A Google possui uma estratégia para evitar a fragmentação da plataforma, mantendo controle sobre o acesso ao Android Market e sobre os aplicativos que permitem acesso aos serviços dA Google (Gmail, Maps, etc). Assim, há a possibilidade da Google pressionar os fabricantes e desenvolvedores a seguirem padrões de desenvolvimento que permitam que os softwares rodem em diversos dispositivos, evitando a expansão de aparelhos limitados, que rodem em apenas um ou poucos modelos (MORIMOTO, 2010). Além do Android Market, existem também outras lojas menores como o http://andappstore.com e http://slideme.org/. Elas servem como alternativas para desenvolvedores que tiveram seus aplicativos rejeitados no Android Market ou não querem pagar alguma comissão para vender seus aplicativos. Existe a possibilidade também de instalar os aplicativos localmente através do comando “adb install”, disponível no SDK. 54 4 TRABALHO DESENVOLVIDO O wiki Disciplinas do DCC hoje é acessado pela web. Nesse modelo, os alunos têm dificuldade em acessar informações sobre a disciplina se estiverem em um lugar remoto, sem acesso à internet através de um computador pessoal. Para melhorar este cenário, uma solução encontrada foi o desenvolvimento de uma ferramenta que disponibilize estes dados em qualquer lugar que o usuário se localize, atentando à tendência de expansão dos aplicativos móveis. O acesso a esta ferramenta será dado através de um dispositivo móvel com o sistema operacional Android, sendo aproveitadas as facilidades de desenvolvimentos providas por esta plataforma. O estudo foi iniciado com uma pesquisa entre online entre alunos e professores do Departamento de Ciências da Computação da UFBA, que responderam sobre a utilização de dispositivos móveis e do wiki de disciplinas. A partir dos resultados do questionário, concluiu-se que o aplicativo desenvolvido na plataforma Android seria útil e viável, dado o número considerável de adeptos do sistema operacional da Google, e a quantidade de pessoas que declararam a intenção de utilizar o aplicativo. O trabalho cobriu as etapas do processo de desenvolvimento de software de Análise de Requisitos, Especificação, Arquitetura de Software e Prototipação. As três primeiras fases são descritas na seção 4.3, e a última na seção 4.4. 4.1 QUESTIONÁRIO DE PESQUISA Para iniciar o trabalho foi realizada uma pesquisa entre alunos e professores do departamento com de medir a utilização de dispositivos móveis, a adoção da 55 plataforma da plataforma Android, do wiki de disciplinas, e o impacto que o aplicativo iria causar. O questionário constava de 10 perguntas e foi feito através da plataforma Google Docs, sendo enviado para as listas de discussão do departamento que todos os alunos e professores tem acesso. No total, 81 pessoas responderam ao questionário, o que corresponde a cerca de 20% do total de alunos e professores do departamento. Com base no resultado da pesquisa pode-se concluir que há uma ampla utilização de dispositivos móveis e também do wiki de disciplinas. Além disso, foi possível também medir a relevância de um aplicativo para acesso às informações presentes no wiki, sendo que a maioria dos respondentes declarou que utilizaria a ferramenta. As perguntas do questionário, assim como as respostas e os respectivos gráficos encontram-se no APÊNDICE 1 - QUESTIONÁRIO. 4.2 WIKI DISCIPLINAS DO DCC Um wiki é uma plataforma para compartilhamento coletivo de conteúdo. Nesta ferramenta, o usuário além de acessar o conteúdo, pode editá-lo. Todas as modificações são armazenadas em um lugar visível a todos, podendo ser desfeitas a qualquer momento com a mesma facilidade que foram feitas. Existem diversas ferramentas para criação e armazenamento de um wiki. O acesso ao conteúdo geralmente é disponibilizado a todos, porém sua edição é na maioria das vezes permitida apenas para usuários cadastrados. O wiki Disciplinas do DCC/UFBA8 utiliza a ferramenta Foswiki, e o seu acesso é público e gratuito. Entretanto, o acesso a modificações é restrito a alunos e professores do Departamento de Ciências da Computação da UFBA. Para acrescentar, alterar ou excluir qualquer conteúdo, basta utilizar os mesmos login e senha utilizados no laboratório do DCC. 8 http://disciplinas.dcc.ufba.br 56 O sistema disponibiliza o conteúdo das disciplinas, que são divididas em quatro grupos: Graduação, Mestrado, Doutorado e Currículo Antigo. Para cada disciplina, o sistema disponibiliza quatro opções: Página da Disciplina, SVN, Lista de Discussão e Pasta da Disciplina. A opção Página da Disciplina, que possui o conteúdo que será extraído e exibido no aplicativo móvel, está dividida da seguinte maneira: • A Disciplina: apresenta a visão geral da disciplina, os pré-requisitos, ementa, objetivos e metodologia. • Bibliografia: apresenta a bibliografia adotada pela disciplina. • Notas de Aula: nesta seção, são disponibilizados os arquivos utilizados pelos professores em sala de aula. • Exercicios: listas de exercícios passadas durante o semestre. • Links: lista de outros sites relevantes à matéria. • FAQ: sessão de dúvidas. • Semestre Corrente: geralmente, os professores utilizam este espaço para compartilhar o calendário da disciplina no semestre corrente, assim como notas e resultados parciais. • Semestres Anteriores: repositório de páginas dos semestres anteriores. • Ferramentas da web A página principal do wiki pode ser visualizada na Figura 14. 57 Figura 14 - Disciplinas.dcc.ufba.br 4.3 O PROJETO DA APLICAÇÃO Visto o número considerável de adeptos dos dispositivos móveis com a plataforma Android, e da quantidade de futuros utilizadores do aplicativo móvel, foi decidido o desenvolvimento da aplicação nesta plataforma. O aplicativo móvel proposto traz o conceito de mobilidade tornando possível o acesso às informações do wiki de disciplinas através de um dispositivo móvel com o sistema operacional Android. O sistema deverá exibir as informações das disciplinas, de acordo como foi descrito na seção 4.2. O sistema deve permitir que o usuário faça busca por uma disciplina ou que seja exibida uma lista de todas as disciplinas cadastradas no wiki. Além disso, o sistema deve permitir que o usuário acesse a página principal do wiki pelo próprio aplicativo. O usuário deverá apenas visualizar o conteúdo das páginas, não sendo permitida a alteração de nenhuma informação. Como o objetivo do aplicativo é apenas visualizar o conteúdo do wiki não é necessário que exista um controle de acesso de usuários, assim todos têm permissão de acesso a todas as funcionalidades. 58 Completando a etapa de análise de requisitos, são desenvolvidos os casos de uso. Eles descrevem os processos dos sistemas, especificando a interação destes com os agentes externos que o utilizam e identificando as consultas e transformações da informação necessárias (WAZLAWICK, 2004). De acordo com os requisitos levantados, o aplicativo aqui projetado possuirá três casos de uso: Buscar Disciplina, Listar Disciplinas e Abrir Site. O usuário é o único ator que interage com o sistema nos casos de uso. Segundo Bezerra (2007), diagramas de caso de uso correspondem a uma visão externa do sistema e representam graficamente os atores, casos de uso e relacionamentos entre eles. A interação de elementos externos com funcionalidades do sistema é ilustrada em um nível alto de abstração. A Figura 15 exibe o diagrama de casos de uso que descreve a interação do usuário com a aplicação. Figura 15 - Diagrama de Casos de Uso No caso de uso Buscar Disciplina, o usuário escolhe a opção na tela inicial, e o sistema abre a tela de pesquisa. O usuário preenche os campos de pesquisa e o sistema retorna uma lista com as disciplinas mais relevantes para a busca. Se não existir disciplina que satisfaça aos critérios de busca, o sistema retorna uma mensagem ao usuário. Se houver, o sistema abre a tela da disciplina com as opções listadas na seção 4.2. 59 No caso de uso Listar Disciplinas, o usuário escolhe a opção na tela inicial, e o sistema abre a tela de listagem por categorias. O usuário escolhe a categoria que deseja e o sistema abre uma nova tela de listagem, com as disciplinas disponíveis. O usuário seleciona a disciplina e o sistema abre a tela da disciplina com as opções listadas na seção 4.2. No caso de uso Abrir Site, o usuário escolhe a opção na tela inicial, e o sistema abre a página do wiki na web através do navegador do dispositivo móvel. Segundo Larman (2007), um diagrama de sequência ilustra as interações dos atores com os objetos do sistema, para um cenário específico de um caso de uso. No caso do aplicativo deste trabalho, o único ator é o usuário e os objetos do sistema são a interface do Android, a conexão HTTP e o Servidor. Abaixo, nas Figuras 16 e 17, são exibidos os diagramas de sequência dos casos de uso Buscar Disciplina e Listar Disciplinas. Não foi necessário exibir o diagrama do caso de uso Abrir Site, pois a única interação do sistema com usuário se dá quando o usuário escolhe a opção. A partir daí, a interação é do usuário com o navegador do dispositivo, e não com o aplicativo em si. Figura 16 - Diagrama de sequência Buscar Disciplina 60 Figura 17 - Diagrama de sequência Listar Disciplinas Pode-se perceber que os diagramas são similares. Em ambos, a aplicação só necessita conectar-se ao servidor para buscar a lista de disciplinas ou para exibir as informações. Nas demais ações, os dados necessários para exibição já fazem parte do código da aplicação. Não será necessário implantar um banco de dados, pois as informações necessárias serão recuperadas de um servidor de dados já existente. Como visto na seção 3.9, aplicativos Android podem se comunicar com um servidor de três formas diferentes: através de sockets, utilizando o protocolo HTTP ou com web services. No aplicativo proposto, a comunicação com o servidor é dada pela segunda forma, através de uma conexão HTTP. A arquitetura de software representa o sistema de uma forma abstrata, e direciona as interfaces entre ele e outros softwares, e também com o hardware ou com o sistema operacional (WIKIPEDIA, 2011). A arquitetura do aplicativo é ilustrada na Figura 19. Quando necessita de algum dado, a aplicação se conecta à página do wiki através de uma requisição HTTP, cabendo a esta a função de recuperar as informações do servidor, que está conectado a algum servidor de armazenamento. 61 Figura 18 - Arquitetura da aplicação A resposta da página web para o aplicativo é um arquivo HTML em forma de texto, que será processado pelo código da aplicação para se obter o conteúdo a ser exibido para o usuário. A conexão da aplicação é ilustrada na Figura 19. Figura 19 – Conexão com a página do wiki 4.4 PROTÓTIPO DA APLICAÇÃO Após a fase de projeto, foi construído o protótipo da aplicação. Um protótipo é um produto que ainda não está pronto para comercialização ou distribuição, apresentando algumas ou todas as funcionalidades que o produto terá. No protótipo aqui apresentado, apenas a comunicação entre as telas foi desenvolvida. A conexão com o servidor e o processamento das informações não foram implementadas, portanto o conteúdo apresentado nas telas provavelmente não refletirá o seu estado atual. 62 O protótipo foi desenvolvido utilizando-se a IDE Eclipse, que possui o ADT, um plugin customizado, que oferece diversas funcionalidades e facilita o desenvolvimento de aplicações Android pela ferramenta. A Figura 20 mostra a tela do ambiente de desenvolvimento. Figura 20 - IDE Eclipse Utilizou-se a plataforma API Level 8, que corresponde à versão 2.2 do Android, sendo definida também como a versão mínima de um dispositivo para executar a aplicação. A interface gráfica da aplicação foi construída utilizando os objetos de layout oferecidos pelo próprio Android. A IDE Eclipse oferece um recurso em que o layout da tela pode ser imediatamente visualizado, sem a necessidade de executar a aplicação. Na mesma tela de visualização, há uma caixa com todos os objetos, que podem ser arrastados para a tela e automaticamente inseridos no código. Além disso, algumas configurações podem ser editadas, como resolução e orientação da tela, o tema de layout utilizado pela aplicação, e a versão do Android. A Figura 21 mostra a tela de edição do arquivo XML de layout. 63 Figura 21 - Tela de edição do XML Layout A Figura 22 mostra a tela inicial do aplicativo, que possui três botões de interação com o usuário: Buscar Disciplina, Listar Disciplinas e Abrir Site. O primeiro abre a tela mostrada na Figura 25, com a tela de pesquisa de disciplina. O segundo botão abre a tela mostrada na Figura 26, e o último abre a página do wiki da disciplina, mostrado na Figura 30. Figura 22 - Tela inicial do aplicativo As Figuras 23 e 24 mostram os códigos do XML de layout e da activity principal DisciplinasDCC, respectivamente. Como visto na seção 3.6, o arquivo XML define a interface gráfica de cada activity, onde os objetos gráficos que farão parte da tela serão declarados. Na Figura 23, é possível visualizar a declaração de três objetos, o texto de boas vindas (classe TextView), a imagem da logomarca do DCC 64 (classe ImageView) e o botão para abrir a tela de pesquisa de disciplinas (classe Button). Figura 23 - XML de layout da Activity principal A Figura 24 mostra parte do código da activity principal. Toda activity deve iniciar com o método onCreate, onde é chamado o mesmo método da classe-pai (Activity) e definido qual o layout será utilizado pela activity, através do método setContentView. No exemplo mostrado, é utilizado o layout main.xml, mostrado na Figura 23. No código da aplicação, apenas os objetos de layout que interagem de alguma forma com o usuário, ou são dinamicamente alterados em tempo de execução, devem ser declarados. No exemplo aqui mostrado, o texto de boasvindas (TextView) e a imagem (ImageView) são estáticos e não interagem com o usuário, portanto não precisam ser invocados. Já o botão Buscar Disciplinas, deve abrir uma nova tela (activity) ao ser clicado. Por isso, o método setOnClickListener invoca a criação de uma nova Intent, cujo objetivo é abrir a nova tela. A nova activiy é iniciada pelo método startActivity. 65 Figura 24 - Parte do código da Activity Principal DisciplinasDCC Na tela de Pesquisa por Disciplinas, o usuário deve preencher o campo de texto com o nome ou código da disciplina, e selecionar uma ou mais opções de filtro (Graduação, Mestrado, Doutorado ou Currículo Antigo). As disciplinas correspondentes à pesquisa são retornadas e então o usuário escolhe a disciplina que deseja visualizar. Figura 25 - Tela de Pesquisa por Disciplinas 66 A Figura 26 mostra a tela de listagem de disciplinas. As listas são divididas em Graduação, Mestrado, Doutorado e Currículo Antigo, assim como no wiki. Figura 26 - Tela Lista de Disciplinas O usuário escolhe um combo, e seleciona a disciplina que deseja visualizar na lista mostrada na Figura 27. Figura 27 - Tela de Seleção de Disciplinas A tela de exibição das informações das disciplinas é mostrada na Figura 28. O texto recuperado do wiki é mostrado nesta tela. As opções oferecidas ao usuário estão no combo da parte superior da tela. 67 Figura 28 - Tela de exibição da disciplina Para obter as informações das páginas do wiki, a aplicação faz uma conexão HTTP com o servidor web, que retorna o conteúdo dos arquivos HTML em forma de texto. Neste ponto, existe a necessidade da aplicação extrair apenas o conteúdo que interessa ao usuário, eliminando as tags do HTML e as informações desnecessárias. A configuração do arquivo HTML gerado pelas páginas do wiki facilita este trabalho, pela existência de padrões que identificam as disciplinas nos menus, e consequentemente os links para suas opções. Para extrair o conteúdo, utiliza-se uma API do Java, que oferece mecanismos para o tratamento de expressões regulares, conhecida como Regex, disponível no pacote java.util.regex (SANTOS, 2009). Como o arquivo HTML contém padrões nas tags, utiliza-se estes padrões como expressões regulares, através da classe Pattern. Com os padrões formados, faz-se uma comparação no texto retornado pela página web, através da classe Matcher e encontra-se o conteúdo a ser exibido na aplicação. A Figura 29 mostra as opções da tela de Disciplinas. 68 Figura 29 - Opções da Tela de Disciplinas A Figura 30 mostra a página do wiki acessada pelo navegador do dispositivo, que é uma das funcionalidades do aplicativo. Figura 30 - Wiki acessado pelo aplicativo Fazendo uma comparação entre a Figura 30 e as demais figuras que mostram as telas da aplicação móvel, é notável a diferença de visualização e usabilidade. Enquanto a página, que foi projetada para ser acessada em dispositivos com tela de alta resolução, é exibida com o conteúdo distorcido, as informações exibidas pelo 69 aplicativo já estão ajustadas aos dispositivos de baixa resolução, prezando pela usabilidade. Além disso, a simplicidade aparece também como uma característica do aplicativo móvel. Apenas o conteúdo que é relevante para aplicação é exibido para o usuário, facilitando o manuseio e visualização das informações por parte do usuário. Isso impacta positivamente também no tráfego de dados pela rede, haja vista a necessidade de recuperar da página web apenas os textos, pois imagens e objetos já fazem parte da aplicação. 70 5 CONCLUSÃO O estudo abordado neste trabalho mostrou a evolução da computação móvel ao longo do tempo, destacando o crescimento do número de dispositivos móveis, e a adoção por parte de usuários comuns e do mercado corporativo às aplicações móveis. Foram estudadas as plataformas construídas por grandes empresas para atender as necessidades do mercado móvel, com destaque para o sistema operacional Android, desenvolvido pela Google juntamente com um grupo de grandes empresas de telefonia móvel. Através da apresentação das características e do funcionamento da plataforma Android, foi possível entender as vantagens que esse sistema operacional oferece. Estas vantagens têm como foco não apenas o usuário, por possuir diversos recursos que satisfazem as necessidades deste, mas foca também no desenvolvedor, provendo uma diversidade de facilidades de desenvolvimento, resultado de sua arquitetura altamente flexível, focada na integração de aplicações. O objetivo proposto pelo trabalho foi alcançado, sendo desenvolvido o protótipo do aplicativo, que permite o acesso às informações do wiki Disciplinas do DCC/UFBA através de um dispositivo móvel com o sistema operacional Android. A necessidade de trazer esta ferramenta para o ambiente móvel foi comprovada pela pesquisa realizada entre alunos e professores do departamento, na qual a maioria absoluta dos respondentes indicou que utilizaria o aplicativo proposto. O questionário também mostrou que o número de utilizadores de dispositivos móveis é grande, com tendência a crescer ainda mais. A quantidade de dispositivos que rodam Android também foi relevante para a escolha da plataforma que o aplicativo seria desenvolvido. Além de alcançar o objetivo, este estudo colaborou com a construção de um maior conhecimento em relação à computação móvel, sua evolução histórica, 71 características, vantagens e desvantagens. Foi possível entender também que é uma área que está em franco crescimento e tem muito a evoluir. Esta evolução se dará principalmente com o Android, uma plataforma relativamente nova, cuja tendência, revelada por números apresentados neste trabalho, é se tornar o sistema mais adotado entre os dispositivos móveis. Pelo fato de ser uma plataforma ainda em fase de maturação, ainda existem poucas fontes de referência comprovadamente confiáveis para o Android, sendo que a maior parte das existentes é encontrada na Internet. Assim, este estudo deve ser considerado como uma referência para futuros trabalhos cujo estejam envolvidos no tema o Android e a computação móvel. Como trabalhos futuros, podemos listar a conclusão do processo de desenvolvimento da aplicação, cujas etapas de implementação, testes e validação seriam realizadas. Melhorias no sistema, como adicionar todas as funcionalidades do wiki, como criação e edição de conteúdo e cadastro de usuários, além de integrar o aplicativo com outras aplicações dos dispositivos, como agenda, calendário e redes sociais. Além disso, a implementação da aplicação em outras plataformas também está na lista de futuros trabalhos. Esta iniciativa pode ser tomada como referência para que outros sistemas mantidos pelo departamento e pelo colegiado também sejam levados para o ambiente móvel. Para quem pretende iniciar o desenvolvimento de um aplicativo móvel na plataforma Android, aconselha-se começar pelo portal de suporte aos desenvolvedores do Android. O endereço do site é http://developer.android.com, e lá pode ser encontrado o material teórico, assim como diversos exemplos de códigos. Os assuntos abordados servem tanto para iniciantes na plataforma quanto para aqueles que já tem alguma noção. O manual de referência do Android também está todo no site. Um livro que também ajudou muito no desenvolvimento deste trabalho foi o Google Android: aprenda a criar aplicações para dispositivos móveis com o Android SDK, de Ricardo R. Lecheta, da Novatec Editora. O livro tem uma abordagem dinâmica e de fácil entendimento, com diversos exemplos que facilitam a aprendizagem da plataforma. 72 REFERÊNCIAS AQUINO, Juliana F. S. Plataformas de Desenvolvimento para Dispositivos Móveis. 2007. Monografia (Programa de Pós-Graduação em Informática) – PUC – Rio de Janeiro. AURICCHIO, Jocelyn. MotoBLUR é nova aposta da Motorola. Disponível em: <http://blogs.estadao.com.br/link/motoblur-e-nova-aposta-da-motorola>. Acesso em: 10 jun. 2011. AVELLAR E DUARTE. Usabilidade: Aplicativos móveis. Disponível em: <http://www.avellareduarte.com.br/projeto/dispositivosMoveis/dispositivosmoveis_us abilidadeAplicativos.htm>. Acesso em: 28 abr. 2011. BERTOLUCCI, Jeff. 10 gadgets que os smartphones mataram. Disponível em: < http://idgnow.uol.com.br/computacao_pessoal/2011/04/19/10-gadgets-que-ossmartphones-mataram > Acesso em: 18 mai. 2011. BEZERRA, Eduardo. Princípios de Análise e Projeto de Sistemas com UML. 2 ed. São Paulo: Ed. Campus, 2007. CAMARGO, Camila P. de. Sistemas operacionais móveis: qual a diferença? Disponível em <http://informticaaoalcancedetodos.blogspot.com/2010/02/diferencasentre-sistemas-operacionais.html>. Acesso em: 18 mai. 2011. CONVERGÊNCIA DIGITAL. Redes Sociais lideram preferência nos aplicativos móveis. Disponível em: <http://www.techlider.com.br/2011/02/redes-sociais-liderampreferencia-nos-aplicativos-moveis> Acesso em: 18 mai. 2011. EIRAS, Richarde. Instalando aplicativos no smartphone Android. Disponível em: <http://montoeiras.blogspot.com/2011/05/instalando-aplicativos-nosmartphone.html>. Acesso em: 07 jul. 2011. GOOGLE. Android Developers. Disponível em: <http://developer.android.com>. Acesso em: 20 jun. 2011. IMASTERS. Mercado de aplicativos móveis deve arrecadar US$ 35 bilhões até 2014. Disponível em: <http://imasters.com.br/noticia/19207/aplicativosmoveis/ mercado_de_aplicativos_moveis_deve_arrecadar_us_35_bilhoes_ate_2014> . Acesso em: 28 abr. 2011. INFOWORLD/EUA. Quem disse que computação móvel se resume a smartphone? Disponível em: <http://idgnow.uol.com.br/telecom/2010/03/24/quem-disse-quecomputacao-movel-se-resume-a-smartphone>. Acesso em: 2 mai. 2011. 73 INTEL. O conceito de mobilidade. Disponível em: <http://www.nextgenerationcenter.com/scriptServices/courseToPdf.ashx?courseId=d 9e21f02-821f-4d38-bdf0-41704c2978b6>. Acesso em: 25 mai. 2011 JOHNSON, Thienne M. Java para Dispositivos Móveis: desenvolvendo aplicações com J2ME. São Paulo: Ed. Novatec, 2007. ISBN 8575221434. JORDÃO, Fábio. História: a evolução do celular. Disponível em: <http://www.tecmundo.com.br/2140-historia-a-evolucao-do-celular.htm>. Acesso em: 28 abr. 2011. KATKAR, Sanjay. Segurança em dispositivos móveis é coisa séria. Disponível em: <http://mundodosjogos.org/seguranca-em-dispositivos-moveis-e-coisa-seria>. Acesso em: 14 jun. 2011. LARMAN, Craig. Utilizando UML e Padrões. São Paulo: Ed. Bookman, 2007. LECHETA, Ricardo R. Google Android: aprenda a criar aplicações para dispositivos móveis com o Android SDK. 2. ed. rev. e ampl. São Paulo: Novatec Editora, 2010. LIMA, Rafael. O que o Android, plataforma para mobiles do Google, vai trazer de mudança?. Disponível em: <http://imasters.com.br/artigo/7451/o_que_o_android _plataforma_para_mobiles_do_google_vai_trazer_de_mudanca>. Acesso em: 17 mai. 2011. MENDONÇA, Aderval. Para onde vão os Sistemas Operacionais móveis? Disponível em: <http://www.devmedia.com.br/post-4568-Para-onde-vao-os-SistemasOperacionais-moveis.html>. Acesso em: 2 mai. 2011. MORIMOTO, Carlos E. Entendendo o Android. Disponível em: <http://www.hardware.com.br/tutoriais/android/pagina2.html>. Acesso em: 17 mai. 2011. NUNES, Fabio. Aplicativos Móveis: por onde começar? Disponível em: <http://idgnow.uol.com.br/blog/plural/2011/02/09/aplicativos-moveis-por-ondecomecar>. Acesso em: 28 abr. 2011. PAPERCLIQ. Comunicação e Novas Tecnologias: Aplicativos Móveis. Disponível em: <http://www.slideshare.net/papercliq/comunciacao-e-novas-tecnologiasaplicativos-mveis>. Acesso em: 18 mai. 2011. PC WORLD. Já no forno, próxima versão do Android esquenta guerra dos sistemas móveis. Disponível em: <http://idgnow.uol.com.br/mercado/2011/05/13/ja-no-fornoproxima-versao-do-android-esquenta-guerra-dos-sistemas-moveis>. Acesso em: 14 mai. 2011. PEREIRA, Lucio C. O.; SILVA, Michel L. da. Android Para Desenvolvedores. Rio de Janeiro: Brasport, 2009. ISBN 978-85-7452-405-4. 74 SANTOS, Tadeu. Introdução a Expressões Regulares com Java. Disponível em: <http://javafree.uol.com.br/artigo/5090/Introducao-a-Expressoes-Regulares-comJava.html>. Acesso em: 30 jun. 2011. SILVEIRA, Paulo. Google Android: uma nova plataforma Java para celulares? Disponível em: <http://blog.caelum.com.br/google-android-uma-nova-plataformajava-para-celulares>. Acesso em: 17 mai. 2011. SIQUEIRA, Ethevaldo. Mundo terá 55 bilhões de dispositivos móveis em 2020. Disponível em: <http://blogs.estadao.com.br/ethevaldo-siqueira/2011/02/21/55bilhoes-de-dispositivos-moveis>. Acesso em: 28 abr. 2011. TAURION, Cezar. Segurança no Android. Disponível em: <https://www.ibm.com/developerworks/mydeveloperworks/blogs/ctaurion/entry/segur an_c3_a7a_no_android?lang=en>. Acesso em: 6 jun. 2011. TECH DREAMS BRASIL. Segurança em Dispositivos Móveis. Disponível em: <http://www.techdreams.com.br/?p=20>. Acesso em: 10 jun. 2011. TI INSIDE. Lojas de aplicativos móveis movimentam US$ 2,2 bilhões em 2010. Disponível em: <http://idgnow.uol.com.br/mercado/2011/05/13/ja-no-forno-proximaversao-do-android-esquenta-guerra-dos-sistemas-moveis>. Acesso em: 28 abr. 2011. VEJA. Iphone 4 é o rei dos dispositivos móveis. Disponível em: <http://veja.abril.com.br/noticia/vida-digital/iphone-4-e-o-rei-dos-dispositivosmoveis>. Acesso em: 28 abr. 2011. WAZLAWICK, Raul Sidnei. Análise e projeto de sistemas de informação orientados a objetos. Rio de Janeiro: Ed. Elsevier, 2004. ISBN 85-352-1564-6. WIKIPEDIA. História do Telefone Celular. Disponível em: <http://pt.wikipedia.org/wiki/História_do_telefone_celular>. Acesso em: 28 abr. 2011. —. Processo de desenvolvimento de software. Disponível em: <http://pt.wikipedia.org/wiki/Processo_de_desenvolvimento_de_software>. Acesso em: 8 jul. 2011. —. Symbian OS. Disponível em: <http://pt.wikipedia.org/wiki/SymbianOS>. Acesso em: 18 mai. 2011. —. Windows Phone 7. Disponível em: <http://pt.wikipedia.org/wiki/Windows_Phone_7>. Acesso em: 18 mai. 2011. 75 APÊNDICE 1 - QUESTIONÁRIO Segue abaixo um resumo das perguntas e respostas do questionário, que foi aplicado antes do início do trabalho, com o objetivo de medir a utilização de dispositivos móveis e do wiki de disciplinas, além de verificar a necessidade de um aplicativo móvel para acesso às informações do wiki. Total de respondentes: 81. 1. Você possui um dispositivo móvel? 76 2. Quantos aparelhos? 3. Qual tipo de dispositivo? 77 4. Qual o Sistema Operacional do seu dispositivo(s)? 5. Você está satisfeito com o aparelho? 78 6. Você pretende adquirir outro dispositivo? 7. Você pretende adquirir um dispositivo móvel? 79 8. Você utiliza o wiki para acompanhar o andamento das disciplinas do DCC (http://disciplinas.dcc.ufba.br)? 9. Você acha que o wiki é utilizado de maneira satisfatória? 80 10. Você utilizaria um aplicativo no seu dispositivo móvel para acompanhar o wiki?