CCOMDroid
Transcrição
CCOMDroid
CCOMDroid Bruno Teixeira Martins - 20168 Trabalho realizado sob a orientação de Nuno Gonçalves Rodrigues Engenharia Informática 2013/2014 CCOMDroid Relatório da UC de Projeto Licenciatura em Engenharia Informática Escola Superior de Tecnologia e de Gestão Bruno Martins 2013/2014 iii A Escola Superior de Tecnologia e Gestão não se responsabiliza pelas opiniões expressas neste relatório. iv Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projeto. ___________________________________________ Nuno Rodrigues Orientador Certifico que li este relatório e que na minha opinião, é adequado no seu conteúdo e forma como demonstrador do trabalho desenvolvido no âmbito da UC de Projeto. ___________________________________________ Arguente Aceite para avaliação da UC de Projeto v vi Dedicatória Dedico este trabalho à minha família, em especial aos meus pais, que sempre acreditaram em mim e que me deram todo o apoio até ao final. À minha namorada, que esteve sempre ao meu lado e que me deu toda a força necessária para que eu concluísse o curso. vii viii Agradecimentos Agradeço aos meus pais por me darem todas as condições necessárias para a minha vida académica. Agradeço as minhas irmãs pelos momentos em que puderam estar ao meu lado e pelo apoio dado. Agradeço à minha namorada por toda a motivação que me dá de seguir em frente e batalhar por uma vida melhor. Agradeço aos meus amigos por todos aqueles bons e maus momentos que me fizeram ser feliz e ganhar experiência de vida. Agradeço ao meu amigo Bruno Lopes, pelo seu trabalho de edição de imagem e pela ajuda na criação do ícone da aplicação. Agradeço ao meu coordenador Nuno Rodrigues pelo acompanhamento ao longo do projeto. A todos o meu obrigado, sem todas estas pessoas eu não seria o que sou hoje e de certeza que não me sentiria tão realizado como me sinto. ix x Resumo Hoje em dia os smartphones passaram a ser um bem presente em quase todos os bolsos da humanidade. Como existem neste momento vários sistemas operativos, optou-se pelo Android, por trazer alguma liberdade e também por causar mais dificuldade pelo facto de existirem diversos dispositivos com características bastante diferentes. Tirando partido de todos estes fatores, propõe-se uma aplicação móvel que tem por objetivo facultar várias informações relativas ao Centro de Comunicações e ao Instituto Politécnico de Bragança. Palavras-chave: Aplicação Móvel, Centro de Comunicações, Instituto Politécnico de Bragança. xi xii Abstract Nowadays "smartphones" have become an ever-present in almost every pocket of humanity. As there are currently several operating systems, we opted for Android, for bringing some freedom and also more difficulty by the fact that there are many devices with very different characteristics. Taking advantage of all these factors, we propose a mobile application that aims to provide various information to the Communications Centre and the Polytechnic Institute of Bragança. Keywords: Mobile Application, Communications Centre, Polytechnic Institute of Bragança. xiii xiv Conteúdo 1 2 Introdução .......................................................................................................................... 1 1.1 Enquadramento ............................................................................................................. 1 1.2 Objetivos ....................................................................................................................... 2 1.3 Estrutura ........................................................................................................................ 2 Estado da Arte ................................................................................................................... 5 2.1 Dispositivos e Sistemas Operativos Móveis ................................................................. 5 2.1.1 iOS .......................................................................................................................... 6 2.1.2 Windows Mobile e Windows Phone ...................................................................... 6 2.1.3 Blackberry OS – RIM ............................................................................................ 7 2.1.4 Bada ........................................................................................................................ 7 2.1.5 Ubuntu Touch ......................................................................................................... 7 2.1.6 Firefox OS .............................................................................................................. 7 2.2 O Sistema Operativo Android ....................................................................................... 8 2.2.1 Visão Geral e História ............................................................................................ 8 2.2.1.1 2.2.1.2 2.2.1.3 2.2.1.4 2.2.1.5 2.2.1.6 2.2.1.7 2.2.1.8 2.2.1.9 2.2.1.10 2.2.2 2.2.2.1 2.2.2.2 2.2.2.3 2.2.2.4 2.2.2.5 2.2.3 2.2.4 2.2.5 2.2.6 Versão 1.0 (Sem nome) ............................................................................................................... 8 Versão 1.5 Cupcake..................................................................................................................... 8 Versão 1.6 Donut......................................................................................................................... 9 Versão 2.0 Éclair ......................................................................................................................... 9 Versão 2.2 Froyo ......................................................................................................................... 9 Versão 2.3 Gingerbread ............................................................................................................. 10 Versão 3.0 Honeycomb ............................................................................................................. 10 Versão 4.0 Ice Cream Sandwich ............................................................................................... 10 Versão 4.1 Jelly Bean ................................................................................................................ 10 Versão 4.4 KitKat .................................................................................................................. 11 Arquitetura ........................................................................................................... 12 Aplicações ................................................................................................................................. 12 Framework Aplicacional ........................................................................................................... 12 Livrarias .................................................................................................................................... 12 Android runtime ........................................................................................................................ 13 Kernel ........................................................................................................................................ 13 Máquina virtual Dalvik ........................................................................................ 13 Sistema de ficheiros ............................................................................................. 13 Preferências e notificações ................................................................................... 14 Modelo de segurança ............................................................................................ 15 2.3 Frameworks de Desenvolvimento............................................................................... 15 2.3.1 Java ....................................................................................................................... 16 2.3.2 Ambientes de desenvolvimento ........................................................................... 16 2.3.3 Android SDK........................................................................................................ 16 2.3.4 Android Virtual Device Manager ......................................................................... 17 3 Análise de Requisitos ....................................................................................................... 18 xv 3.1 Requisitos Gerais ........................................................................................................ 18 3.2 Requisitos Funcionais ................................................................................................. 19 3.3 Diagrama de Casos de Uso ......................................................................................... 20 3.4 Diagrama de Classes ................................................................................................... 23 3.4.1 MainActivity ........................................................................................................ 24 3.4.2 Map_Fragment ..................................................................................................... 25 3.4.3 IpbFragment ......................................................................................................... 25 3.4.4 DBHelper ............................................................................................................. 25 3.4.5 News_Fragment ................................................................................................... 26 3.4.6 Config_Fragment ................................................................................................. 26 3.5 4 Base de Dados ............................................................................................................. 27 Desenvolvimento .............................................................................................................. 29 4.1 Aplicação .................................................................................................................... 29 4.1.1 CCOMDroid Ecrã Principal ................................................................................. 30 4.1.2 Últimas Notícias ................................................................................................... 31 4.1.3 Mapa ..................................................................................................................... 32 4.1.4 Tutoriais de Configuração .................................................................................... 33 4.1.5 Links Úteis ........................................................................................................... 34 4.1.6 Funcionalidades em background .......................................................................... 35 4.1.7 Outras informações .............................................................................................. 35 5 Conclusão ......................................................................................................................... 38 5.1 16 Trabalho Futuro .......................................................................................................... 39 xvii Lista de Figuras Figura .1– Android 2.0 Éclair. ............................................................................................................................. 9 Figura .2– Android 4.4 KitKat. .......................................................................................................................... 11 Figura .3– Arquitetura Android. ....................................................................................................................... 12 Figura .4– Taxa de versões Android ativas. ...................................................................................................... 19 Figura .5– Diagrama de Casos de Uso. .............................................................................................................. 20 Figura .6– Diagrama de Classes. ........................................................................................................................ 23 Figura .7– Base de dados. ................................................................................................................................... 27 Figura .8– Design................................................................................................................................................. 29 Figura .9– Ecrã principal. .................................................................................................................................. 30 Figura .10– Últimas Notícias. ............................................................................................................................. 31 Figura .11– Mapa com drawer. .......................................................................................................................... 32 Figura .12– Tutoriais de configuração. ............................................................................................................. 33 Figura .13– Links Úteis. ...................................................................................................................................... 34 xviii xix Lista de Abreviações IDE – Integrated Development Environment SDK – Software Development Kit CCOM – Centro de Comunicações IPB – Instituto Politécnico de Bragança HTML – Hyper Text Markup Language XML – Extensible Markup Language JIT – Just In Time CDMA – Code Division Multiple Access xx xxi Capítulo 1 1 Introdução 1.1 Enquadramento Com a chegada do primeiro Iphone e por consequente o aparecimento de dispositivos concorrentes, o mercado mobile teve um crescimento exponencial, permitindo a redução de preços e uma evolução a nível de tecnologias. Os smartphones permitem agora todas as mesmas funcionalidades básicas dos tradicionais telemóveis (realização de chamadas, envio de mensagens), com o acréscimo de outras funcionalidades muito úteis no nosso dia-a-dia, tais como ler/enviar emails, aceder à Internet, e fazer uso de um enorme número de aplicações criadas não apenas por empresas mas também por programadores individuais. Os alunos do Instituto Politécnico de Bragança que possuem um smartphone têm a possibilidade de aceder aos diversos serviços online disponibilizados pela Instituição, mas é necessária a utilização de um "browser", de ter conhecimento dos vários endereços web existentes para estes serviços e até de uma configuração prévia para estabelecer uma ligação à rede "Eduroam". Tendo em conta estas informações, torna-se útil a existência de uma aplicação que faça a junção dos diversos serviços disponíveis, que permita um acesso muito mais simples e rápido e que disponibilize tutoriais de forma offline para a configuração da rede "Eduroam" nos principais sistemas operativos utilizados pelos alunos. 1 1.2 Objetivos O principal objetivo do presente projeto é desenvolver uma aplicação para smartphones Android que disponibilize à comunidade do IPB informações sobre o Centro de Comunicações e a Instituição como um todo. O resultado final deverá consistir numa aplicação móvel que será disponibilizada na Play Store da Google, e que permitirá ao utilizador aceder às notícias mais recentes das várias escolas do instituto, aceder de forma offline a tutoriais de configuração de rede e serviço de correio eletrónico, consultar um histórico de localização em vários pontos de interesse na cidade de Bragança, obter direções, e também aceder aos principais serviços Web do IPB. 1.3 Estrutura Este documento está dividido em cinco capítulos - Introdução, Estado da Arte, Análise de Requisitos, Desenvolvimento e Conclusão, podendo cada um deles ser dividido em secções para uma melhor definição dos mesmos, tal como se apresenta de seguida: Capítulo 1 – Introdução Este capítulo descreve o contexto deste projeto, porque é que o desenvolvimento do mesmo é benéfico e quais os seus objetivos. Capítulo 2 - Estado da Arte Este capítulo apresenta a história e evolução dos dispositivos móveis Android e as principais frameworks de desenvolvimento disponíveis. Capítulo 3 - Análise de Requisitos 2 Este capítulo descreve quais os requisitos gerais que se pretendem para a aplicação, bem como os seus requisitos de funcionalidades entendidas como necessárias para se ter a mesma de acordo com o esperado. Capítulo 4 - Desenvolvimento Este capítulo apresenta as escolhas efetuadas a nível de tecnologias para desenvolvimento da aplicação, a sua arquitetura geral e os detalhes de implementação da mesma de modo a atingir a aplicação final. Capítulo 5 - Conclusão Este capítulo descreve as conclusões obtidas no término do projeto, sumarização do trabalho realizado e possíveis implementações e/ou melhoramentos futuros. 3 4 Capítulo 2 2 Estado da Arte 2.1 Dispositivos e Sistemas Operativos Móveis Com a evolução ao nível da miniaturização de componentes, hoje em dia consegue-se colocar no bolso um equipamento com um poder de processamento muito mais eficaz e potente do que aqueles que tínhamos há alguns anos atrás nas nossas salas. Para além da miniaturização, vários outros fatores influenciaram o aparecimento destas tecnologias, tal como as baterias com menores dimensões e maior capacidade e os displays que são cada vez mais nítidos e finos. A esta tecnologia damos o nome de smartphones, que tiveram origem na evolução dos telemóveis e na união destes com computadores. Os smartphones possuem grande parte das funcionalidades de um computador, sem por entanto se tornar um substituto. Estes hoje em dia permitem-nos ter acesso a conteúdos online como vídeos e páginas, permitem jogar, usar o sistema de GPS, ver televisão, etc. Com todas estas potencialidades num dispositivo consideravelmente pequeno, sentiu-se a necessidade de criar um novo género de dispositivos móveis. Os tablets vêm compensar uma das desvantagens dos smartphones, que é o tamanho do ecrã, pois se continuássemos a aumentar as dimensões dos smartphones acabaríamos por perder o seu principal conceito (portabilidade). Com um tablet, o utilizador pode elaborar todas as tarefas que são possíveis em smartphones e até dar-lhe um uso mais eficiente e profissional. Algumas marcas vendem inclusivamente teclados que podem ser acoplados ou ligados ao dispositivo de forma a ser mais útil o processamento de texto. 5 Ambos estes tipos de dispositivos necessitam de um sistema operativo adaptado, que tenta tirar o máximo proveito de todas as suas capacidades: Iremos assim retratar alguns dos sistemas operativos existentes hoje em dia para dispositivos móveis, juntamente com aqueles que estão a fazer a sua entrada no mercado. 2.1.1 iOS iOS ou como chamado antigamente iPhone OS é o sistema operativo criado pela Apple inc e distribuído de forma exclusiva nos dispositivos da própria marca. Foi lançado em 2007 juntamente com o iPhone de primeira geração, encontrando-se hoje em dia na sua 7ª versão (iOS 7). As suas principais características são a exclusividade de hardware suportado e um desempenho fluido que faz as delícias dos seus utilizadores. Parte desse desempenho é possível graças ao facto de que o sistema operativo é desenvolvido e desenhado para um número limitado e conhecido de hardware, permitindo assim aperfeiçoar ao máximo o seu comportamento [1]. 2.1.2 Windows Mobile e Windows Phone O Windows Mobile da Microsoft Coporation surgiu fruto da necessidade da empresa em acompanhar a evolução dos computadores. Bem antes do aparecimento dos smartphones, existiam os PDAs (Personal Digital Assistant) que resumidamente eram um computador de bolso controlado através de uma stylus. Este sistema operativo apareceu pela primeira vez em 1990 e foi evoluindo até atingir a versão 6.5 em 2010. Posteriormente sofreu de uma alteração no nome e nas principais características [2]. Após a última versão do Windows Mobile, surgiu o Windows Phone com uma interface gráfica reformulada e separando-se por completo do seu antecessor, como se pode observar pelo facto de nenhuma aplicação do Windows Mobile poder ser executada no Windows Phone. Este sistema operativo é utilizado num número limitado de dispositivos de empresas que fizeram uma parceria com a Microsoft, conseguindo assim algum controlo nos equipamentos e uma melhor adaptação do sistema operativo ao hardware. 6 Atualmente encontra-se na sua 3ª versão (Windows Phone 8) que foi lançada em 29 de Outubro de 2012 [3]. 2.1.3 Blackberry OS – RIM BlackBerry OS é um sistema operativo móvel desenvolvido pela Research In Motion (RIM) para a sua linha de smartphones BlackBerry. Encontra-se na versão número 7.1 que foi lançada em Setembro de 2012 [4]. 2.1.4 Bada O Bada é um sistema operativo recente (4 anos), criado pela Samsung e que não tem por objetivo fazer concorrência direta com os maiores sistemas operativos do momento mas sim atingir um público específico. Neste momento encontra-se na versão 2.0 lançada em 2012 [5]. 2.1.5 Ubuntu Touch O Ubuntu Touch é a versão móvel do sistema operativo Ubuntu desenvolvido pela Canonical Ltd e a sua comunidade. Foi divulgado no dia 31 de Outubro de 2011 que o Ubuntu iria ter suporte para smartphones, tablets e TVs. No dia 17 de Outubro de 2013 foi disponibilizada a sua primeira versão pública compatível com o Galaxy Nexus e o Nexus 4. É um sistema operativo muito recente, que depende da comunidade para a adaptação a dispositivos de diferentes marcas e modelos [6]. 2.1.6 Firefox OS O Firefox OS é um sistema operativo desenvolvido pela Mozilla, organização sem fins lucrativos conhecida pelo browser Firefox. Em 2012 foi publicamente demonstrado a ser executado em smartphones Android compatíveis e em 2013 anunciaram que o primeiro smartphone com base no Firefox OS seria o ZTE Open. Este sistema operativo está neste momento a efetuar a sua entrada no mercado [7]. 7 2.2 O Sistema Operativo Android O sistema operativo que neste momento compete com os mais utilizados no mundo (iOS e Windows Phone), e que em Julho de 2013 a Google Play Store (loja virtual de aplicações) atingiu o patamar de 1 Milhão de aplicações publicadas. Este sistema operativo tem uma elevada aderência por parte dos utilizadores pelo facto de ser bastante editável e de existirem dispositivos de todos os tipos e preços no mercado. 2.2.1 Visão Geral e História A Android Inc era uma empresa de Palo Alto (Califórnia, EUA) que tinha por objetivo desenvolver uma plataforma para dispositivos móveis baseada em Linux, que seria flexível, aberta e de fácil migração para fabricantes. Esta foi adquirida pela Google devido à necessidade de lançar um dispositivo baseado em localização. Em 2007 a Google anunciou o Android como sistema operativo para dispositivos móveis e foi em 22 de Outubro de 2008 que foi lançado o primeiro dispositivo com sistema Android, o HTC Magic ou G1. Ao longo dos anos o Android foi evoluindo substancialmente, acompanhando a evolução dos dispositivos e também conseguindo uma maior adesão de fabricantes [8]. De seguida apresenta-se uma breve sintese das versões do Android lançadas até ao momento [9] [10]. 2.2.1.1 Versão 1.0 (Sem nome) Esta foi a primeira versão do Android, que tinha suporte a navegadores HTML, permitia a reprodução de vídeos via YouTube e tinha vários serviços tais como Gmail, Google Maps e Google Sync. 2.2.1.2 Versão 1.5 Cupcake Foi nesta versão que a Google começou a dar nomes de doces e a sua principal característica foi a existência de um teclado virtual. 8 2.2.1.3 Versão 1.6 Donut Lançada em Setembro de 2009, esta versão permitiu a existência de dispositivos com diferentes tamanhos de ecrã, suporte para operadoras com tecnologia CDMA e um serviço de text-to-speech. 2.2.1.4 Versão 2.0 Éclair Até esta versão, os dispositivos usavam uma forma de desbloqueio de ecrã que estava patenteada pela Apple. Então a Google trouxe um desbloqueio em forma de arco que permitia desbloquear o dispositivo quando rodado para a direita, e silenciar o dispositivo rodando para a esquerda (Figura 1). Figura .1 Android 2.0 Éclair 2.2.1.5 Versão 2.2 Froyo O principal desta versão, para além das várias modificações visuais, foi a grande melhoria em termos de velocidade. A Google introduziu no Android a compilação JIT (Just In Time), o 9 que significa que o código Java era convertido automaticamente para código nativo durante a execução, trazendo assim um aumento na velocidade do sistema operativo. 2.2.1.6 Versão 2.3 Gingerbread Esta versão acabou por se tornar a versão com uma maior evolução a nível visual desde o início do Android. Nesta fase a Google focou-se em aprimorar cada parte do sistema operativo tornando-o mais moderno. 2.2.1.7 Versão 3.0 Honeycomb Até esta versão, os tablets não tinham um visual dedicado às suas proporções de ecrã. E por esse mesmo motivo apareceu o Android 3.0 Honeycomb, como uma versão disponível apenas para tablets e que tinha como objetivo tornar o Android mais ergonómico e adaptado a estes dispositivos. 2.2.1.8 Versão 4.0 Ice Cream Sandwich O Android 4.0 fez a união de tablets e smartphones estando disponível para ambos mas com algumas diferenças essenciais para cada tipo de dispositivo. Ao nível da estética, foi com esta versão que o Android se tornou mais uniforme e moderno, seguindo um estilo muito mais simplista e ergonómico. 2.2.1.9 Versão 4.1 Jelly Bean A suavidade dos efeitos e transições na utilização do Android sempre foi o maior ponto fraco deste sistema operativo quando comparado ao iOS da Apple. Assim, o Android 4.1 teve como principal objetivo tornar esses efeitos o mais suaves possíveis. Para além desta melhoria, seguiram-se também mais melhorias a nível estético e a introdução do “Google Now”, um serviço de pesquisa que transmite as informações necessárias quando o utilizador mais precisa delas. 10 2.2.1.10 Versão 4.4 KitKat A última versão do Android até hoje (Figura 2), lançada em 31 de Outubro de 2013, tem como maior característica o facto de usar menos memória. Permite assim que esta versão possa ser utilizada em dispositivos de baixa gama e mesmo em dispositivos mais antigos. Está com um visual mais limpo, colorido e foi feito a pensar nos wearable. Os wearable são dispositivos portáteis tais como óculos (Google Glass), relógios, etc. Figura .2 Android 4.4 KitKat 11 2.2.2 Arquitetura A arquitetura do Android é dividida em camadas (Figura 3), onde cada parte é responsável por gerir os seus respetivos processos [11]. Figura 3 Arquitetura Android 2.2.2.1 Aplicações Todas as aplicações para o Android encontram-se na camada do topo. Alguns exemplos de aplicações são os Contactos, Jogos, Browser, etc. 2.2.2.2 Framework Aplicacional A camada de Framework Aplicacional proporciona muitos serviços de nível superior em forma de classes Java. Os programadores estão autorizados a utilizar esses serviços nas suas aplicações. 2.2.2.3 Livrarias Esta camada contém as livrarias que são usadas pelo sistema, e também livrarias de multimédia, funções para navegadores web, e funções de acesso a base de dados SQLite. 12 2.2.2.4 Android runtime Nesta camada se instancia a máquina virtual Dalvik, criada para cada aplicação executada no Android. Essa máquina virtual é especialmente desenhada e otimizada para Android. A camada também contém um conjunto de livrarias centrais permitindo aos programadores criar aplicações com o uso da linguagem Java. 2.2.2.5 Kernel No fundo das camadas encontra-se o Kernel do Linux que proporciona funcionalidades básicas de sistema como gestão de processos, gestão de memória e gestão de dispositivos. 2.2.3 Máquina virtual Dalvik A máquina virual Dalvik é o software que executa as aplicações em dispositivos Android. As aplicações são escritas em Java e compiladas em bytecode para a máquina virtual, que posteriormente são traduzidas para Dalvik bytecode e guardadas em ficheiros com o formato .dex (Dalvik EXecutable) e .odex (Optimized Dalvik EXecutable). Estes formatos são desenhados para sistemas com capacidades reduzidas em termos de memória e velocidade de processamento. 2.2.4 Sistema de ficheiros O Android suporta vários tipos de sistemas de ficheiros, mas os mais usados são o YAFFS2 (Yet Another Flash File System) e o VFAT (Virtual File Allocation Table). Existem 6 principais partições em dispositivos Android e 2 partições comuns no cartão de memória [12]. /boot – Esta é a partição de arranque do dispositivo, que inclui o Kernel. O dispositivo não arranca sem esta partição. /system – Como o nome sugere, esta partição contém todo o sistema operativo incluindo o GUI e todas as aplicações que vêm pré-instaladas no dispositivo. /recovery – Esta partição existe para recuperação, sobretudo quando a partição /boot contêm problemas permitindo aceder a uma consola de recuperação com opções de manutenção. 13 /data – É aqui que são guardadas todas as informações dos utilizadores, tais como contactos, mensagens, definições e aplicações instaladas. /cache – Esta partição é utilizada pelo Android para guardar dados que são frequentemente acedidos pelas aplicações. /misc – É aqui que são guardadas definições de sistema tais como a configurações USB e o identificador da região ou do operador. /sdcard – Esta partição serve para o utilizador armazenar o que quiser (música, vídeos, imagens). Pode ser o cartão de memória interno do dispositivo, ou no caso de existir um cartão de memória externo este tem o nome de /sdcard/sd ou /sdcard2 /sd-ext - Esta partição não é standard no Android mas tornou-se popular no universo das ROMs modificadas, serve de espaço para funcionalidades especiais de algumas ROMs, como por exemplo a possibilidade de guardar aplicações no cartão de memória externo quando o dispositivo tem uma memória interna muito limitada. 2.2.5 Preferências e notificações O Android permite ao utilizador alterar um conjunto de parâmetros que influenciam o comportamento do sistema. Estas preferências permitem por exemplo ligar/desligar o Wi-Fi, alterar o volume das notificações e alterar o brilho do ecrã. As aplicações também podem conter um menu de preferências específicas para o seu caso [13]. As notificações são mensagens para o utilizador que provêm das aplicações mas que não se encontram dentro do seu UI. Numa primeira fase o sistema apresenta um ícone na barra de notificações e quando o utilizador arrastar para baixo a barra é apresentada a mensagem que a notificação contêm. Algumas notificações podem ser arrastadas para baixo com dois dedos de 14 forma a expandi-las e se poder interagir com elas sem abrir a aplicação. É possível tocar na notificação para a tratar, ou então arrastar para o lado para a eliminar [14]. 2.2.6 Modelo de segurança O modelo de segurança do Android é baseado em três aspetos principais [15]: Sandbox: O sistema executa cada aplicação num processo em separado, isto atribui uma segurança elevada em que as aplicações não se podem danificar ou aceder aos ficheiros de outras. As aplicações estão assim limitadas ao acesso de certas funções do dispositivo, e só podem ter acesso declarando as permissões desejadas no ficheiro do manifesto (AndroidManifest). Desta forma o utilizador é alertado antes da instalação da aplicação sobre quais as permissões e pode optar por não instalar a aplicação. Assinatura digital da aplicação: O sistema Android requer que todas as aplicações instaladas sejam assinadas digitalmente, com um certificado em que a chave privada é guardada pelo programador da aplicação. Esse certificado serve para identificar o autor, e criar uma relação de confiança entre aplicações. ID de utilizador: A plataforma Android aproveita o proteção baseada no utilizador do Linux, o sistema atribui um ID de utilizador para cada aplicação e proporciona uma segurança ao nível do Kernel. 2.3 Frameworks de Desenvolvimento O IDE recomendado é o Eclipse juntamente com o SDK (Software Development Kit) do Android, e o plugin ADT (Android Development Tools) que nos permite usar todas as ferramentas necessárias para Android. Existem também outros IDEs tal como o mais recente e disponibilizado pela própria Google, o Android Studio mas que ainda se encontra em versão Beta. A linguagem utilizada é Java, é a linguagem mais utilizada no mundo, sendo uma linguagem poderosa e de código-fonte aberto. A grande vantagem do Java é o facto de poder ser executado em várias plataformas e dispositivos. 15 Para o armazenamento de informações na memória dos dispositivos, é usado o SQLite. A vantagem do SQLite é que se torna muito leve, e fornece apenas aquilo que é essencialmente necessário em termos de bases de dados. 2.3.1 Java Java é uma linguagem de programação concorrente, baseada em classes e orientada por objetos. Foi especialmente desenhada para que quando é executada numa plataforma, não necessita de ser recompilada para uma plataforma diferente. As aplicações Java são compiladas em bytecode que pode correr em qualquer máquina virtual Java (JVM) independentemente da arquitetura do computador. Foi desenvolvida por James Gosling na Sun Microsystems e divulgada em 1995. É uma das linguagens de programação mais populares, com um registo de 9 milhões de programadores [16]. 2.3.2 Ambientes de desenvolvimento Para programar para Android existem dois principais ambientes de desenvolvimento: Eclipse: Desenvolvido inicialmente pela IBM e doado para a comunidade como software livre, o Eclispe é o IDE feito em Java e mais utilizado para programar com Java. Pode ser utilizado para programar com outras linguagens bastando para isso instalar uns plugins. Atualmente faz parte do kit de desenvolvimento de software recomendado para programadores Android [17]; Android Studio: É um IDE desenvolvido especialmente para a plataforma Android, foi anunciado no dia 16 de Maio de 2013 na conferência da Google, e desde Junho de 2014 que está disponível para testes de forma gratuita. 2.3.3 Android SDK O kit de desenvolvimento de Android (SDK) contém um compreensivo conjunto de ferramentas de desenvolvimento. Estes incluem um debugger, livrarias, um emulador de 16 dispositivos, documentação, exemplos de código e tutoriais. No caso de se usar o Eclipse como ambiente de desenvolvimento, existe um plugin que pode ser instalado chamado Android Development Tool (ADT) e que fornece todas as ferramentas necessárias para o desenvolvimento para Android. O SDK vai evoluindo conforme a evolução do Android, mas mantém sempre disponíveis versões mais antigas para os programadores que querem criar uma aplicação que funcione em dispositivos mais antigos. As ferramentas estão em formato transferível permitindo assim obter apenas aquelas que o programador necessita [18]. 2.3.4 Android Virtual Device Manager O Android Virtual Device Manager proporciona uma interface virtual onde o programador pode gerir e criar AVD’s, que são dispositivos virtuais com todas as características configuráveis. Estes dispositivos virtuais são depois executados pelo emulador do Android e permitem instalar e executar a aplicação criada pelo utilizador. Este é de grande utilidade pois permite que o programador crie aplicações para dispositivos, ou versões do Android diferentes dos reais que possui, e observar assim o comportamento das aplicações [19]. 17 Capítulo 3 3 Análise de Requisitos 3.1 Requisitos Gerais Após estudar quais as frameworks que irão ser necessárias para o desenvolvimento, é importante definir os requisitos da aplicação. Tratando-se de uma aplicação que serve de apoio ao CCOM e ao IPB, o público-alvo é bastante restrito. Qualquer pessoa pode fazer uso da aplicação para aprender mais sobre a a Instituição, mas é notório que será principalmente útil para todos os que beneficiam dos vários serviços que estas duas entidades fornecem. Atendendo à diversidade das características dos dispositivos com Android, a aplicação têm de ser compatível com várias versões do sistema operativo e com várias dimensões de ecrã. Analisando o gráfico disponibilizado na página de desenvolvimento do Android (Figura 4), podemos observar que as versões mais antigas que a 2.2 Froyo são pouco usadas ou quase nulas [20]. Então decidiu-se tornar a aplicação compatível desde o Android 2.1 Éclair até ao mais recente 4.4 KitKat. A versão 2.1 está incluída pois mesmo após sabermos que a sua taxa de uso é muito reduzida, existe ainda um certo número de utilizadores que frequenta o IPB a usar essa versão. 18 Figura .4 Taxa de versões Android ativas A aplicação também será compatível com tablets, visto que hoje em dia são muito utilizados sobretudo em ambientes académicos e profissionais, e que basta fazer algumas alterações a nível visual para que a aplicação mantenha um aspeto cuidado ao ser executada nestes dispositivos. 3.2 Requisitos Funcionais Sabendo que o IPB é visitado por uma considerável quantidade de alunos/docentes de outros países, a aplicação têm uma versão em Inglês para que possam usufruir das várias funcionalidades disponíveis. O IPB oferece acesso à Internet de forma gratuita, mas para se poder usufruir desse serviço é necessária uma configuração inicial: Por esse motivo, a aplicação permite consultar os vários tutorias disponíveis na página do CCOM sem ser necessária uma ligação à Internet. A aplicação apresenta também um mapa com a deslocação do utilizador dentro do campus e entre os vários edifícios que fazem parte do IPB, referenciados como pontos de interesse. Permite também consultar várias informações tais como horários de funcionamento e distância do ponto de interesse ao utilizador. Dentro dos pontos de interesse estão incluídos vários edifícios e estruturas tais como residências, cantina, parques de estacionamento, etc. As funcionalidades relacionadas com o mapa são implementadas com recurso à livraria Osmdroid [21] e recorrendo a mapas disponibilizados pelo serviço Openstreetmaps [22]. 19 As várias escolas do IPB utilizam as suas páginas web para divulgarem informações importantes para os seus utilizadores. Atendendo a isto, a aplicação permite consultar de forma atualizada as mais recentes informações divulgadas. Estas são atualizadas de forma automática quando existe uma ligação à internet no dispositivo, e mantêm-se disponíveis de forma offline para uma leitura posterior. 3.3 Diagrama de Casos de Uso Figura .5 Diagrama de Casos de Uso Com o diagrama de casos de uso podemos demonstrar qual a interação entre o utilizador e a aplicação. Todas as interações podem ser definidas da seguinte forma (Figura 5): 20 Consultar histórico de localização – Toda a lógica da localização do utilizador é efetuada em background e sem ser necessária qualquer interação a não ser o facto de necessitar uma ligação Wifi e/ou o GPS ligado. O utilizador pode no entanto consultar o seu histórico dos últimos 5 dias, com a possibilidade de alternar entre as diferentes escolas. Ler últimas notícias – Ao utilizador é permitido consultar as últimas notícias disponíveis nas várias páginas do IPB. o Abrir links no navegador – Caso exista um link dentro de uma notícia, este pode ser tocado de forma a ser aberto no browser pré-definido do dispositivo. Consultar mapa – O mapa correspondente à zona do IPB está guardado de forma offline na memória do dispositivo, para que o utilizador o possa consultar sem necessitar uma ligação à Internet. No momento do carregamento do mapa, este é centrado na zona do IPB e imediatamente após ser detetada a localização do utilizador, o mapa é centrado na sua localização. o Ver informações de P.I – Os marcadores ou P.I’s (Pontos de Interesse) podem ser tocados pelo utilizador, abrindo uma janela que divulga o nome desse mesmo ponto, juntamente com outras informações úteis. Obter direções e tempos de viagem – Ainda dentro da janela do P.I, é permitido ao utilizador tocar um botão que divulga a rota mais próxima entre ele e o P.I, juntamente com o tempo estimado de viagem e a possibilidade de executar o “Google Navigation” para obter direções. o Mostrar/ocultar P.I’s – O utilizador pode mostrar ou ocultar as categorias de P.I’s arrastando um menu do lado direito da aplicação e selecionando as categorias desejadas. Consultar tutoriais – Os tutoriais com as instruções de configuração dos serviços disponibilizados pelo CCOM estão disponíveis para o utilizador sem ser necessária uma ligação à Internet. o Escolher tipo de configuração – O utilizador pode optar por consultar tutoriais de configuração para a rede Eduroam, Vpn e para o serviço de Email. 21 Escolher o sistema operativo – Após ser escolhido o tipo de configuração, é necessário optar para que sistema operativo o utilizador deseja consultar o tutorial. Atalhos para as principais páginas do IPB – Nesta parte da aplicação o utilizador pode simplesmente utilizar um dos atalhos disponíveis para uma das páginas do IPB abrindo o browser pré-definido no seu dispositivo. 22 3.4 Diagrama de Classes Figura .6 Diagrama de Classes 23 Se tentássemos criar um diagrama de classes com todas as classes que compõem a aplicação, o diagrama seria difícil e confuso de consultar, por isso este diagrama (Figura 5) contém algumas das classes com mais importância e apenas alguns dos métodos de cada classe. De forma a facilitar a interpretação do diagrama, são explicadas as classes ao longo deste documento. 3.4.1 MainActivity A MainActivity é a atividade principal da aplicação. É esta classe que tem por função iniciar todos os serviços e tudo o que a aplicação necessita para ser executada. Antes de explicar as principais funções desta atividade, é útil definir e explicar o que é uma actividade em Android, o que é um fragmento, um serviço e um alarme: o Atividade (Activity) é uma classe do Android que permite a interação do utilizador com a aplicação criando uma janela onde o programador pode colocar conteúdo, e que trata de trata dos diversos estados em que a aplicação se pode encontrar (iniciada, em pausa, terminada, etc). o Fragmento (Fragment) é como uma secção modular de uma atividade que contêm o seu próprio ciclo de vida e que pode ser adicionado/removido enquanto a atividade está a ser executada. o Serviço é um componente de uma aplicação que pode executar tarefas de longa duração em background sem interação do utilizador. o Alarme, os alarmes são serviços de sistema do Android em que se pode definir que a aplicação, ou algum serviço da aplicação seja executada em algum momento no futuro. O método onCreate() é o primeiro a ser executado e dentro desta aplicação tem como funções a criação da base de dados caso esta não exista na memória do dispositivo, a criação do menu lateral direito e a colocação do fragmento que irá conter um dos diversos fragmentos disponíveis na aplicação (Ccom, Últimas notícias, Mapa, Tutoriais de Configurações, Links Úteis, Sobre). 24 O método onStart() inicia os serviços de localização e alarme que ficam a ser executados em background independentemente da aplicação ser terminada. 3.4.2 Map_Fragment A classe Map_Fragment é um fragmento que é carregado dentro da MainActivity e que como o nome indica contém tudo o que é relativo ao mapa. Este é responsável por: o Carregar a versão do mapa guardada na memória; o Pedir a localização do utilizador; o Carregar a versão mais recente do mapa caso exista uma ligação; o Colocar os marcadores no mapa; o Adicionar/remover marcadores a pedido do utilizador; o Enviar os dados do destino ao “Google Navigation”; 3.4.3 IpbFragment O IpbFragment é o fragmento inicial da aplicação. Este não executa muitas tarefas a não ser apresentar informações. Apresenta a imagem inicial com o efeito de Ken-burns, apresenta o gráfico com o histórico dos últimos 5 dias e um mini mapa que mostra a localização do utilizador e serve de atalho para o Map_Fragment. 3.4.4 DBHelper A classe DBHelper é onde são executadas todas as interações com a base de dados tais como criar a base de dados e ler ou escrever informações nas tabelas. É uma classe de grande utilidade pois centraliza todas as operações com a base de dados num local apenas e é acessível a todas as classes da aplicação. 25 3.4.5 News_Fragment Uma das classes com maior complexidade é a News_Fragment. Esta classe: o Lê/Escreve notícias na base de dados; o Monitoriza a ligação de dados e o Wifi do dispositivo; o Carrega as notícias em formato XML; o Executa uma classe que faz o parsing do código XML; o Carrega um pager, que irá conter o fragmento de cada escola; Esta classe exige uma constante monitorização das ligações do dispositivo. Ao ser iniciada, se não existir nenhum tipo de ligação à Internet, é feita uma leitura na base de dados para obter as notícias que foram guardadas na última utilização. Imediatamente após o dispositivo conectar-se à Internet, a aplicação executa o download e parsing dos feeds de forma assíncrona para que não interrompa a utilização da aplicação, e ao terminar apresenta as notícias e guarda-as na base de dados. 3.4.6 Config_Fragment Esta é uma das classes mais simples pois apenas tem a tarefa de apresentar conteúdo estático. De um modo genérico é um fragmento que contem botões, que por sua vez carregam outros fragmentos para a atividade apresentando as configurações. 26 3.5 Base de Dados Figura .7 Base de Dados A tabela atualidades serve de apoio aos feeds. Sempre que a aplicação atualiza os feeds, esta guarda na tabela atualidades um título, conteúdo, data, link e o nome da escola de onde provêm. Para que o tamanho da base de dados não cresça infinitamente, os dados são sempre substituídos por dados mais recentes quando é feita uma atualização dos feeds. A tabela marcadores é apenas de leitura. É onde a aplicação vai obter quais os pontos de interesse a usar para a monitorização da localização. O raio é manuseado em metros e indica qual o raio da zona onde o dispositivo ativa um alarme ao entrar/sair do IPB. A tabela localização_final é onde são guardadas todas as informações finais do histórico tais como data (dia/mês/ano), nome do marcador, tempo de estadia. A tabela localização é onde são guardadas informações diárias de localização de forma temporária. É uma tabela que é apagada de 24 em 24 horas de forma a registar o tempo de estadia em cada marcador por dia. 27 28 Capítulo 4 4 Desenvolvimento 4.1 Aplicação Sendo o objetivo da aplicação servir de apoio e disponibilizar várias informações sobre o CCCOM e o IPB, esta tem como nome CCOMDroid. O aspeto da aplicação foi trabalhado tendo em conta as cores do IPB e das escolas que o constituem, e seguindo as diretrizes do Android para obter um design puro e o mais fiel possível à plataforma (Figura 8). Figura .8 Design 29 4.1.1 CCOMDroid Ecrã Principal O ecrã principal de uma aplicação é onde devemos tentar cativar os utilizadores, pois a primeira impressão é sempre a que mais conta. Este deve conter bastantes informações úteis, sem divulgar tudo o que a aplicação pode fornecer, e é importante também que seja uma zona um pouco dinâmica para não tornar a experiência monótona. Seguindo estes princípios, o ecrã principal do CCOMDroid (Figura 9) contém uma imagem com um efeito chamado “Ken Burns Effect”, que consiste simplesmente numa aproximação e um afastamento aleatório de diferentes zonas da imagem, trazendo assim uma sensação de movimento e profundidade. Logo abaixo da imagem, existe um spinner, que permite ao utilizador comutar entre as diferentes escolas de forma a poder consultar o gráfico com o tempo de estadia dentro dos Campus do IPB nos últimos 5 dias, que se encontra mais abaixo. Por fim, ao fundo do ecrã encontra-se um mini mapa, que indica apenas a localização do utilizador, de forma a demonstrar que a aplicação está ciente da sua localização e que consegue usar essa informação para o histórico. Para além dessa utilidade, o mini mapa serve também de atalho a um mapa mais completo que será explicado a seguir. Figura .9 Ecrã principal 30 4.1.2 Últimas Notícias O layout das notícias é constituído por um Viewpager, que cria um efeito em que se pode alternar entre as diferentes escolas com um simples arrastar para os lados, ao alternar para outra escola, a cor da barra de navegação e dos títulos das notícias torna-se equivalente à cor da escola em foco (Figura 10). As últimas notícias funcionam da seguinte forma: se existir uma ligação à Internet no momento em que o utilizador acede a esta zona da aplicação, as notícias são carregadas e guardadas na base de dados automaticamente. Se não existir uma ligação à Internet, são apresentadas as notícias que já se encontram na base de dados juntamente com uma indicação de que não existe uma ligação à Internet. Sempre que uma das notícias contiver um link, este pode ser aberto num navegador pré-definido no dispositivo. Existe também uma forma de forçar a atualização das notícias, arrastando a list-view para baixo e largando quando lhe é proposto para tal. Figura .10 Ecrã Últimas Notícias 31 4.1.3 Mapa O layout do mapa consiste num mapview que preenche todo o espaço disponível de forma a maximizar a experiência de utilização. Do lado direito existe um menu (drawer) (Figura 11), que pode ser arrastado e que permite adicionar e remover os marcadores do mapa em função das suas categorias. Ao selecionar um marcador, aparece uma caixa de texto com algumas informações sobre esse marcador e um botão que permite calcular o tempo de viagem entre o utilizador e esse mesmo ponto no mapa. Após se observar o caminho, o utilizador pode optar por receber as indicações de navegação no "Google Navigation" caso tenha essa aplicação instalada. A zona do campus do IPB encontra-se acessível de modo offline, permitindo ao utilizador observar o mapa sem ter uma ligação à Internet. Figura .11 Mapa com drawer 32 4.1.4 Tutoriais de Configuração Nos tutoriais de configuração, o utilizador tem de optar primeiro pelo tipo de configuração que necessita realizar (Eduroam, VPN, Email) e por fim o sistema operativo. Para os tutoriais foi usado um view pager, que permite alternar entre os passos com um simples arrastar para o lado (Figura 12). Figura .12 Tutoriais de configuração 33 4.1.5 Links Úteis Na zona dos links úteis, é apresentada uma lista com atalhos para as principais páginas do IPB (Figura 13). Quando o utilizador seleciona um desses atalhos, é executado o browser prédefinido no dispositivo com o link da página para que o utilizador seja encaminhado à pagina desejada. Figura .13 Links Úteis 34 4.1.6 Funcionalidades em background Existem certas funções da aplicação que correm em background, para que não interrompa a utilização da aplicação e que permita por exemplo saber a localização do utilizador sem que este tenha de ter a aplicação ativa. Ao iniciar a aplicação pela primeira vez, existe um serviço que é executado e fica ativo mesmo após o utilizador sair da aplicação. Este serve para obter a localização do utilizador sempre que possível. De forma a não consumir em excesso a bateria do dispositivo, este serviço é gerido pelo Android e faz com que não esteja sempre a tentar obter a localização. Para além desse serviço, existe um outro que serve de despertador. Todos os dias, pelas 23:55, é executada uma função em background e é terminada imediatamente após concluir o seu objetivo. O seu objetivo é de ler os valores da base de dados que foram obtidos ao longo do dia, e guarda-los numa outra tabela juntamente com o dia em que essa tarefa foi realizada. 4.1.7 Outras informações De forma a permitir que os alunos/docentes de outras nacionalidades possam usufruir da aplicação, esta foi traduzida para o Inglês. As únicas partes da aplicação que não foram traduzidas foram as últimas notícias e as imagens dos tutoriais. Isto porque as notícias apenas existem em Português nas páginas das escolas do IPB, o mesmo acontece com as imagens usadas para os tutoriais. Algumas partes do layout da aplicação foram otimizadas para a execução em tablets. Para isto bastou criar um ficheiro XML com o mesmo nome do que o ficheiro usado para smartphones, mas com algumas alterações no desenho da aplicação. Esses ficheiros são colocados em pastas diferentes, em que o nome da pasta indica ao Android qual dos ficheiros tem de ser usado em qual dos dispositivos. Como por exemplo: - Pasta “layout” (Para smartphones); - Pasta “layout-large” (Para tablets); 35 Desta forma é simples criar uma aplicação que está otimizada para dispositivos de dimensões diferentes. Em algumas partes da aplicação, foi necessária a introdução de uma parcela de código que permite ter funcionalidades disponíveis em versões mais recentes do Android mas que não podem ser executadas nas versões mais antigas. Por exemplo a alteração da cor da barra de notificações, é uma funcionalidade disponível apenas no Android 4.4 KitKat, e não pode ser executada em versões mais antigas. Para que isso seja possível basta utilizar este código: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //Código que apenas pode ser usado no Android 4.4 } De forma a evitar que a aplicação faça um consumo de dados não desejado pelo utilizador, na primeira execução é pedido que o utilizador opte por permitir que a aplicação utilize todos os tipos de dados ou apenas dados Wi-Fi. Mesmo após essa decisão, o utilizador, pode a qualquer momento aceder às definições da aplicação e mudar o tipo de conexão permitida, tanto para as notícias como para o mapa. 36 37 Capítulo 5 5 Conclusão De um modo geral, conseguiu-se por em prática todos os objetivos inicialmente definidos para esta aplicação. Esta permite ler as notícias das diferentes escolas do IPB, permite consultar um mapa com os principais pontos de interesse relativos ao Instituto Politécnico de Bragança, permite consultar de forma offline todos os tutoriais disponíveis na página do CCOM e ainda permite criar um histórico de localização do utilizador. No entanto, certos objetivos não foram conseguidos, tal como a possibilidade de configuração automática do smartphone/tablet para a utilização do email e da rede do IPB. Isto porque não se conseguiu encontrar nenhuma forma de a aplicação poder executar configurações no smartphone/tablet sem ser necessária a constante participação do utilizador. As maiores dificuldades no desenvolvimento foram causadas pela necessidade de a aplicação poder ser executada em dispositivos com uma versão do Android mais antiga (ex: Android 2.1 / 2.2), esse facto provocou o aparecimento de diversos erros que foram resolvidos consultando as páginas do Stackoverflow [23]. Muitas funcionalidades de hoje em dia não podem simplesmente ser utilizadas nessas versões do Android, pelo que ao longo do desenvolvimento teve de se alterar várias vezes a lógica de funcionamento da aplicação. Para que certas funcionalidades fossem usadas na mesma, teve de se recorrer a soluções disponibilizadas pela Google tais como o Android-support-v7-appcompat [24], que veio permitir utilizar-se por exemplo o Navigation Drawer, e Appbar em todas as versões. 38 Para algumas funcionalidades fez-se uso de várias soluções já existentes, tais como: ● ViewPager: para esta funcionalidade que indica qual a página que estamos a observar nas últimas notícias foi usado o Viewpagerindicator [25]. ● Pull to refresh: uma funcionalidade que permite arrastar para baixo uma ListView e fazer com que esta seja atualizada, foi possível com o uso do Android-PullToRefresh [26]. ● Gráfico: o gráfico que é visível na entrada da aplicação é criado dinamicamente com o HoloGraphLibrary [27]. ● Mapa: o mapa foi criado fazendo uso do Osmdroid [21] e a possibilidade de obter rotas com distância e tempo foi com o Osmbonuspack [31]. ● Datas: para o cálculo do intervalo de tempo entre duas datas em formato de String foi usado o Joda-time [28]. ● Efeito da imagem: para o “Ken Burns Effect” foi usado o KenBurnsView [29]. ● Estatísticas: para que após a publicação da aplicação possa receber informações úteis tais como número total de instalações, relatórios de erros, etc, foi usado o FlurryAnalytics [30]. 5.1 Trabalho Futuro Todas as aplicações podem e devem ser alvo de um trabalho contínuo, e como esta não é exceção à regra, algumas funcionalidades que poderão ser implementadas são: ● Criar mais pontos de interesse no mapa, pontos que são frequentados pelos alunos do IPB tais como parques, bares, discotecas, etc. ● Permitir que o utilizador tenha uma conta, e fazer com que seja possível comparar o histórico de localização com os seus amigos. ● Permitir que o utilizador possa desativar a localização automática, caso desejado. ● No mapa, adicionar um link direto para a página web do edifício caso exista. 39 Referências bibliográficas [1] Wikipédia. iOS. URL: http://en.wikipedia.org/wiki/IOS (acedido em 05/2014) [2] Wikipédia. Windows Mobile. URL: http://pt.wikipedia.org/wiki/Windows_Mobile (acedido em 05/2014) [3] Wikipédia. Windows Phone. URL: http://en.wikipedia.org/wiki/Windows_Phone (acedido em 05/2014) [4] Wikipédia. BlackBerry OS. URL: http://pt.wikipedia.org/wiki/BlackBerry_OS (acedido em 05/2014) [5] Wikipédia. Bada. URL: http://pt.wikipedia.org/wiki/Bada_(Sistema_operacional) (acedido em 05/2014) [6] Wikipédia. Ubuntu Touch. URL: http://en.wikipedia.org/wiki/Ubuntu_Touch (acedido em 05/2014) [7] Wikipédia. Firefox OS. URL: http://en.wikipedia.org/wiki/Firefox_OS (acedido em 05/2014) [8] Wikipédia. Android. URL: http://en.wikipedia.org/wiki/Android_(operating_system) (acedido em 06/2014) [9] Astechnica. Building Android a 40000 word history of Googles mobile OS. URL: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googlesmobile-os/ (acedido em 06/2014) [10] The Verge. Android: A visual history. URL: http://www.theverge.com/2011/12/7/2585779/android-history (acedido em 06/2014) [11] Tutorialspoint. Android Architecture. URL: http://www.tutorialspoint.com/android/android_architecture.htm (acedido em 06/2014) [12] Techblogon. Android file system structure architecture layout details. URL: http://techblogon.com/android-file-system-structure-architecture-layout-details/ (acedido em 05/2014) [13] RODRIGUES, Nuno (2012) Introdução ao Desenvolvimento para Android. Bragança: Instituto Politécnico de Bragança [14] Android Developers. Notifications. URL: http://developer.android.com/guide/topics/ui/notifiers/notifications.html (acedido em 05/2014) [15] Android Source. Security. URL: https://source.android.com/devices/tech/security/ (acedido em 05/2014) [16] Wikipédia. Java. URL: http://en.wikipedia.org/wiki/Java_(programming_language) (acedido em 05/2014) [17] WIkipédia. Eclipse. URL: http://pt.wikipedia.org/wiki/Eclipse_(software) (acedido em 05/2014) [18] Wikipédia. Android Software Development Android SDK. URL: http://en.wikipedia.org/wiki/Android_software_development#Android_SDK (acedido em 05/2014) [19] Android Developers. AVD Manager. URL: http://developer.android.com/tools/help/avd-manager.html (acedido em 05/2014) [20] Android Developers. Dashboards. URL: https://developer.android.com/about/dashboards/index.html (acedido em 05/2014) 40 [21] GitHub. Osmdroid. URL: https://github.com/osmdroid/osmdroid (acedido em 06/2014) [22] OpenStreetMap. Map. URL: http://www.openstreetmap.org/#map=5/51.500/-0.100 (acedido em 05/2014) [23] Stackoverflow. URL: http://stackoverflow.com/ (acedido em 06/2014) [24] Android Developers. Support Library Features. URL: https://developer.android.com/tools/support-library/features.html (acedido em 06/2014) [25] ViewPagerIndicator. URL: http://viewpagerindicator.com/ (acedido em 06/2014) [26] GitHub. Android-PullToRefresh. URL: https://github.com/chrisbanes/Android-PullToRefresh (acedido em 06/2014) [27] GitHub. HoloGraphLibrary. URL: https://github.com/Androguide/HoloGraphLibrary (acedido em 06/2014) [28] Joda. Joda-time. URL: http://www.joda.org/joda-time/ (acedido em 06/2014) [29] GitHub. KenBurnsView. URL: https://github.com/flavioarfaria/KenBurnsView (acedido em 06/2014) [30] Flurry. Flurry-Analytics. URL: http://www.flurry.com/solutions/analytics (acedido em 06) [31] Google Code. Osmbonuspack. URL: https://code.google.com/p/osmbonuspack/ (acedido em 06/2014) 41 42