Ricardo da Silva Ogliari Robison Cris Brito Android - Do Básico ao Avançado Copyright¤ Editora Ciência Moderna Ltda., 2014 Todos os direitos para a língua portuguesa reservados pela EDITORA CIÊNCIA MODERNA LTDA. De acordo com a Lei 9.610, de 19/2/1998, nenhuma parte deste livro poderá ser reproduzida, transmitida e gravada, por qualquer meio eletrônico, mecânico, por fotocópia e outros, sem a prévia autorização, por escrito, da Editora. Editor: Paulo André P. Marques Produção Editorial: Aline Vieira Marques Assistente Editorial: Amanda Lima da Costa Capa: Equipe Ciência Moderna Diagramação: Tatiana Neves Várias Marcas Registradas aparecem no decorrer deste livro. Mais do que simplesmente listar esses nomes e informar quem possui seus direitos de exploração, ou ainda imprimir os logotipos das mesmas, o editor declara estar utilizando tais nomes apenas para fins editoriais, em benefício exclusivo do dono da Marca Registrada, sem intenção de infringir as regras de sua utilização. Qualquer semelhança em nomes próprios e acontecimentos será mera coincidência. FICHA CATALOGRÁFICA OGLIARI, Ricardo da Silva; BRITO, Robison Cris. Android - Do Básico ao Avançado Rio de Janeiro: Editora Ciência Moderna Ltda., 2014. 1. Informática; 2. Linguagem de programação. I — Título ISBN: 978-85-399-0516-4 ISBN: 978-85-399-0483-9 Editora Ciência Moderna Ltda. R. Alice Figueiredo, 46 – Riachuelo Rio de Janeiro, RJ – Brasil CEP: 20.950-150 Tel: (21) 2201-6662/ Fax: (21) 2201-6896 E-MAIL: [email protected] WWW.LCM.COM.BR CDD 001.642 CDD 005.133 01/14 Dedicatória Dedicamos este livro a todos os nossos amigos programadores, em especial, aos que se identificam com a plataforma Android, essa plataforma magnífica que nos motivou registrar parte do nosso conhecimento neste material. Agradecimentos Queremos aproveitar este espaço para agradecer a um grande conjunto de pessoas que nos auxiliaram na escrita deste livro. Iniciamos com um agradecimento muito especial às nossas respectivas companheiras, Scheila e Jaqueliny, que sempre estiveram ao nosso lado, apoiando e orientando, e que muitas vezes abriram mão das nossas companhias para as nossas infindáveis horas ausentes para ministrar palestras, cursos, escrever artigos, e tutoriais. Não poderíamos esquecer de agradecer às nossas famílias, ao seu Paulo e Dona Marilde, ao seu Antônio e Dona Marly, por terem esforçado-se tanto para nos dar uma educação de qualidade. Muitas vezes, abrindo mão de seu conforto para nos fornecer recursos na batalha pela vida, tudo isso pelo amor que tinham por seus filhos. Gostaríamos de dizer que sempre seremos gratos, aos nossos heróis que amamos muito. Agradecemos também à Universidade Tecnológica Federal do Paraná – Campus Pato Branco – pelas oportunidades ofertadas, à empresa GlobalCode, à Universidade de Passo Fundo – Campus Passo Fundo. Além de agradecer a todos os organizadores de evento que nos convidaram para palestras, ministrar minicursos e afins, assim como as editoras e revistas que abriram as portas para divulgarmos nossos materiais à comunidade. Por fim, agradecemos aos amigos Eduardo Malherbi Martins e Geison Adriano Biazus, acadêmicos do II Curso de Especialização em Tecnologia Java da UTFPR – Campus Pato Branco, por suas contribuições nos capítulos 15 e 16 deste livro. Sobre os autores Ricardo da Silva Ogliari é especialista em Web: Sistemas de Inovação e Tecnologia pelo Senac São Paulo. Bacharel em Ciência da Computação pela Universidade de Passo Fundo. Ministra treinamentos na Globalcode, além de ser sócio da StillRocker Digit´all. Escreveu artigos para diversas revistas e atualmente escreve regularmente para a Mobile Magazine e Espírito Livre. Palestrante em diversos eventos nacionais e internacionais, tais como, FISL, TDC, WebDays, Just Java, WebMobile Tech Weeks e Campus Party. Ao todo, é autor de mais de 200 publicações. Criador e mantenedor do Mobilidade é Tudo. Participante do Things Hacker Team. Robison Cris Brito é mestre em Engenharia Elétrica e Informática Industrial pela Universidade Tecnológica Federal do Paraná, onde ministra aulas sobre tecnologia Java e Computação Móvel nos cursos de tecnologia em Análise e Desenvolvimento de Sistemas e Engenharia da Computação. Escreve artigos para a revista Mobile Magazine do grupo Devmedia. Foi palestrante de eventos, tais como, JavaOne, M3DDLA, FISL, WebMobile Tech Week, Webdays, TDC e JustJava. Evangelista da tecnologia, procura ministrar palestras e minicursos em universidades e eventos. Prefácio O desenvolvimento de aplicativos para dispositivos móveis, além de fascinante, é uma excelente oportunidade de negócio. Hoje, muitas empresas de desenvolvimento de software possuem setores especializados nessa plataforma, desenvolvendo aplicações específicas que trabalham sozinhas ou integradas com os sistemas já existentes, tais como, aplicativos da Web e desktop, agregando valores e facilitando o compartilhamento de informações. Ao longo de vários anos, algumas linguagens para plataforma móvel surgiram e desapareceram. Todas foram linguagens que se destacaram em seus segmentos e perduraram por muitos anos, mas acabaram sendo substituídas, na grande maioria das vezes, pela descontinuidade dos aparelhos que as suportavam. Entretanto, com o Android é diferente. Muito mais do que uma linguagem, ele é uma plataforma de desenvolvimento, formado inclusive por um sistema operacional. O que chama a atenção é o grande impacto e a adoção dessa plataforma nos smartphones e nos tablets hoje. Em 2009, por exemplo, menos de 1% dos smartphones possuía suporte ao Android; hoje, em 2013, esse número ultrapassa 60%. Outra grande vantagem é o fato de inúmeros fabricantes apostarem nessa tecnologia, o que provavelmente aumentará a vida da plataforma, pois, ao contrário das tecnologias que surgiram e desapareceram por não possuírem mais dispositivos que a suportassem, o Android possui suporte nos mais diversos fabricantes, como, por exemplo, Motorola, Samsung, LG, entre muitos outros. Com certeza, os fabricantes que ainda não a suportam, um dia a suportarão. Neste contexto, o presente livro apresenta a plataforma Android, fugindo um pouco do tradicional passo a passo básico, sendo mais focado no how-to-do (como fazer), podendo, desta forma, ser aproveitado por usuários leigos na tecnologia, uma vez que os capítulos iniciais são básicos, e também por usuários avançados, já que os capítulos finais apresentam estudos de casos bastante avançados. X Android - Do Básico ao Avançado Assim, dividimos a presente obra em capítulos, sendo os dois primeiros destinados à preparação do ambiente de desenvolvimento e à programação de um aplicativo básico, sendo útil aos leitores que não conhecem a plataforma e precisam de orientação sobre como começar. Para todos os estudos de caso, foi optada a utilização da IDE Eclipse, esta a mais popular entre os programadores Android, destacando-se por ser livre e multiplataforma. O terceiro, quarto e quinto capítulos do livro apresentam os componentes visuais básicos da plataforma Android, permitindo o desenvolvimento de aplicações ricas visualmente, além de apresentar modelos de interação entre a aplicação e o usuário, utilizando eventos. O sexto e o sétimo capítulos apresentam formas de persistência de dados, permitindo o armazenamento de dados em aplicações Android utilizando o tradicional SQLite e também técnicas alternativas, tais como, a utilização de arquivos de preferência e o cartão de memória. O capítulo oito apresenta a nova forma de utilizar mapas em aplicações Android, esta já utilizando a Google Maps for Android 2.0, lançada em março de 2013. Os dois capítulos seguintes apresentam a utilização de dados multimídias na plataforma, sendo através de imagens ou sons. Por fim, os seis últimos capítulos apresentam aplicabilidades distintas e avançadas da plataforma Android, como, por exemplo, a criação de widgets, utilização de notificação, acesso a dados de servidores RSS utilizando o protocolo http, utilização de sensores, recepção de mensagens SMS e, por fim, um capítulo dedicado à utilização da realidade aumentada nas aplicações Android. Utilizando esta estrutura, o presente livro torna-se um material de referência extremamente útil aos programadores iniciantes e avançados, sejam acadêmicos, professores, profissionais da área, sejam amantes da tecnologia, que desejam explorar novos horizontes, fugindo do tradicional desenvolvimento para desktop e Web. Uma boa leitura a todos. Sumário XI Sumário Capítulo 1 Introdução ao desenvolvimento de Aplicações Android para dispositivos móveis .... 1 Um pouco da história ............................................................................................................. 2 Infraestrutura do Software .................................................................................................... 3 Ambiente de Desenvolvimento ............................................................................................. 4 Instalando o Android SDK e o ADT Bundle ......................................................................... 6 Atualizando o Android SDK ................................................................................................... 7 Criando um AVD – Android Virtual Device ....................................................................... 10 Instalando e Preparando a IDE Eclipse ............................................................................ 13 Outras Opções de IDEs de Desenvolvimento para Android ........................................... 17 Concluindo... .......................................................................................................................... 18 Capítulo 2 Desenvolvimento do aplicativo HelloWorld para a plataforma Android ............... 19 Criando a primeira aplicação Android .............................................................................. 20 Concluindo... .......................................................................................................................... 35 Capítulo 3 Componentes Visuais Básicos da Plataforma Android ...................................... 37 Desenvolvimento de Interfaces Visuais ........................................................................... 37 Gerenciadores de Layout .................................................................................................... 39 LinearLayout ................................................................................................................... 39 AbsoluteLayout .............................................................................................................. 42 TableLayout .................................................................................................................... 44 Outros Gerenciadores de Layout ....................................................................................... 46 XII Android - Do Básico ao Avançado Utilizando Vários Gerenciadores de Layout em uma Única Tela .................................. 46 Componentes Visuais .......................................................................................................... 48 Componente TextView .................................................................................................. 52 Componente Button ...................................................................................................... 52 Componente ImageButton ........................................................................................... 52 Componente EditText .................................................................................................... 53 Componente CheckBox ................................................................................................ 54 Componentes RadioGroup e RadioButton ................................................................ 54 Componente ToogleButton .......................................................................................... 55 Concluindo ............................................................................................................................. 55 Capítulo 4 Tratando eventos de componentes visuais na plataforma Android ..................... 57 Criando a Interface Gráfica do Estudo de Caso .............................................................. 58 Eventos de Clique e Mudança de Tela .............................................................................. 61 Evento de Clique Longo ....................................................................................................... 66 Adicionando o Menu de Contexto ...................................................................................... 69 Evento de Toque .................................................................................................................... 74 Mudança de Foco nos Componentes ............................................................................... 75 Eventos de Tecla ................................................................................................................... 77 Evento de Item Selecionado ............................................................................................... 78 Concluindo... .......................................................................................................................... 85 Capítulo 5 Componentes visuais avançados no Android ................................................... 87 Componente AutoCompleteTextView ............................................................................... 88 Componente ProgressBar ................................................................................................... 90 Componente Spinner ........................................................................................................... 96 Componente PickerViews ................................................................................................... 99 Componente ListViews ...................................................................................................... 107 Concluindo... ........................................................................................................................ 110 Sumário XIII Capítulo 6 Desenvolvendo um programa de cadastro usando SQLite e Adapters .............. 111 O projeto .............................................................................................................................. 112 Construindo a aplicação sem o banco de dados .......................................................... 113 Classe utilitária Artigo ................................................................................................ 114 Layouts das telas ......................................................................................................... 114 Activities ........................................................................................................................ 118 O banco de dados .............................................................................................................. 119 Criando o Adapter para ListActivity ................................................................................. 124 Integrando o Adapter e o Banco de Dados .................................................................... 130 Transações em SQLite ....................................................................................................... 138 Concluindo... ........................................................................................................................ 139 Capítulo 7 Persistência de dados com Android: Muito além do SQLite............................. 141 Utilizando Shared Preferences ........................................................................................ 143 Utilizando PreferenceActivity ........................................................................................... 149 Utilizando o Armazenamento Interno (Internal Storage) ............................................ 158 Armazenando Dados Temporários em Aplicações Android ....................................... 162 Utilizando o Armazenamento Externo (External Storage) ........................................... 163 Concluindo... ........................................................................................................................ 167 Capítulo 8 Trabalhando com o Google Maps for Android 2.0 e Location API ..................... 169 Preparando o Ambiente para a Google Maps Android API v2 ................................... 171 Criando o Projeto e Importando a Biblioteca ................................................................ 172 Gerando a API Key ............................................................................................................. 174 Adicionando a Chave à Aplicação e Mostrando o Mapa ............................................. 177 Tornando o Mapa Profissional e Adicionando Pontos de Interesse .......................... 180 POIs ................................................................................................................................ 180 Seguindo o Usuário ............................................................................................................ 185 XIV Android - Do Básico ao Avançado Concluindo... ........................................................................................................................ 192 Capítulo 9 Tirando o máximo de vantagem das classes para o uso de imagens no Android 193 Usando os Componentes Gallery e ImageView ............................................................ 194 Apresentando uma Imagem Selecionada no Centro da Tela ..................................... 202 Utilizando o Componente ImageSwitcher ..................................................................... 204 Utilizando GridView para a Apresentação de Imagens ............................................... 209 Concluindo... ........................................................................................................................ 213 Capítulo 10 Utilizando sons e fotos em aplicações Android .............................................. 215 Estudos de Caso ................................................................................................................. 216 Primeiro Aplicativo - Rádio ............................................................................................... 216 Player de Mídia como Serviço .......................................................................................... 224 Segundo Aplicativo – Álbum de Fotos ............................................................................ 229 Concluindo... ........................................................................................................................ 240 Capítulo11 Criando widgets na plataforma Android ........................................................ 241 Aplicativo ............................................................................................................................. 243 Começando a Construção ................................................................................................ 244 1º Passo: Criar AppWidgetProviderInfo ................................................................... 245 2º Passo: Criar o Arquivo de Layout ......................................................................... 246 3º Passo: Criar o Activity de Configuração .............................................................. 249 4º Passo: Criar a Classe AppWidgetProvider .......................................................... 257 5º Passo: Criar AlarmManager para Atualizar o Widget ....................................... 259 Concluindo... ........................................................................................................................ 266 Capítulo 12 Utilização de sensores na plataforma Android ............................................... 267 Aplicativo ............................................................................................................................. 270 Pacote Hardware ................................................................................................................ 272 Primeiro Passo: Sensor Manager ............................................................................. 273 Sumário XV Segundo Passo: Conhecendo os sensores .............................................................. 274 Terceiro Passo: Trabalhando com sensores ............................................................ 275 Trabalhando com o Sensor de Luz .................................................................................. 278 Trabalhando com o Sensor de Proximidade ................................................................. 279 Trabalhando com o Text to Speech ................................................................................. 280 Concluindo... ........................................................................................................................ 281 Capítulo 13 Trabalhando com notificações no Android ..................................................... 283 Projeto .................................................................................................................................. 285 Interface Gráfica ................................................................................................................ 287 Activity .................................................................................................................................. 294 Notificação .......................................................................................................................... 299 Finalizando o Aplicativo .................................................................................................... 309 Concluindo... ........................................................................................................................ 310 Capítulo 14 Utilizando a conectividade Android para criar um leitor de RSS ...................... 311 Projeto .................................................................................................................................. 313 Download da Imagem ....................................................................................................... 316 Um Pouco Sobre findViewById ......................................................................................... 321 Download e Parser dos Feeds ......................................................................................... 322 Visualização de Post .......................................................................................................... 327 Concluindo... ........................................................................................................................ 329 Capítulo 15 Utilizando recursos nativos de SMS em aplicações Android............................ 331 Recebendo Mensagens SMS na Plataforma Android .................................................. 332 Apresentação do Sistema Proposto ............................................................................... 332 Criação do Projeto .............................................................................................................. 333 Estrutura do Projeto ........................................................................................................... 334 Criação de Pacotes ............................................................................................................ 336 Criação de Classes ............................................................................................................. 336 XVI Android - Do Básico ao Avançado Criação de Activities .......................................................................................................... 338 Entendendo o Android Manifest ...................................................................................... 340 Criação de Layout .............................................................................................................. 341 Codificação dosActivities .................................................................................................. 348 Criação das Controladoras ......................................................................................... 353 Criação dos Modelos (Objetos) .................................................................................. 354 Criação de Adaptadores ............................................................................................. 356 Criação da Classe SQL – Pacote Util ........................................................................ 359 Criação dos Serviços ................................................................................................... 360 SMS Receiving ............................................................................................................. 365 Simulação da APP Desenvolvida .............................................................................. 368 Concluindo... ........................................................................................................................ 371 Capítulo 16 Utilizando recursos de realidade aumentada em aplicações Android .............. 373 O Que é Realidade Aumentada e Qual a sua Origem? ............................................... 374 Realidade Aumentada e Dispositivos Móveis ............................................................... 376 Realidade Aumentada no Android .................................................................................. 378 Estudo de Caso Desenvolvido .......................................................................................... 379 Instalando o Android SDK e o Android NDK .................................................................. 380 Instalação e Configuração do Vuforia SDK .................................................................... 383 Funcionamento do Vuforia SDK ....................................................................................... 385 Como Gerar um Dataset ................................................................................................... 390 Renderização dos Objetos Virtuais ................................................................................. 392 Reprodução de Vídeos do YouTube ................................................................................. 394 Aplicativo Desenvolvido .................................................................................................... 395 Concluindo... ........................................................................................................................ 397 Capítulo 1 Introdução ao desenvolvimento de Aplicações Android para dispositivos móveis Aprenda a montar um ambiente de desenvolvimento livre para Android usando as IDEs de desenvolvimento mais utilizadas no mercado. O Android é uma plataforma para desenvolvimento e execução de programas para dispositivos móveis, robusta e de fácil utilização/aprendizagem. Foi construída inicialmente por uma pequena empresa de Palo Alto (Califórnia - EUA), chamada Android Inc. A mesma foi adquirida pela Google em 2005. A plataforma, que hoje é desenvolvida por um consórcio de empresas chamado Open Handset Alliance, é vista como uma ótima alternativa para o desenvolvimento de aplicações. Aos programadores que conhecem outras linguagens de programação, tais como, Java ME, Windows Mobile, Windows Phone, iOS, entre outras, aprender a programar com o Android é uma tarefa simples, uma vez que essa tecnologia utiliza a linguagem de programação Java, com algumas semelhanças com o Java ME, e para o desenvolvimento da interface visual, podem-se utilizar arquivos XML, o que simplifica consideravelmente o processo de desenvolvimento. A grande aposta do Android são os novos aparelhos celulares, mais conhecidos como smartphones, que podem ser resumidos a celulares com grande poder de processamento e que integram vários recursos, como alta conectividade com a Internet, GPS, sensores, telas sensíveis a toque e muito mais. Para otimizar a execução de aplicações mobile desenvolvidas em Android, este utiliza uma máquina virtual chamada Dalvik, que foi projetada para otimizar a memória e os recursos de hardware em um ambiente que pode ser bastante limitado. Por este motivo, os programas desenvolvidos com a plataforma Android possuem a extensão .dex, que significa Dalvik Executable, fazendo uma referência à máquina virtual Dalvik. 2 Android - Do Básico ao Avançado Um pouco da história O Android é um projeto de código aberto e por este motivo, surgem novas versões em um ritmo acelerado. Embora muitos achem que o Android foi desenvolvido exclusivamente pela Google, na verdade, o mesmo foi desenvolvido pela Android Inc., adquirida em 2005. Hoje, é de responsabilidade da Open Handset Alliance (OHA), uma aliança fundada em 2007, onde, além da Google, outras empresas do setor, como Intel, Acer, Motorola, Asus, DoCoMo, HTC, Huawei, Sprint, Kyocera, T-Mobile, LG, Samsung, Vodafone, SonyEricsson, Qualcomm e NVidia se uniram para fomentar o crescimento da plataforma Android. Na sequência, foi lançado o primeiro dispositivo móvel Android Enabled, o HTC T-Mobile, lançado em 2008 - Figura 1, sendo, em seguida, lançados inúmeros outros aparelhos com suporte a esta nova plataforma, tais como, sistemas de navegação veicular, um Netbook e até mesmo automóveis com painéis eletrônicos inteligentes. Figura 1. HTC T-Mobile, primeiro aparelho com Android. Uma das características mais importantes do Android é a prioridade igualitária para aplicativos nativos e de terceiros. As aplicações desenvolvidas por terceiros dispõem de toda a infraestrutura de hardware e software, assim como os aplicativos nativos, como, por exemplo, acesso ao Google Maps, Calendário, Agenda, entre outros. Talvez seja umas das plataformas com a ligação mais forte entre a plataforma de desenvolvimento e o sistema operacional. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 3 Para completar a lista de vantagens, destaca-se seu design sofisticado e o fato de ter o nome associado ao Google, completando a força que a plataforma precisa para impulsionar seu avanço no mercado. Infraestrutura do Software No que diz respeito à infraestrutura de software, o Android consiste de uma pilha que engloba um sistema operacional baseado em Linux, conjunto de bibliotecas, API chamada Android Runtime, aplicações preexistentes no Android e aplicações diversas, conforme apresentado na Figura 2. Figura 2. Arquitetura em camadas dos softwares no Android. O sistema operacional Android conta com um kernel Linux, versão 2.6 e versão 3.0 (Android API Level 11 e posteriores), sendo este responsável pelas tarefas de gerenciamento de memória, acesso à rede, gerenciamento de processos etc. É responsabilidade do sistema operacional fazer a comunicação entre o software desenvolvido e o hardware do dispositivo. As bibliotecas, ou libraries, consistem em um conjunto de bibliotecas C/C++ usadas por diversos componentes do Android e possuem funções específicas. Para o 4 Android - Do Básico ao Avançado desenvolvedor, o acesso a esta acontece por meio do Android Application Framework. Entre as bibliotecas, destacam-se: - SQLite: implementação de um banco de dados relacional disponível para todos os aplicativos. - 3D Libraries: biblioteca baseada no OpenGL ES 1.0 APIs. Ela usa a aceleração 3D em hardware (se estiver presente) para o processamento de imagens gráficas. - Media Libraries: baseada no PacketVideo’s OpenCORE, suporta a gravação e o playback de vários formatos de mídia. Também trabalha com imagens estáticas. - LibWebCore: um motor de browser da Web usado nos browsers do sistema. - Surface Manager: gerencia o acesso ao subsistema de display. - FreeType: renderização de fontes bitmap e vetorial. O Android Runtime, resumidamente, compreende as bibliotecas básicas do Android (core libraries) que são utilizadas pelas bibliotecas mencionadas anteriormente. Já as Application Frameworks são bibliotecas de mais alto nível, responsáveis por funções específicas no aparelho, como, por exemplo, o gerenciamento de janelas, recursos dos dispositivos móveis, notificações etc. Essas são as bibliotecas costumeiramente acessadas pelos desenvolvedores Android para interagir com o dispositivo móvel. Por fim, os aplicativos são ferramentas comuns a todos os usuários de celulares e smartphones. Uma característica do Android, como já foi informado, é que estes aplicativos nativos não possuem prioridade sobre outros instalados por terceiros, como acontecia com o Java Micro Edition. Inclusive, qualquer programa instalado no aparelho pode compartilhar informações ou módulos para outros programas utilizarem. Além disso, um aplicativo de terceiros pode executar aplicativos nativos. Ambiente de Desenvolvimento Para o desenvolvimento Android, duas IDEs se destacam: Eclipse e Netbeans, com predominância da primeira. Porém, recentemente o Google anunciou o IntelliJ IDEA como base para o Android Studio, uma nova IDE para os desenvolvedores dessa plataforma. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 5 A IDE Netbeans se destaca pela facilidade de uso e também por ser pioneira na implementação de ambientes visuais de desenvolvimento mobile, lembrando que já na versão 4.1, a IDE integrou o plugin Mobility Pack, o qual permitia desenvolver aplicações visuais (clicando e arrastando componentes) para a linguagem Java ME. Já a grande vantagem do Eclipse é a facilidade de gerenciamento de plugins, o que torna seu ambiente configurável para um número muito grande de funcionalidades, além de possuir um excelente editor de código. Soma-se a isso o fato do próprio Google e do principal site de desenvolvedores Android (developer.android.com) apoiarem o uso dessa IDE. Em um primeiro momento, independentemente da IDE de desenvolvimento escolhida, é necessário montar um ambiente padrão, este formado pelo JDK (Java Developtment Kit), o kit de desenvolvimento Java padrão, e pelo Android SDK, o kit de desenvolvimento Android padrão. Após instalar o JDK e o Android SDK, é necessário atualizar as plataformas de desenvolvimento no Android SDK. Somente após estes passos o ambiente está pronto para receber a IDE Netbeans ou Eclipse. Para instalar o Java SDK, deve-se acessar a url http://www.oracle.com/ technetwork/java/javase/downloads/index.html, clicando no link referente ao Kit de Desenvolvimento Java Padrão (JDK), conforme a Figura 3. Após o download do arquivo, é só proceder com a instalação padrão, de acordo com o sistema operacional utilizado. Figura 3. Página para download do Java SDK. 6 Android - Do Básico ao Avançado Dica: Ambiente de Desenvolvimento Android e Sistemas Operacionais O ambiente de desenvolvimento Android é multiplataforma, ou seja, além de gratuito (o que é um ótimo diferencial para programadores e empresas que estão iniciando na plataforma), é possível baixar o ambiente para diferentes sistemas operacionais, tais como, Windows, Linux ou MacOS, sendo que o processo de desenvolvimento é praticamente o mesmo, independentemente do sistema operacional. Instalando o Android SDK e o ADT Bundle Até algum tempo atrás, o processo de configuração do ambiente de desenvolvimento Android era um processo um pouco penoso e suscetível a falhas. Porém, este problema foi resolvido com o ADT Bundle. Este pacote já traz uma estrutura de pastas pronta para uso, incluindo o Android SDK e o Eclipse. Até o momento da escrita deste livro, ainda não existia a versão desse bundle com a nova IDE, a Android Studio. Para baixar a ferramenta, basta entrar neste link: http://developer.android.com/tools/index.html. Você verá uma interface como a mostrada na Figura 4. Figura 4. Página para download do ADT Bundle. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 7 Ao clicar no botão de download, será baixado para sua máquina um arquivo .zip. Basta descompactá-lo na pasta que desejar. Dentro do pacote, será possível encontrar duas pastas (eclipse e sdk) e um arquivo (SDKManager). De uma forma muito mais rápida e simples, você já terá o ambiente de desenvolvimento Android instalado e configurado. Atualizando o Android SDK Após a instalação, deve-se executar o SDKManager.exe, que abrirá o aplicativo Gerenciador do Android SDK, conforme a Figura 5. Figura 5. Tela do Android SDK Manager. No Android SDK Manager, devem-se escolher os pacotes necessários para o desenvolvimento. O pacote tools traz as ferramentas para fazer testes com o emulador de dispositivo Android e os outros pacotes trazem as versões do Android. Para instalar o Android 2.1, também chamado de API 7, este deve ser marcado na Figura 5, clicando, na sequência, no botão Install. 8 Android - Do Básico ao Avançado Devido ao tamanho de cada plataforma, que pode ultrapassar tranquilamente 100 MB, não é aconselhável a instalação de todas as plataformas disponíveis, a não ser, claro, que o programador precise testar sua aplicação em todas as plataformas Android existentes no mercado. Hoje, bastaria ter as versões 2.3 (com maior market share) e a 4.2 (por ser a última). Dica: Versões das plataformas Android O Android, ao contrário de outros ambientes de desenvolvimento móvel, como o Java ME, possui constantes atualizações, sendo lançados novas versões com poucos meses de intervalo. Para uma melhor organização das versões do Android, as mesmas costumam ser chamadas de API ou plataforma. A primeira versão do Android foi chamada de Plataforma 1 ou API 1 e assim, as versões foram evoluindo e sua numeração seguiu uma numeração sequencial e crescente. Entretanto, para o usuário, é mais comum conhecer a versão do Android pela sua numeração. A primeira versão do Android (a API 1) foi 1.0, a segunda versão do Android (API 2) foi a versão 1.1 e assim seguiu conforme a figura abaixo. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 9 Após a instalação do Android SDK e da atualização das suas plataformas/ ferramentas, o diretório onde este foi instalado fica como o apresentado na Figura 6. Na figura, o ambiente ainda está do modo como foi descompactado, sendo assim, perceba que temos somente diretórios com a nomenclatura contendo API Level 17 ou Android 4.2.2. Figura 6. Estrutura de pastas após a instalação do Android SDK. O diretório plataforms possui todas as plataformas baixadas no Android SDK Manager, nomeadas pelo número de sua API/Plataforma. Já a pasta tools, possui alguns dos principais executáveis utilizados pela plataforma Android. A pasta Sample pode 10 Android - Do Básico ao Avançado ser utilizada pelos programadores mais experientes, já que traz uma série de exemplos envolvendo inúmeros recursos, tais como, componentes visuais, comunicação bluetooth, entre outros. Criando um AVD – Android Virtual Device Android Virtual Device (AVD) é um emulador para um aparelho Android. Através dele, é possível simular um dispositivo Android real, definindo opções de hardware e software. A Figura 7 apresenta um AVD do Android em execução. Figura 7. AVD do Android em execução. Ao criar um AVD, devem-se definir os recursos de hardware do dispositivo virtual, o qual simulará o dispositivo real, definindo, por exemplo, o tipo de teclado, memória do dispositivo, configurar a plataforma/versão do Android, especificar para o emulador as dimensões da tela, aparência, tamanho do cartão SD, entre outros. Podem-se também criar vários AVDs para testar em diferentes plataformas o dispositivo desenvolvido. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 11 A criação do AVD é possível escolhendo o executável AVDManager.exe presente na pasta onde foi instalado o Android SDK ou como um dos ícones na barra superior da IDE Eclipse. A tela Android Virtual Device Manager (Figura 8) é aberta e através dela, podem-se criar emuladores. Figura 8. Tela do Android Virtual Device Manager. Na tela apresentada, para criar um AVD, clica-se no botão New, onde é apresentada uma tela para informar as características do Android Virtual Device. A Figura 9 apresenta os dados do AVD utilizado para testar o aplicativo. 12 Android - Do Básico ao Avançado Figura 9. Tela para a criação de um AVD. Nesta tela, destacam-se os seguintes campos: - AVD Name: nome do AVD, podendo ser referenciado posteriormente na execução da aplicação Android. - Device: informações de alguns devices pré-configurados, existentes no mercado ou genéricos, contendo especificação de tela e resolução do dispositivo que será emulado. Por exemplo: Nexus 4 (4,7", 768 x 1280: xhdpi). - Target: versão do Android para a emulação no AVD. - CPU/ABI: a escolha de qual CPU será emulada. Hoje, sabemos que não existem somente chips ARM no mercado, apesar de sua dominância ainda ativa (isso no momento da escrita deste livro, em 2013). - Keyboard: informa se existirá um teclado físico no dispositivo Android. Muitas vezes, o teclado do computador simulará o teclado físico do dispositivo. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 13 - Skin: informa se as teclas de hardware (Voltar, Home e Menu) serão apresentadas no emulador. - Front Camera e Back Camera: permite simular os recursos de câmeras frontais e atrás do aparelho. - Memory Option: informa os valores referentes às memórias RAM e Head do emulador. - Internal Storage: simula o tamanho de armazenamento interno do dispositivo emulado - SD Card: informação sobre um suposto cartão de memória que esteja conectado ao emulador. Após criado o emulador, o mesmo pode ser iniciado selecionando-o na tela da Figura 8 e clicando no botão Start, sendo apresentada uma tela do sistema operacional Android bloqueada, como se você tivesse iniciado um dispositivo Android. Assim, você tem acesso a todas as aplicações do sistema operacional, bem como às aplicações instaladas ou executadas no AVD. Na tela principal, o usuário também tem acesso a alguns aplicativos, tais como, discador, agenda de contatos, browser, aplicativo de mensagens, entre outros. Após os passos apresentados anteriormente, o ambiente de desenvolvimento está pronto, com um AVD criado e pronto para executar. O próximo passo é preparar o ambiente para receber a IDE de desenvolvimento, procedimento este apresentado na sequência. Instalando e Preparando a IDE Eclipse Como vimos anteriormente, o Android disponibiliza o ADT Bundle, que já contém toda a estrutura de diretório e arquivos para o Android SDK e Eclipse. Porém, o desenvolvedor pode desejar não usar este pacote, baixar e usar o Eclipse em separado. Sendo assim, veja como funciona. Para baixar a IDE de desenvolvimento Eclipse, deve-se acessar a página do projeto em http://www.eclipse.org. Como existem várias versões da IDE Eclipse, devese baixar alguma que seja compatível com o desenvolvimento Java. Aconselha-se a versão Classic ou for Java Developers, conforme apresentado na Figura 10. 14 Android - Do Básico ao Avançado Figura 10. Versões da IDE Eclipse. A IDE do Eclipse possui como característica não possuir um arquivo de instalação, bastando muitas vezes apenas descompactar o arquivo baixado. Desta forma, a IDE está pronta para ser executada. Na primeira execução da IDE Eclipse, é solicitado o caminho para o diretório workspace, sendo este o local onde os projetos são salvos. Após a execução, a IDE é apresentada conforme a Figura 11. Figura 11. Janela principal da IDE Eclipse. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 15 O Eclipse não possui suporte nativo ao desenvolvimento para Android, desta forma, torna-se necessário o uso de um plugin, este chamado ADT (Android Development Tools). Ele é um plugin para a IDE Eclipse que permite o desenvolvimento de aplicações para a plataforma Android. Projetado para ser um ambiente poderoso e integrado, permite o desenvolvimento, execução e depuração de aplicativos Android. Através dele, é possível criar novos projetos Android, adicionar pacotes com base na API, criar interfaces para usuário, depurar aplicativos e exportar sua aplicação para utilizá-la em seu smartphone ou tablet. O próprio portal oficial do Android (http://developer.android.com/) aconselha desenvolver aplicações Android no Eclipse com o ADT. O plugin permite a configuração do projeto guiada via wizard, ferramentas de integração, editores XML personalizados e painel de saída da depuração. Para a instalação do plugin, com o Eclipse aberto, acesse o menu Help - Install New Software, conforme a Figura 12. Figura 12. Instalação do plugin ADT no Eclipse. A janela de instalação será aberta. Nela, deve-se adicionar o caminho para download do ADT Eclipse (https://dl-ssl.google.com/android/eclipse/), conforme ilustra a Figura 13. 16 Android - Do Básico ao Avançado Figura 13. Download do plugin ADT para o Eclipse. Na sequência, devem-se confirmar as telas que aparecerão, seguindo o processo de instalação. Ao final, a IDE é reiniciada, sendo apresentada para o usuário uma tela para a configuração do Android SDK. Nessa tela, deve-se informar a pasta onde o Android foi instalado, confirmando para finalizar a configuração do plugin. Outra maneira também possível de informar o caminho do Android SDK é através do menu Window – Preferences e na categoria Android, informar o caminho em Android Location. Após o Apply, as plataformas do Android, disponíveis para os usuários, são apresentadas na tela, conforme a Figura 14. Capítulo 1 - Introdução ao desenvolvimento de Aplicações Android ... 17 Figura 14. Configuração do caminho do Android SDK no ADT. Desta forma, a IDE Eclipse já está pronta para o desenvolvimento de aplicações Android. Outras Opções de IDEs de Desenvolvimento para Android Como os ambientes de desenvolvimento Android são, na verdade, ambientes de desenvolvimento Java personalizados para o trabalho na plataforma Android, existem várias opções que podem ser utilizadas, além do tradicional Eclipse. Uma opção muito forte é o Netbeans, com o plugin nbandroid. O Netbeans tem uma tradição no desenvolvimento para dispositivos móveis, sendo pioneiro no desenvolvimento visual para dispositivos móveis com o plugin Mobility Pack para Java ME. Muitos dos outros ambientes são variações do Eclipse com o plugin ADT, porém, possuindo novos recursos e implementações. 18 Android - Do Básico ao Avançado O primeiro que recebe é o ADT Bundle (http://developer.android.com/sdk), sendo este um ambiente baseado exclusivamente no Eclipse e no plugin ADT, sendo que esse ambiente não necessita de instalação de plugin e configurações, basta baixar, instalar e pronto. Após, é só desenvolver os projetos Android. Outra opção existente é a IDE Motodev Studio (http://developer.motorola.com), sendo este um ambiente personalizado pela Motorola para o desenvolvimento Android, possuindo alguns recursos adicionais não presentes no tradicional Eclipse + ADT. Para o download gratuito, é necessário fazer um cadastro no portal. Outra opção muito forte no desenvolvimento Android é o IntelliJ IDEA (http:/ /www.jetbrains.com/idea/). Este ambiente possui uma versão Community gratuita, assim como uma versão paga. Como principal característica, está o ambiente visual de desenvolvimento (clicar e arrastar), assim como um ambiente de debug simples, que apresenta mensagens intuitivas com os tipos e locais de erro. Concluindo... Como apresentado neste capítulo, é possível preparar ambientes completos para o desenvolvimento Android sem gastar dinheiro. Com ferramentas gratuitas e multiplataformas, é possível desenvolver desde aplicativos simples até sistemas complexos, podendo estes fazer comunicação com a rede da operadora, utilizar o bluetooth, sensores, arquivos, entre outros recursos. Deste ponto em diante, todos os exemplos apresentados no livro serão desenvolvidos utilizando a IDE de desenvolvimento Eclipse, do ADT Bundle. Porém, esses exemplos podem ser desenvolvidos em outras IDEs, de acordo com as preferências do leitor, já que a linguagem e a estrutura dos aplicativos são as mesmas, independentemente da plataforma escolhida para o desenvolvimento.