D E I T E L® D E V E L O P E R S E R I E S 2ª EDIÇÃO Android ™ Inclui 7 apps completos para Programadores Uma abordagem baseada em aplicativos PAUL DEITEL • HARVEY DEITEL • ABBEY DEITEL D324a Deitel, Paul. Android para programadores : uma abordagem baseada em aplicativos [recurso eletrônico] / Paul Deitel, Harvey Deitel, Abbey Deitel ; tradução: João Eduardo Nóbrega Tortello ; revisão técnica: Daniel Antonio Callegari. – 2. ed. – Porto Alegre : Bookman, 2015. Editado como livro impresso em 2015. ISBN 978-85-8260-339-0 1. Programação - Android. I. Deitel, Harvey. II. Deitel, Abbey. III. Título. CDU 004.438Android Catalogação na publicação: Poliana Sanchez de Araujo – CRB 10/2094 Tradução: João Eduardo Nóbrega Tortello Revisão técnica: Daniel Antonio Callegari Doutor em Ciência da Computação e professor da PUCRS Versão impressa desta obra: 2015 2015 Obra originalmente publicada sob o título Android for programmers: An App-Driven Approach, 2nd Edition ISBN 0-13-357092-4 / 978-0-13-357092-2 Tradução autorizada a partir do original em língua inglesa da obra intitulada ANDROID FOR PROGRAMMERS: AN APP-DRIVEN APPROACH, 2ND EDITION, de autoria de PAUL DEITEL; HARVEY DEITEL; ABBEY DEITEL, publicada pela Pearson Education, Inc., sob o selo Prentice Hall, © 2014. A edição em língua portuguesa desta obra é publicada por Bookman Companhia Editora Ltda., uma divisão do Grupo A Educação S.A., © 2015. DEITEL, o inseto com os dois polegares para cima e DIVE-INTO são marcas registradas de Deitel & Associates, Inc. Java é uma marca registrada de Oracle e/ou suas afiliadas. Google, Android, Google Play, Google Maps, Google Wallet, Nexus, YouTube, AdSense e AdMob são marcas registradas de Google, Inc. Microsoft® e Windows® são marcas registradas de Microsoft Corporation nos Estados Unidos e/ou em outros países. Outros nomes podem ser marcas registradas de seus respectivos detentores. Gerente editorial: Arysinha Jacques Aff onso Colaboraram nesta edição: Editora: Mariana Belloli Preparação de originais: Susana de Azeredo Gonçalves Leitura final: Angelita Santos da Silva Capa: Kaéle Finalizando Ideias, arte sobre capa original Editoração: Techbooks Reservados todos os direitos de publicação, em língua portuguesa, à BOOKMAN EDITORA LTDA., uma empresa do GRUPO A EDUCAÇÃO S.A. Av. Jerônimo de Ornelas, 670 – Santana 90040-340 – Porto Alegre – RS Fone: (51) 3027-7000 Fax: (51) 3027-7070 É proibida a duplicação ou reprodução deste volume, no todo ou em parte, sob quaisquer formas ou por quaisquer meios (eletrônico, mecânico, gravação, fotocópia, distribuição na Web e outros), sem permissão expressa da Editora. Unidade São Paulo Av. Embaixador Macedo Soares, 10.735 – Pavilhão 5 – Cond. Espace Center Vila Anastácio – 05095-035 – São Paulo – SP Fone: (11) 3665-1100 Fax: (11) 3667-1333 SAC 0800 703-3444 – www.grupoa.com.br IMPRESSO NO BRASIL PRINTED IN BRAZIL Em memória de Amar G. Bose, professor do MIT e fundador e presidente da Bose Corporation: Foi um privilégio sermos seus alunos – e membros da nova geração de Deitels que ouvia nosso pai dizer como suas aulas o inspiraram a dar o melhor de si. Você nos ensinou que, se corrermos atrás dos problemas realmente difíceis, coisas excelentes podem acontecer. Harvey Deitel Paul e Abbey Deitel Esta página foi deixada em branco intencionalmente. Prefácio Bem-vindo ao dinâmico mundo do desenvolvimento de aplicativos Android para smartphones e tablets com o SDK (Software Development Kit) para Android, a lingua- gem de programação Java™, o IDE (integrated development environment – ambiente de desenvolvimento integrado) Development Tools para Android baseado no Eclipse e o novo IDE Android Studio que está em franca evolução. Este livro apresenta tecnologias de computação móvel de ponta para desenvolve- dores de software profissionais. O livro se baseia em nossa abordagem baseada em aplica- tivos – apresentamos os conceitos no contexto de sete aplicativos Android funcionais com- pletos em vez de utilizarmos trechos de código. Cada capítulo (do 2 ao 8) apresenta um aplicativo. Todos iniciam com uma introdução ao aplicativo em questão, um teste mos- trando um ou mais exemplos de execução e uma visão geral das tecnologias. Passamos então a fazer um exame detalhado do código-fonte do aplicativo. Todo o código-fonte está disponível no endereço www.grupoa.com.br. Recomendamos abrir o código-fonte no IDE à medida que você ler o livro. As vendas de dispositivos Android e os downloads de aplicativos estão crescendo exponencialmente. A primeira geração de telefones Android foi lançada em outubro de 2008. Um estudo da Strategy Analytics mostrou que, em outubro de 2013, o Android tinha 81,3% da fatia de mercado global de smartphones, comparados com 13,4% da Apple, 4,1% da Microsoft e 1% do Blackberry.1 De acordo com um relatório do IDC, no final do primeiro trimestre de 2013, o Android tinha 56,5% de participação no mercado global de tablets, comparados com 39,6% do iPad da Apple e 3,7% dos tablets Microsoft Windows.2 Atualmente existe mais de um bilhão de smartphones e tablets Android em uso,3 e mais de 1,5 milhão de aparelhos Android sendo ativados diariamente.4 De acordo com o IDC, a Samsung é líder na fabricação de Android, contando com quase 40% das entre- gas de aparelhos Android no terceiro trimestre de 2013. Bilhões de aplicativos foram baixados do Google Play™ – a loja do Google para aplicativos Android. As oportunidades para os desenvolvedores de aplicativos Android são imensas. A feroz competição entre as plataformas móveis populares e entre as empresas de telefonia móvel está levando à rápida inovação e à queda nos preços. A concorrência en- tre as dezenas de fabricantes de dispositivos Android impulsiona a inovação de hardware e software dentro da comunidade Android. 1 http://blogs.strategyanalytics.com/WSS/post/2013/10/31/Android-Captures-Record-81-Percent- Share-of-Global-Smartphone-Shipments-in-Q3-2013.aspx. 2 http://www.idc.com/getdoc.jsp?containerId=prUS24093213. 3 http://www.android.com/kitkat. 4 http://www.technobuffalo.com/2013/04/16/google-daily-android-activations-1-5-million. viii Prefácio Aviso sobre direitos de cópia e licença de código A Deitel & Associates, Inc. detém os direitos autorais de todo código Android e de todos os aplicativos Android deste livro. Os exemplos de aplicativos Android do livro são licenciados pela Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/ licenses/by/3.0), com a exceção de que não podem ser reutilizados de forma alguma em tutoriais educativos e livros-texto, seja em formato impresso ou digital. Além disso, os autores e a editora não dão qualquer garantia, expressa ou implícita, com relação a esses programas ou à documentação contida neste livro. Os autores e a editora não se responsabilizam por quais- quer danos, casuais ou consequentes, ligados ou provenientes do fornecimento, desempenho ou uso desses programas. Você está livre para usar os aplicativos do livro como base para seus próprios aplicativos, ampliando a funcionalidade existente. Caso tenha dúvidas, entre em contato conosco pelo endereço [email protected]. Público-alvo Presumimos que você seja programador de Java com experiência em programação orientada a objetos. Graças às ferramentas de desenvolvimento para Android aprimo- radas, pudemos eliminar quase toda marcação XML nesta edição. Ainda existem dois pequenos arquivos XML fáceis de entender que precisam ser manipulados. Utilizamos somente aplicativos funcionais completos; portanto, se você não conhece Java, mas tem experiência em programação orientada a objetos com C#/.NET, Objective-C/ Cocoa ou C++ (com bibliotecas de classes), deve conseguir dominar o material rapi- damente, aprendendo uma boa quantidade de Java e programação orientada a objetos no estilo Java. Este livro não é um tutorial sobre Java, mas apresenta uma quantidade significativa de Java no contexto do desenvolvimento de aplicativos Android. Se estiver interessado em aprender Java, confira nossas publicações (em inglês): • Java for Programmers, 2/e (www.deitel.com/books/javafp2) • Vídeos LiveLessons Java Fundamentals: Parts I and II (www.deitel.com/books/Li- veLessons). • Java How to Program, 10/e (www.deitel.com/books/jhtp10) Caso não conheça XML, consulte os seguintes tutoriais online: • http://www.ibm.com/developerworks/xml/newto • http://www.w3schools.com/xml/xml_whatis.asp • http://www.deitel.com/articles/xml_tutorials/20060401/XMLBasics • http://www.deitel.com/articles/xml_tutorials/20060401/XMLStructuringData Principais recursos Aqui estão alguns dos principais recursos do livro: Abordagem baseada em aplicativos. Cada capítulo (do 2 ao 8) apresenta um aplica- tivo completamente codificado. Discutimos o que o aplicativo faz, mostramos capturas de tela do aplicativo em ação, testamos e apresentamos uma visão geral das tecnologias e da arquitetura que vamos usar para construí-lo. Em seguida, construímos a interface gráfica do usuário e os arquivos de recurso do aplicativo, apresentamos o código com- pleto e fazemos um acompanhamento detalhado do código. Discutimos os conceitos de programação e demonstramos a funcionalidade das APIs Android utilizadas. Prefácio ix Android SDK 4.3 e 4.4. Abordamos vários recursos novos do SDK (Software Develop- ment Kit) 4.3 e 4.4 para Android. Fragmentos. A partir do Capítulo 5, utilizamos objetos Fragment para criar e gerenciar partes da interface gráfica de cada aplicativo. Você pode combinar vários fragmentos para criar interfaces do usuário que tiram proveito dos tamanhos de tela dos tablets. Pode também trocar facilmente os fragmentos para tornar suas interfaces gráficas mais dinâmicas, como fará no Capítulo 8. Suporte para vários tamanhos e resoluções de tela. Ao longo dos capítulos, demons- tramos como utilizar os mecanismos do Android para escolher recursos automaticamente (layouts, imagens, etc.), com base no tamanho e na orientação do dispositivo. IDE ADT (Android Development Tools) baseado em Eclipse abordado no livro im- presso. O ambiente de desenvolvimento integrado (IDE) gratuito ADT (Android De- velopment Tools) – o qual inclui o Eclipse e o plug-in ADT – combinado com o JDK (Java Development Kit), também gratuito, fornece todo o software necessário para criar, executar e depurar aplicativos Android, exportá-los para distribuição (por exemplo, car- regá-los no Google Play™) e muito mais. IDE Android Studio. É o IDE preferido para o futuro desenvolvimento de aplicativos Android. Como é novo e está evoluindo rapidamente, nossas discussões sobre ele se en- contram online, no endereço (em inglês): http://www.deitel.com/books/AndroidFP2 Mostraremos como importar projetos já existentes para que você possa testar nossos aplicativos. Demonstraremos também como criar novos aplicativos, construir interfaces gráficas de usuário, modificar arquivos de recurso e testar seus aplicativos. Caso tenha dúvidas, entre em contato conosco pelo endereço [email protected]. Modo imersivo. A barra de status na parte superior da tela e os botões de menu na parte inferior podem ser ocultados, permitindo que seus aplicativos ocupem uma parte maior da tela. Os usuários podem acessar a barra de status fazendo um pressionamento forte e deslizando o dedo (swipe) de cima para baixo na tela, e acessar a barra de sistema (com os botões voltar, home e aplicativos recentes) fazendo um pressionamento forte debaixo para cima. Framework de impressão. O Android 4.4 KitKat permite adicionar aos seus aplicati- vos funcionalidade de impressão, como localizar impressoras disponíveis via Wi-Fi ou na nuvem, selecionar o tamanho do papel e especificar as páginas a serem impressas. Teste em smartphones, em tablets e no emulador Android. Para obter a melhor expe- riência no desenvolvimento de aplicativos, você deve testar seus aplicativos em smartpho- nes e tablets Android reais. Você ainda pode ter uma experiência significativa usando apenas o emulador Android (consulte a seção “Antes de começar”); contudo, ele utiliza muito poder de processamento e pode ser lento, particularmente em jogos que têm mui- tas partes móveis. No Capítulo 1, mencionamos alguns recursos do Android que não são suportados no emulador. Multimídia. Os aplicativos utilizam uma ampla variedade de recursos multimídia para Android, incluindo elementos gráficos, imagens, animação quadro a quadro e áudio. Carregamento de aplicativos no Google Play. O Capítulo 9, “Google Play e questões de comercialização de aplicativos”, o conduz pelo processo de registro do Google Play e x Prefácio no estabelecimento de uma conta bancária para que você possa vender seus aplicativos. Você vai aprender a preparar os aplicativos para enviar ao Google Play, vai encontrar dicas para estabelecer o preço de seus aplicativos e recursos para monetizá-los com anún- cios incorporados e vendas incorporadas de bens virtuais. Também vai encontrar recur- sos para comercializar seus aplicativos. O Capítulo 9 pode ser lido após o Capítulo 1. Outros recursos Sintaxe colorida. Por questões de clareza, colorimos a sintaxe do código de modo si- milar ao uso de cores na sintaxe do Eclipse e do Android Studio. Nossas convenções são as seguintes: os comentários aparecem em verde as palavras-chave aparecem em azul-marinho os valores constantes e literais aparecem em azul o restante do código aparece em preto Realce de código. Enfatizamos os principais segmentos de código de cada programa com destaques em amarelo. Uso de fontes para dar ênfase. Utilizamos várias convenções de fonte: • Explicações de termos importantes aparecem em marrom e em negrito para fácil referência. • Os componentes do IDE na tela aparecem na fonte Helvetica em negrito (por exem- plo, o menu File). • O código-fonte de programa aparece na fonte Lucida (por exemplo, int x = 5;). Neste livro, você vai criar interfaces gráficas do usuário utilizando uma combina- ção de programação visual (apontar e clicar, arrastar e soltar) e escrita de código. Utilizamos fontes diferentes ao nos referirmos aos elementos de interface gráfica do usuário em código de programa e aos elementos de interface gráfica do usuário exi- bidos no IDE: • Componentes de interface gráfica do usuário que criamos em um programa apa- recem com seu nome de classe e nome de objeto na fonte Lucida – por exemplo, “Button saveContactButton”. • Componentes de interface gráfica do usuário que fazem parte do IDE aparecem com o texto do componente na fonte Helvetica em negrito e com fonte de texto nor- mal para o tipo do componente – por exemplo, “o menu File” ou “o botão Run”. Uso do caractere >. Usamos o caractere > para indicar a seleção de um item em um menu. Por exemplo, usamos a notação File > New para indicar que você deve selecionar o item New no menu File. Código-fonte. Todo o código-fonte do livro está disponível para download no endereço: www.grupoa.com.br Cadastre-se gratuitamente, encontre e acesse a página do livro por meio do campo de busca e clique no link Conteúdo Online para fazer download dos códigos. Documentação. Toda documentação sobre Android e Java necessária para desenvol- ver aplicativos Android está disponível gratuitamente nos endereços http://developer.