16
Novatec Ricardo R. Lecheta 4 a Edição

Su Mario 9788575224403

Embed Size (px)

DESCRIPTION

Su Mario 9788575224403

Citation preview

  • Novatec

    Ricardo R. Lecheta

    4a Edio

  • Copyright 2009, 2010, 2013, 2015 da Novatec Editora Ltda.

    Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.

    Editor: Rubens PratesAssistente editorial: Priscila A. YoshimatsuReviso gramatical: Viviane OshimaEditorao eletrnica: Carolina KuwabataCapa: Victor Bittow

    ISBN: 978-85-7522-440-3 OG20150609

    Histrico de impresses:

    Junho/2015 Quarta edio (ISBN: 978-85-7522-440-3)Outubro/2014 Quarta reimpressoAbril/2014 Terceira reimpressoJaneiro/2014 Segunda reimpressoSetembro/2013 Primeira reimpressoMaro/2013 Terceira edio (ISBN: 978-85-7522-344-4)Junho/2010 Segunda edio (ISBN: 978-85-7522-244-7)Maro/2009 Primeira edio (ISBN: 85-7522-186-0)

    Novatec Editora Ltda.Rua Lus Antnio dos Santos 11002460-000 So Paulo, SP BrasilTel.: +55 11 2959-6529Email: [email protected]: novatec.com.brTwitter: twitter.com/novateceditoraFacebook: facebook.com/novatecLinkedIn: linkedin.com/in/novatec

  • 7Sumrio

    Agradecimentos ................................................................................................................. 21

    Sobre o autor ..................................................................................................................... 22

    Prefcio ............................................................................................................................. 23

    Captulo 1 Introduo ao Android ..................................................................................... 251.1 Introduo .................................................................................................251.2 Open Handset Alliance e o Android ...........................................................261.3 Sistema operacional Linux .........................................................................271.4 Cdigo aberto e livre .................................................................................281.5 Mquina virtual Dalvik .............................................................................281.6 Mquina virtual ART (Android Runtime) ...................................................291.7 Conhecendo um pouco mais sobre o Android ............................................291.8 Android Developer Challenge ....................................................................301.9 Google Play ............................................................................................... 311.10 T-Mobile G1 ............................................................................................ 311.11 Google Nexus ...........................................................................................321.12 Um pouco sobre a histria e verses do Android .......................................321.13 Android 1.5 (Cupcake) ..............................................................................331.14 Android 1.6 (Donut) .................................................................................331.15 Android 2.0 e 2.1 (Eclair) ...........................................................................341.16 Android 2.2 (Froyo) ..................................................................................351.17 Android 2.3 (Gingerbread) ........................................................................351.18 Android 3.0 (Honeycomb) ........................................................................361.19 Android 4.0 (Ice Cream Sandwich) ............................................................361.20 Android 4.1 (Jelly Bean) ............................................................................371.21 Android 4.4 (KitKat) .................................................................................381.22 Android 5.0 (Lollipop) .............................................................................381.23 Google I/O 2015 e o anncio do Android M .............................................40

    Captulo 2 Configurao do ambiente de desenvolvimento ................................................ 42

    2.1 Android SDK .............................................................................................422.2 Requisitos de software e sistema ................................................................42

  • Google Android 4a edio8

    2.3 Plataforma (verso do Android) .................................................................432.4 Android Studio .........................................................................................442.5 Instalando os pacotes pelo SDK Manager ...................................................472.6 Intel Hardware Accelerated Execution Manager (HAXM) ............................502.7 Criando um projeto no Android Studio ...................................................... 512.8 Criando um emulador (AVD) ....................................................................562.9 Executando o projeto no emulador ............................................................602.10 Algumas janelas importantes do Android Studio ....................................... 612.11 Aplicaes na tela principal (Home) ..........................................................632.12 Entendendo um pouco mais sobre o emulador .........................................642.13 ADB (Android Debug Bridge) ...................................................................662.14 Informaes bsicas sobre a resoluo do emulador ...................................682.15 Como fazer o download dos exemplos do livro .........................................70

    Captulo 3 Conceitos bsicos do Android ............................................................................ 72

    3.1 Estrutura do projeto no Android Studio .....................................................723.2 Arquivo AndroidManifest.xml ...................................................................763.3 Classe MainActivity ...................................................................................783.4 Arquivo de layout activity_main.xml ..........................................................803.5 Arquivo strings.xml ...................................................................................833.6 Classe R ....................................................................................................833.7 Informaes sobre como acessar recursos de texto e imagem .......................843.8 Arquivo build.gradle .................................................................................863.9 LogCat Escrevendo mensagens de log ......................................................883.10 Tratamento de eventos .............................................................................90

    Captulo 4 Activity ............................................................................................................ 96

    4.1 Activity......................................................................................................964.2 Classes FragmentActivity e AppCompatActivity .........................................974.3 Ciclo de vida de uma activity .....................................................................994.4 Ciclo de vida avanado o que acontece ao rotacionar o celular? .............. 1054.5 Navegao entre telas e inicializao de uma nova activity......................... 1064.6 Mais detalhes sobre a classe Bundle e como passar parmetros ..................1144.7 O bsico sobre action bar e como voltar para tela anterior ..........................1154.8 Links teis ...............................................................................................117

    Captulo 5 Action Bar e temas ......................................................................................... 118

    5.1 Introduo Action Bar ............................................................................1185.2 Temas Holo e Material ..............................................................................1195.3 Projeto de exemplo sobre action bar ......................................................... 1245.4 Opes de visualizao dos action buttons (always, never, ifRoom) ............ 1275.5 Template de cones para os botes da action bar ....................................... 128

  • 9Sumrio

    5.6 Classe android.app.ActionBar .................................................................. 1295.7 SearchView ..............................................................................................1315.8 Action provider ....................................................................................... 1335.9 Split action bar ........................................................................................ 1355.10 Up navigation ........................................................................................ 1375.11 Navegao por tabs na action bar ............................................................ 1385.12 ActionBarCompat a biblioteca de compatibilidade da action bar ............1415.13 Links teis ............................................................................................. 146

    Captulo 6 Interface grfica gerenciadores de layout .................................................... 147

    6.1 View .........................................................................................................1476.2 Classe ViewGroup ....................................................................................1476.3 Configurando a altura e largura de uma view ........................................... 1486.4 Entendendo as constantes wrap_content e match_parent .......................... 1496.5 FrameLayout .......................................................................................... 1556.6 LinearLayout .......................................................................................... 1576.7 LinearLayout controle do alinhamento layout_gravity......................... 1586.8 LinearLayout controle do peso .............................................................. 1596.9 TableLayout uso de uma tabela com linhas e colunas ............................. 1636.10 TableLayout e shrinkColumns contrao de colunas ............................ 1646.11 TableLayout e strechColumns expanso de colunas ............................... 1656.12 TableLayout criando um formulrio ..................................................... 1676.13 GridLayout ............................................................................................1686.14 RelativeLayout ....................................................................................... 1706.15 AbsoluteLayout (deprecated) .................................................................. 1736.16 Utilizando layouts aninhados para criar telas complexas ......................... 1736.17 Criao de um layout pela API LinearLayout .........................................1746.18 Criao de um layout pela API TableLayout ......................................... 1766.19 ScrollView ............................................................................................. 1786.20 Alguns detalhes sobre a ActionBar e o up navigation ............................ 1796.21 LayoutInflater inflando arquivos XML ................................................. 1806.22 Links teis .............................................................................................181

    Captulo 7 Interface grfica View ................................................................................. 182

    7.1 Arquivo /res/values/strings.xml ................................................................ 1827.2 Arquivo XML com as cores ...................................................................... 1837.3 Arquivo XML para criar um estilo CSS ..................................................... 1847.4 Exemplo completo com estilos ................................................................. 1857.5 View A classe responsvel por desenhar elementos na tela ....................... 1877.6 TextView e EditText campo de texto para digitar informaes ................. 1887.7 AutoCompleteTextView ........................................................................... 1897.8 Button e ImageButton ...............................................................................191

  • Google Android 4a edio10

    7.9 CheckBox e ToggleButton ........................................................................ 1937.10 RadioButton .......................................................................................... 1967.11 Spinner ..................................................................................................2007.12 ProgressDialog janela de progresso ....................................................... 2027.13 ProgressBar barra de progresso ............................................................2057.14 Toast alertas rpidos ............................................................................2087.15 AlertDialog alertas para o usurio confirmar ........................................2097.16 LayoutInflater inflando um arquivo XML ............................................. 2107.17 ListView ................................................................................................ 2107.18 ListView com adapter customizado ..........................................................2147.19 GridView ................................................................................................2187.20 Gallery ...................................................................................................2217.21 ViewPager .............................................................................................. 2237.22 ViewPager + TitleStrip ou TabStrip .........................................................2287.23 ImageSwitcher ....................................................................................... 2307.24 WebView ............................................................................................... 2327.25 Movimentando uma imagem pela tela com touch ................................... 2357.26 Desenho manual com a classe Canvas ....................................................2387.27 Nunca utilize pixels ............................................................................... 240

    Captulo 8 Fragments ..................................................................................................... 242

    8.1 Como surgiram os fragments no Android 3.0 Honeycomb ......................... 2428.2 Fragments muito mais do que dividir a tela em duas partes ....................2448.3 API de Fragments .................................................................................... 2498.4 Hello World fragment ..............................................................................2508.5 Utilizando fragments com action bar + tabs ............................................. 2558.6 Utilizando fragments com action bar + tabs + ViewPager .......................... 2588.7 Ciclo de vida de um fragment .................................................................. 2618.8 Migrando um projeto que utiliza activity para fragments ..........................2648.9 Criando um layout dividido em partes nos tablets .................................... 2728.10 Exemplos da API dos fragments ............................................................. 2758.11 Back stack .............................................................................................. 2788.12 Adicionando botes na action bar pelo fragment ..................................... 2798.13 Salvando o estado de um fragment ......................................................... 2818.14 Vantagens de utilizar os fragments ..........................................................2838.15 Links teis .............................................................................................283

    Captulo 9 Animaes ..................................................................................................... 284

    9.1 Drawable Animation ................................................................................2849.2 Classe Animation ....................................................................................2859.3 View Animation ......................................................................................2879.4 AlphaAnimation ......................................................................................287

  • 11Sumrio

    9.5 RotateAnimation .....................................................................................2899.6 ScaleAnimation ........................................................................................2919.7 TranslateAnimation .................................................................................2939.8 AnimationSet ..........................................................................................2969.9 AnimationListener ...................................................................................2989.10 Interpolator ...........................................................................................2989.11 O problema com a API de animaes no Android 2.x ...............................2999.12 Property Animations ..............................................................................3009.13 Classe ValueAnimator .............................................................................3019.14 Classe ObjectAnimator ..........................................................................3039.15 ObjectAnimator animao fade_in/fade_out ........................................3059.16 ObjectAnimator animao de movimento ............................................3069.17 ObjectAnimator animao de rotao .................................................. 3079.18 ObjectAnimator animao de escala ....................................................3089.19 AnimatorSet criando um conjunto de animaes ..................................3089.20 AnimatorListener ..................................................................................3099.21 ViewPropertyAnimator animao do jeito fcil ......................................3109.22 Classe ValueAnimator outro exemplo ................................................... 3119.23 Aplicando animaes no layout ............................................................... 3119.24 Aplicando animaes nos fragments ........................................................3129.25 Aplicando animaes ao navegar entre activities .......................................3139.26 NineOldAndroids animaes com compatibilidade...............................3189.27 Links teis .............................................................................................319

    Captulo 10 Threads, Handler e AsyncTask ....................................................................... 321

    10.1 Introduo ..............................................................................................32110.2 Mtodo sendMessage(msg) .................................................................... 32410.3 Mtodo post(runnable) .......................................................................... 32710.4 Atualizando a view dentro de uma thread ............................................... 32810.5 Agendando tarefas contnuas na activity ................................................. 33310.6 Implementao de um tela Splash Screen para sua aplicao .................... 33510.7 AsyncTask ............................................................................................. 33710.8 Download de imagens com a biblioteca Picasso ......................................34210.9 Links teis.............................................................................................344

    Captulo 11 Material Design ........................................................................................... 345

    11.1 Introduo ............................................................................................. 34511.2 Tema Material ........................................................................................34611.3 Paleta de cores ....................................................................................... 34711.4 Elevao de views ................................................................................... 34911.5 Ripple feedback ao toque ..................................................................... 35211.6 Floating Action Button (FAB) .................................................................. 355

  • Google Android 4a edio12

    11.7 CardView .............................................................................................. 35711.8 RecyclerView ..........................................................................................36011.9 Efeito de revelao (Reveal Effect) ...........................................................36911.10 Extraindo as cores de uma figura ............................................................37111.11 Animaes com item compartilhado entre duas activities ........................ 37211.12 Compatibilidade com verses anteriores ................................................ 37811.13 Links teis ............................................................................................ 378

    Captulo 12 Toolbar ........................................................................................................ 380

    12.1 Introduo Toolbar ..............................................................................38012.2 Utilizando a Toolbar como a action bar ..................................................38212.3 Utilizando a API da Toolbar (modo standalone) ......................................38612.4 Links teis .............................................................................................388

    Captulo 13 Navigation Drawer ....................................................................................... 389

    13.1 Criando o projeto ...................................................................................38913.2 Customizando as cores do tema Material .................................................39113.3 Criando a activity e o fragment base para o projeto ................................. 39213.4 Classe Application armazenando informaes globais ........................... 39413.5 Biblioteca android-utils ..........................................................................39613.6 Como o Gradle encontrou a biblioteca android-utils ............................... 39713.7 Configurando a Toolbar ......................................................................... 39813.8 Navigation Drawer .................................................................................40013.9 Criando o menu overflow ...................................................................... 41013.10 Navigation Drawer com Material Design ................................................ 41113.11 Material Design no Navigation Drawer .................................................. 41513.12 Criando os fragments do projeto ............................................................41813.3 Links teis ..............................................................................................421

    Captulo 14 WebView ..................................................................................................... 422

    14.1 Fragment com WebView .........................................................................42214.2 Swipe to Refresh .................................................................................... 42414.3 Interceptando requisies no WebView ...................................................42614.4 Mostrando alertas com o FragmentDialog ..............................................42714.5 Executando JavaScript ............................................................................43114.6 Comunicao do JavaScript com a classe Android ....................................43114.7 Mostrando cdigo HTML no WebView .................................................. 43314.8 Links teis............................................................................................. 433

  • 13Sumrio

    Captulo 15 RecyclerView e tabs ..................................................................................... 434

    15.1 Criando as classes de domnio ................................................................ 43415.2 Criando a lista de carros ........................................................................43615.3 Tabs e ViewPager ....................................................................................44215.4 Navegao de telas ................................................................................. 44715.5 Links teis ..............................................................................................451

    Captulo 16 Parser de XML, JSON e testes unitrios .......................................................... 452

    16.1 Lendo um arquivo local da pasta /res/raw ............................................... 45216.2 Parser de XML ....................................................................................... 45316.3 Parser de JSON ...................................................................................... 45716.4 Testes unitrios no Android ....................................................................46016.5 Mais informaes ..................................................................................462

    Captulo 17 Web services ................................................................................................ 463

    17.1 Introduo .............................................................................................46317.2 Requisio HTTP para consultar o web service .......................................46517.3 Utilizando a classe AsyncTask .................................................................46617.4 Biblioteca simples para encapsular a AsyncTask .......................................46817.5 Atualizao por Pull to Refresh ............................................................... 47317.6 Verificando se existe conexo disponvel .................................................. 47617.7 Requisies HTTP com Get e Post .......................................................... 47917.8 Web services com WSDL ........................................................................48417.9 Links teis .............................................................................................488

    Captulo 18 Persistncia ................................................................................................. 490

    18.1 Salvando as preferncias do usurio com a classe SharedPreferences .........49018.2 Activity de configuraes........................................................................ 49318.3 Lendo e salvando arquivos .....................................................................49818.4 Trabalhando com arquivos na memria interna .......................................49818.5 Trabalhando com arquivos na memria externa (SD card) ....................... 50118.6 Outros mtodos da classe Context ..........................................................50318.7 Brincando de fazer cache ........................................................................50418.8 Banco de dados SQLite ..........................................................................50618.9 Criao de um banco de dados diretamente com a API ........................... 50718.10 Insero de registros no banco de dados .................................................51218.11 Atualizao de registros no banco de dados .............................................51318.12 Excluso de registros do banco de dados ................................................51418.13 Busca de registros no banco de dados .....................................................51418.14 Mtodos da classe Cursor ......................................................................51518.15 Continuando o projeto dos carros ..........................................................517

  • Google Android 4a edio14

    18.16 Visualizando o banco de dados com a ferramenta adb ............................51918.17 Visualizando o banco de dados com um cliente SQLite .......................... 52018.18 Banco de dados versus web service .........................................................52118.19 Adicionando aes na action bar ........................................................... 52318.20 Editando o nome do carro ................................................................... 52518.21 Excluindo um carro do banco de dados ................................................. 53018.22 Atualizando a lista com dados do web service ....................................... 53318.23 Modo de execuo da activity launchMode ........................................ 53518.24 Fazendo backup na nuvem ................................................................... 53618.25 Fazendo backup de um arquivo ............................................................54018.26 Links teis ........................................................................................... 541

    Captulo 19 Action bar de contexto e compartilhamento ................................................. 542

    19.1 Introduo .............................................................................................54219.2 Detectando toques longos OnLongClickListener ..................................54319.3 Ativando o ActionMode na action bar .....................................................54419.4 Removendo os carros selecionados ...........................................................55119.5 Compartilhando os carros selecionados .................................................. 55219.6 Compartilhando as fotos dos carros selecionados .................................... 55519.7 Links teis ............................................................................................. 559

    Captulo 20 Intents ........................................................................................................ 560

    20.1 Intent envio de uma mensagem ao Android ..........................................56020.2 Intents explcitas e implcitas ................................................................. 56120.3 Exemplos de intents nativas ...................................................................56220.4 Permisses ............................................................................................56820.5 Retornando resultados de uma intent startActivityForResult ................56820.6 IntentFilter ............................................................................................ 57020.7 Por que a MainActivity declara um ? ................................. 57220.8 Exemplo completo com intent customizada ............................................ 57220.9 Verificando se uma intent ser encontrada ..............................................58020.10 Interceptando aplicaes nativas ........................................................... 58120.11 Lendo cdigo de barras .........................................................................58320.12 Nomenclatura das intents .....................................................................58520.13 Links teis ...........................................................................................585

    Captulo 21 Multimdia udio, vdeo e cmera ............................................................. 586

    21.1 Formatos de udio e vdeo suportados ....................................................58621.2 Classe Media Player ...............................................................................58621.3 Criando um player de mp3 .....................................................................58921.4 Reproduzindo vdeo com a classe VideoView ........................................... 59321.5 Utilizando uma intent e o player de vdeo nativo ..................................... 595

  • 15Sumrio

    21.6 Utilizando o VideoView no projeto dos carros .........................................60021.7 Tirando fotos com uma intent ................................................................60421.8 Tirando fotos como obter o arquivo da foto ..........................................60721.9 Trabalhando com bitmaps de forma eficiente .......................................... 61021.10 Enviando a imagem para o servidor ........................................................61221.11 Gravando udio e vdeo .........................................................................61221.12 Links teis ............................................................................................614

    Captulo 22 Mapas ......................................................................................................... 615

    22.1 Introduo ............................................................................................. 61522.2 Google Maps Android API Verso 2 ..................................................... 61622.3 Google Play Services .............................................................................. 61622.4 Gerando a chave de acesso dos mapas .....................................................61722.5 Configurando o projeto ......................................................................... 62022.6 Adicionando o mapa no projeto dos carros ............................................. 62422.7 Classe GoogleMap ................................................................................ 62822.8 Localizao do mapa latitude e longitude ............................................ 62922.9 CameraPosition zoom .........................................................................63022.10 Configurando o tipo do mapa................................................................63122.11 Colocando os conceitos em prticas ...................................................... 63222.12 CameraPosition.................................................................................... 63522.13 CameraPosition bearing rotao ......................................................63622.14 CameraPosition tilt inclinao ......................................................... 63722.15 Monitorando os eventos do mapa .........................................................63822.16 Marcadores .......................................................................................... 63922.17 Polyline desenhando uma linha no mapa ...........................................64422.18 Links teis ...........................................................................................645

    Captulo 23 Google Play Services e localizao ................................................................ 646

    23.1 Introduo .............................................................................................64623.2 My Location .......................................................................................... 64723.3 Monitorando o GPS ( moda antiga) ...................................................... 64723.4 Monitorando o GPS (Fused Location Provider) .......................................64923.5 Conectando-se ao Google Play Services ..................................................65023.6 Obtendo a ltima localizao de forma eficiente ......................................65123.7 API de localizao do Google Play Services ............................................. 65523.8 Desenhando uma rota entre dois pontos ................................................. 65923.9 Buscando um endereo .......................................................................... 66123.10 Links teis ........................................................................................... 661

  • Google Android 4a edio16

    Captulo 24 BroadcastReceiver ....................................................................................... 662

    24.1 Introduo .............................................................................................66224.2 Configurando um receiver de forma esttica ...........................................66324.3 Configurando um receiver de forma dinmica ........................................66524.4 Quando utilizar um receiver esttico ou dinmico? .................................66724.5 Classe LocalBroadcastManager ..............................................................66824.6 Execuo de um receiver ao inicializar o sistema operacional ...................66824.7 Interceptando uma mensagem SMS ........................................................66924.8 Ciclo de vida ......................................................................................... 67024.9 Delegando o trabalho para um service .....................................................67124.10 Mostrando uma notificao para o usurio ............................................67124.11 Links teis ............................................................................................ 672

    Captulo 25 Notification ................................................................................................. 673

    25.1 Por que usar uma notificao para se comunicar com o usurio ............... 67325.2 Criando uma notificao simples ........................................................... 67425.3 Heads-up notifications ...........................................................................68025.4 Notificaes na tela de bloqueio .............................................................68225.5 Criando uma notificao grande (big view notifications) .........................68425.6 Criando uma notificao com aes .......................................................68625.7 Cancelando uma notificao ..................................................................68825.8 Mais informaes sobre a classe PendingIntent .......................................68825.9 Exemplo com notificao e BroadcastReceiver .........................................68925.10 Mostrando uma barra de progresso na notificao ................................. 69225.11 Links teis ............................................................................................ 693

    Captulo 26 AlarmManager ............................................................................................ 694

    26.1 Por que utilizar um alarme (agendar uma tarefa) .....................................69426.2 Mtodo da classe AlarmManager ...........................................................69526.3 Agendando um alarme .......................................................................... 69726.4 Repetindo o alarme.................................................................................70126.5 Classe Calendar .....................................................................................70126.6 Quando utilizar ou no um alarme ........................................................ 70226.7 Links teis ............................................................................................ 703

    Captulo 27 Service e JobInfo .......................................................................................... 704

    27.1 Introduo .............................................................................................70427.2 Exemplos de servios .............................................................................70527.3 Como iniciar e parar um servio .............................................................70627.4 Exemplo prtico .................................................................................... 70727.5 Deixar o servio executando depois de sair de uma tela ............................712

  • 17Sumrio

    27.6 Entendendo o ciclo de vida de um servio ...............................................71227.7 A classe IntentService ..............................................................................71427.8 Criando um player mp3 ......................................................................... 71627.9 Mtodo bindService(intent,con,flags) ..................................................... 72327.10 Qual mtodo utilizar para iniciar um servio? ........................................ 72527.11 Um servio em execuo contnua no consome muito processamento? .. 72527.12 JobInfo a nova API do Lollipop ..........................................................72627.13 Links teis ........................................................................................... 730

    Captulo 28 GCM Google Cloud Messaging .................................................................... 731

    28.1 O que push? .........................................................................................73128.2 Como funciona o GCM ......................................................................... 73228.3 Gerando a chave de acesso do GCM ....................................................... 73328.4 Obtendo o Project Number .................................................................... 73528.5 Executando o projeto de exemplo .......................................................... 73528.6 Enviando a mensagem de push ..............................................................73628.7 Criando o projeto Android passo a passo ............................................... 73928.8 Classe GoogleCloudMessaging .............................................................. 74028.9 Configurando o projeto Android ............................................................ 74228.10 Criando a activity para fazer o registro no GCM .................................... 74628.11 Links teis ........................................................................................... 750

    Captulo 29 Salvando o estado da aplicao .................................................................... 751

    29.1 Troca de configuraes configuration changes ........................................75129.2 Salvando o estado com o mtodo onSaveInstanceState(bundle) ............... 75229.3 Salvando o estado com o mtodo setRetainInstance(boolean) .................. 75529.4 A importncia de reter a instncia do fragment ....................................... 75629.5 Manter uma thread executando durante a troca de orientao ................. 75729.6 Como bloquear a troca de orientao ......................................................76129.7 Dispositivos com teclado ........................................................................ 76229.8 Configurao android:configChanges e o mtodo onConfigurationChanged ...76229.9 Salvando o estado no projeto dos carros ................................................. 76529.10 Links teis ........................................................................................... 765

    Captulo 30 Suportando diferentes tamanhos de telas .................................................... 766

    30.1 Unidades de medida ..............................................................................76630.2 Tamanho de tela (screen size) ................................................................. 76730.3 Proporo da tela (aspect ratio) ..............................................................76830.4 Resoluo e densidade da tela ................................................................ 76930.5 O problema de utilizar pixels ................................................................. 76930.6 DIP ou DP (density-independent pixel) .................................................. 77130.7 Tabela de densidade dos dispositivos ......................................................773

  • Google Android 4a edio18

    30.8 Customizando as imagens conforme a densidade da tela ......................... 77430.9 Trabalhando com a unidade dp no Canvas .............................................77530.10 Tamanho da tela em dp ........................................................................77730.11 Dimenses (dimen)...............................................................................77730.12 Qualificadores de recursos para tablets .................................................78030.13 Links teis ............................................................................................781

    Captulo 31 Threads avanado AsyncTask e Loader ....................................................... 783

    31.1 O problema com o ProgressDialog .......................................................... 78331.2 Controlando a troca de orientao ao executar uma task .........................78831.3 Executando a AsyncTask de forma serial ou paralela ................................ 79331.4 Loader ...................................................................................................79431.5 Opinio do autor ...................................................................................80831.6 Links teis .............................................................................................809

    Captulo 32 Agenda de contatos e content provider ......................................................... 810

    32.1 Por que utilizar a classe ContentProvider provedor de contedo............. 81032.2 URI Immutable URI reference .............................................................. 81132.3 Exemplos de provedores de contedo nativos .......................................... 81232.4 Lendo os contatos da agenda ..................................................................81432.5 Como ler todos os telefones e a foto de um contato ................................. 81632.6 Mostrando os contatos em um ListView ..................................................82132.7 Utilizando um CursorAdapter ................................................................ 82432.8 Utilizando um CursorLoader .................................................................82732.9 Monitorando a fonte de dados com um loader ........................................82832.10 Criando um provedor de contedo customizado ...................................83032.11 Classe ContentProvider ..........................................................................83132.12 Classe esttica Carros ...........................................................................83832.13 Links teis ...........................................................................................840

    Captulo 33 SMS ............................................................................................................. 841

    33.1 Enviando SMS por intent ou pela API ..................................................... 84133.2 Criando um BroadcastReceiver para receber um SMS ..............................84533.3 Links teis ............................................................................................848

    Captulo 34 Gestos ......................................................................................................... 849

    34.1 Introduo .............................................................................................84934.2 Reconhecendo gestos previamente cadastrados .......................................84934.3 Detectando gestos comuns, como scroll lateral ........................................ 85734.4 Detectando gesto de pinch (zoom) ......................................................... 86134.5 Links teis ............................................................................................866

  • 19Sumrio

    Captulo 35 Sensores e Google Fit ................................................................................... 867

    35.1 Como obter a lista de sensores disponveis .............................................. 86735.2 Testando os sensores .............................................................................. 87135.3 Sensor de luminosidade ......................................................................... 87635.4 Sensor de temperatura ........................................................................... 87835.5 Sensor de proximidade .......................................................................... 87835.6 Sensor de acelermetro ..........................................................................87935.7 Movendo uma view pela tela com o acelermetro ....................................88635.8 Google Fit .............................................................................................88935.9 Links teis .............................................................................................898

    Captulo 36 Bluetooth .................................................................................................... 899

    36.1 Verificando se o dispositivo suporta Bluetooth ........................................89936.2 Ativando o Bluetooth por programao ..................................................90036.3 Listando os dispositivos pareados ..........................................................90236.4 Buscar novos dispositivos Bluetooth .......................................................90236.5 Deixando o Bluetooth visvel para ser encontrado ...................................90636.6 Criando um BluetoothDevice pelo endereo ...........................................90736.7 Chat em Bluetooth ................................................................................90836.8 Conectando-se ao Bluetooth pela serial ...................................................91836.9 Links teis .............................................................................................919

    Captulo 37 Reconhecimento de voz ............................................................................... 920

    37.1 Introduo .............................................................................................92037.2 Hello TTS faa seu Android falar ..........................................................92137.3 Verificando o idioma e falando em portugus .......................................... 92737.4 Reconhecimento de voz por intent ..........................................................92937.5 Reconhecimento de voz por um listener .................................................. 93237.6 Links teis ............................................................................................. 935

    Captulo 38 Gradle ......................................................................................................... 936

    38.1 Introduo .............................................................................................93638.2 Gerenciando dependncias .................................................................... 93738.3 Trabalhando com mdulos ....................................................................93838.4 Trabalhando com bibliotecas ................................................................. 94138.5 Criando uma biblioteca ......................................................................... 94138.6 Configurando um servidor Maven Sonatype Nexus ................................94638.7 Publicando no Maven Central ................................................................94638.8 Flavors .................................................................................................. 94738.9 Classe BuildConfig .................................................................................951

  • Google Android 4a edio20

    38.10 Assinando o aplicativo para o build release ........................................... 95338.11 Links teis ........................................................................................... 955

    Captulo 39 Android Wear ............................................................................................... 957

    39.1 Introduo ............................................................................................. 95739.2 Hello World Wear .................................................................................. 95939.3 Conectando o smartphone no Android Wear ..........................................96339.4 Conectando o smartphone no relgio fsico ............................................96539.5 Notificaes no wear ..............................................................................96639.6 Notificaes com vrias pginas ............................................................. 96739.7 Notificaes empilhadas ........................................................................96839.8 Notificaes com comandos de voz ......................................................... 97039.9 Google Play Services e Wearable API ....................................................... 97239.10 Node API ............................................................................................. 97339.11 Message API ......................................................................................... 97439.12 Data API .............................................................................................. 97539.13 Enviando mensagens entre o smartphone e o Wear ................................ 97639.14 Enviando uma foto tirada pela cmera para o wear ................................98639.15 Criando views e layouts para wear .........................................................98939.16 Criando cards (cartes) .........................................................................99039.17 Criando listas .......................................................................................99539.18 Criando pginas (ViewPager) ................................................................99739.19 Criando pginas em grid (GridViewPager) ............................................99939.20 Aplicativos em tela cheia (Full-Screen)................................................. 100339.21 Animao de confirmao ................................................................... 100539.22 Alertas de sucesso e erro .................................................................... 100739.23 Interceptando eventos em background ................................................ 100839.24 Localizao e sensores ........................................................................ 100939.25 Links teis ..........................................................................................1010

    Captulo 40 Google Play ............................................................................................... 1011

    40.1 Controle da verso de sua aplicao ........................................................101140.2 Compilando o projeto corretamente ...................................................... 101240.3 Assinando o aplicativo pelo Android Studio/Gradle ............................... 101340.4 Publicando no Google Play ................................................................... 101340.5 Monetizao com anncios ................................................................... 101440.6 Links teis ...........................................................................................1016