Вы находитесь на странице: 1из 16

4a Edio

Ricardo R. Lecheta

Novatec

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 Prates
Assistente editorial: Priscila A. Yoshimatsu
Reviso gramatical: Viviane Oshima
Editorao eletrnica: Carolina Kuwabata
Capa: Victor Bittow
ISBN: 978-85-7522-440-3 OG20150609
Histrico de impresses:
Junho/2015
Outubro/2014
Abril/2014
Janeiro/2014
Setembro/2013
Maro/2013
Junho/2010
Maro/2009

Quarta edio (ISBN: 978-85-7522-440-3)


Quarta reimpresso
Terceira reimpresso
Segunda reimpresso
Primeira reimpresso
Terceira edio (ISBN: 978-85-7522-344-4)
Segunda edio (ISBN: 978-85-7522-244-7)
Primeira edio (ISBN: 85-7522-186-0)

Novatec Editora Ltda.


Rua Lus Antnio dos Santos 110
02460-000 So Paulo, SP Brasil
Tel.: +55 11 2959-6529
Email: novatec@novatec.com.br
Site: novatec.com.br
Twitter: twitter.com/novateceditora
Facebook: facebook.com/novatec
LinkedIn: linkedin.com/in/novatec

Sumrio

Agradecimentos..................................................................................................................21
Sobre o autor......................................................................................................................22
Prefcio..............................................................................................................................23
Captulo 1 Introduo ao Android......................................................................................25
1.1 Introduo..................................................................................................25
1.2 Open Handset Alliance e o Android............................................................26
1.3 Sistema operacional Linux..........................................................................27
1.4 Cdigo aberto e livre..................................................................................28
1.5 Mquina virtual Dalvik..............................................................................28
1.6 Mquina virtual ART (Android Runtime)....................................................29
1.7 Conhecendo um pouco mais sobre o Android.............................................29
1.8 Android Developer Challenge.....................................................................30
1.9 Google Play................................................................................................ 31
1.10 T-Mobile G1............................................................................................. 31
1.11 Google Nexus............................................................................................ 32
1.12 Um pouco sobre a histria e verses do Android........................................ 32
1.13 Android 1.5 (Cupcake)...............................................................................33
1.14 Android 1.6 (Donut)..................................................................................33
1.15 Android 2.0 e 2.1 (Eclair)............................................................................34
1.16 Android 2.2 (Froyo)...................................................................................35
1.17 Android 2.3 (Gingerbread).........................................................................35
1.18 Android 3.0 (Honeycomb).........................................................................36
1.19 Android 4.0 (Ice Cream Sandwich).............................................................36
1.20 Android 4.1 (Jelly Bean)............................................................................. 37
1.21 Android 4.4 (KitKat)..................................................................................38
1.22 Android 5.0 (Lollipop)..............................................................................38
1.23 Google I/O 2015 e o anncio do Android M..............................................40

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


2.1 Android SDK..............................................................................................42
2.2 Requisitos de software e sistema.................................................................42
7

Google Android 4a edio

2.3 Plataforma (verso do Android)..................................................................43


2.4 Android Studio..........................................................................................44
2.5 Instalando os pacotes pelo SDK Manager.................................................... 47
2.6 Intel Hardware Accelerated Execution Manager (HAXM).............................50
2.7 Criando um projeto no Android Studio....................................................... 51
2.8 Criando um emulador (AVD).....................................................................56
2.9 Executando o projeto no emulador.............................................................60
2.10 Algumas janelas importantes do Android Studio........................................ 61
2.11 Aplicaes na tela principal (Home)...........................................................63
2.12 Entendendo um pouco mais sobre o emulador..........................................64
2.13 ADB (Android Debug Bridge)....................................................................66
2.14 Informaes bsicas sobre a resoluo do emulador....................................68
2.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......................................................72
3.2 Arquivo AndroidManifest.xml....................................................................76
3.3 Classe MainActivity....................................................................................78
3.4 Arquivo de layout activity_main.xml...........................................................80
3.5 Arquivo strings.xml....................................................................................83
3.6 Classe R.....................................................................................................83
3.7 Informaes sobre como acessar recursos de texto e imagem........................84
3.8 Arquivo build.gradle..................................................................................86
3.9 LogCat Escrevendo mensagens de log.......................................................88
3.10 Tratamento de eventos..............................................................................90

Captulo 4 Activity.............................................................................................................96
4.1 Activity......................................................................................................96
4.2 Classes FragmentActivity e AppCompatActivity..........................................97
4.3 Ciclo de vida de uma activity......................................................................99
4.4 Ciclo de vida avanado o que acontece ao rotacionar o celular?............... 105
4.5 Navegao entre telas e inicializao de uma nova activity......................... 106
4.6 Mais detalhes sobre a classe Bundle e como passar parmetros................... 114
4.7 O bsico sobre action bar e como voltar para tela anterior...........................115
4.8 Links teis................................................................................................117

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


5.1 Introduo Action Bar.............................................................................118
5.2 Temas Holo e Material...............................................................................119
5.3 Projeto de exemplo sobre action bar.......................................................... 124
5.4 Opes de visualizao dos action buttons (always, never, ifRoom)............. 127
5.5 Template de cones para os botes da action bar........................................ 128

Sumrio

5.6 Classe android.app.ActionBar................................................................... 129


5.7 SearchView............................................................................................... 131
5.8 Action provider........................................................................................ 133
5.9 Split action bar......................................................................................... 135
5.10 Up navigation......................................................................................... 137
5.11 Navegao por tabs na action bar............................................................. 138
5.12 ActionBarCompat a biblioteca de compatibilidade da action bar............. 141
5.13 Links teis.............................................................................................. 146

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


6.1 View..........................................................................................................147
6.2 Classe ViewGroup.....................................................................................147
6.3 Configurando a altura e largura de uma view............................................ 148
6.4 Entendendo as constantes wrap_content e match_parent........................... 149
6.5 FrameLayout........................................................................................... 155
6.6 LinearLayout........................................................................................... 157
6.7 LinearLayout controle do alinhamento layout_gravity......................... 158
6.8 LinearLayout controle do peso............................................................... 159
6.9 TableLayout uso de uma tabela com linhas e colunas.............................. 163
6.10 TableLayout e shrinkColumns contrao de colunas............................. 164
6.11 TableLayout e strechColumns expanso de colunas................................ 165
6.12 TableLayout criando um formulrio...................................................... 167
6.13 GridLayout............................................................................................. 168
6.14 RelativeLayout........................................................................................ 170
6.15 AbsoluteLayout (deprecated)................................................................... 173
6.16 Utilizando layouts aninhados para criar telas complexas.......................... 173
6.17 Criao de um layout pela API LinearLayout..........................................174
6.18 Criao de um layout pela API TableLayout.......................................... 176
6.19 ScrollView.............................................................................................. 178
6.20 Alguns detalhes sobre a ActionBar e o up navigation............................. 179
6.21 LayoutInflater inflando arquivos XML.................................................. 180
6.22 Links teis..............................................................................................181

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


7.1 Arquivo /res/values/strings.xml................................................................. 182
7.2 Arquivo XML com as cores....................................................................... 183
7.3 Arquivo XML para criar um estilo CSS...................................................... 184
7.4 Exemplo completo com estilos.................................................................. 185
7.5 View A classe responsvel por desenhar elementos na tela........................ 187
7.6 TextView e EditText campo de texto para digitar informaes.................. 188
7.7 AutoCompleteTextView............................................................................ 189
7.8 Button e ImageButton................................................................................191

10

Google Android 4a edio

7.9 CheckBox e ToggleButton......................................................................... 193


7.10 RadioButton........................................................................................... 196
7.11 Spinner...................................................................................................200
7.12 ProgressDialog janela de progresso........................................................ 202
7.13 ProgressBar barra de progresso.............................................................205
7.14 Toast alertas rpidos.............................................................................208
7.15 AlertDialog alertas para o usurio confirmar.........................................209
7.16 LayoutInflater inflando um arquivo XML.............................................. 210
7.17 ListView................................................................................................. 210
7.18 ListView com adapter customizado...........................................................214
7.19 GridView.................................................................................................218
7.20 Gallery....................................................................................................221
7.21 ViewPager............................................................................................... 223
7.22 ViewPager + TitleStrip ou TabStrip.......................................................... 228
7.23 ImageSwitcher........................................................................................ 230
7.24 WebView................................................................................................ 232
7.25 Movimentando uma imagem pela tela com touch.................................... 235
7.26 Desenho manual com a classe Canvas..................................................... 238
7.27 Nunca utilize pixels................................................................................ 240

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


8.1 Como surgiram os fragments no Android 3.0 Honeycomb.......................... 242
8.2 Fragments muito mais do que dividir a tela em duas partes..................... 244
8.3 API de Fragments..................................................................................... 249
8.4 Hello World fragment............................................................................... 250
8.5 Utilizando fragments com action bar + tabs.............................................. 255
8.6 Utilizando fragments com action bar + tabs + ViewPager........................... 258
8.7 Ciclo de vida de um fragment................................................................... 261
8.8 Migrando um projeto que utiliza activity para fragments...........................264
8.9 Criando um layout dividido em partes nos tablets..................................... 272
8.10 Exemplos da API dos fragments.............................................................. 275
8.11 Back stack............................................................................................... 278
8.12 Adicionando botes na action bar pelo fragment...................................... 279
8.13 Salvando o estado de um fragment.......................................................... 281
8.14 Vantagens de utilizar os fragments...........................................................283
8.15 Links teis..............................................................................................283

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


9.1 Drawable Animation.................................................................................284
9.2 Classe Animation..................................................................................... 285
9.3 View Animation.......................................................................................287
9.4 AlphaAnimation.......................................................................................287

Sumrio

11

9.5 RotateAnimation......................................................................................289
9.6 ScaleAnimation.........................................................................................291
9.7 TranslateAnimation.................................................................................. 293
9.8 AnimationSet...........................................................................................296
9.9 AnimationListener....................................................................................298
9.10 Interpolator............................................................................................298
9.11 O problema com a API de animaes no Android 2.x................................299
9.12 Property Animations...............................................................................300
9.13 Classe ValueAnimator..............................................................................301
9.14 Classe ObjectAnimator........................................................................... 303
9.15 ObjectAnimator animao fade_in/fade_out.........................................305
9.16 ObjectAnimator animao de movimento.............................................306
9.17 ObjectAnimator animao de rotao................................................... 307
9.18 ObjectAnimator animao de escala.....................................................308
9.19 AnimatorSet criando um conjunto de animaes...................................308
9.20 AnimatorListener...................................................................................309
9.21 ViewPropertyAnimator animao do jeito fcil.......................................310
9.22 Classe ValueAnimator outro exemplo.................................................... 311
9.23 Aplicando animaes no layout................................................................ 311
9.24 Aplicando animaes nos fragments.........................................................312
9.25 Aplicando animaes ao navegar entre activities........................................313
9.26 NineOldAndroids animaes com compatibilidade...............................318
9.27 Links teis..............................................................................................319

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


10.1 Introduo...............................................................................................321
10.2 Mtodo sendMessage(msg)..................................................................... 324
10.3 Mtodo post(runnable)........................................................................... 327
10.4 Atualizando a view dentro de uma thread................................................ 328
10.5 Agendando tarefas contnuas na activity.................................................. 333
10.6 Implementao de um tela Splash Screen para sua aplicao..................... 335
10.7 AsyncTask.............................................................................................. 337
10.8 Download de imagens com a biblioteca Picasso....................................... 342
10.9 Links teis.............................................................................................344

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


11.1 Introduo.............................................................................................. 345
11.2 Tema Material.........................................................................................346
11.3 Paleta de cores........................................................................................ 347
11.4 Elevao de views.................................................................................... 349
11.5 Ripple feedback ao toque...................................................................... 352
11.6 Floating Action Button (FAB)................................................................... 355

12

Google Android 4a edio

11.7 CardView............................................................................................... 357


11.8 RecyclerView...........................................................................................360
11.9 Efeito de revelao (Reveal Effect)............................................................ 369
11.10 Extraindo as cores de uma figura.............................................................371
11.11 Animaes com item compartilhado entre duas activities......................... 372
11.12 Compatibilidade com verses anteriores................................................. 378
11.13 Links teis............................................................................................. 378

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


12.1 Introduo Toolbar...............................................................................380
12.2 Utilizando a Toolbar como a action bar...................................................382
12.3 Utilizando a API da Toolbar (modo standalone).......................................386
12.4 Links teis..............................................................................................388

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


13.1 Criando o projeto....................................................................................389
13.2 Customizando as cores do tema Material..................................................391
13.3 Criando a activity e o fragment base para o projeto.................................. 392
13.4 Classe Application armazenando informaes globais............................ 394
13.5 Biblioteca android-utils........................................................................... 396
13.6 Como o Gradle encontrou a biblioteca android-utils................................ 397
13.7 Configurando a Toolbar.......................................................................... 398
13.8 Navigation Drawer..................................................................................400
13.9 Criando o menu overflow....................................................................... 410
13.10 Navigation Drawer com Material Design................................................. 411
13.11 Material Design no Navigation Drawer................................................... 415
13.12 Criando os fragments do projeto.............................................................418
13.3 Links teis...............................................................................................421

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


14.1 Fragment com WebView.......................................................................... 422
14.2 Swipe to Refresh..................................................................................... 424
14.3 Interceptando requisies no WebView....................................................426
14.4 Mostrando alertas com o FragmentDialog............................................... 427
14.5 Executando JavaScript.............................................................................431
14.6 Comunicao do JavaScript com a classe Android.....................................431
14.7 Mostrando cdigo HTML no WebView................................................... 433
14.8 Links teis............................................................................................. 433

Sumrio

13

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


15.1 Criando as classes de domnio................................................................. 434
15.2 Criando a lista de carros.........................................................................436
15.3 Tabs e ViewPager.....................................................................................442
15.4 Navegao de telas.................................................................................. 447
15.5 Links teis...............................................................................................451

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


16.1 Lendo um arquivo local da pasta /res/raw................................................ 452
16.2 Parser de XML........................................................................................ 453
16.3 Parser de JSON....................................................................................... 457
16.4 Testes unitrios no Android.....................................................................460
16.5 Mais informaes...................................................................................462

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


17.1 Introduo..............................................................................................463
17.2 Requisio HTTP para consultar o web service........................................465
17.3 Utilizando a classe AsyncTask..................................................................466
17.4 Biblioteca simples para encapsular a AsyncTask........................................468
17.5 Atualizao por Pull to Refresh................................................................ 473
17.6 Verificando se existe conexo disponvel................................................... 476
17.7 Requisies HTTP com Get e Post........................................................... 479
17.8 Web services com WSDL.........................................................................484
17.9 Links teis..............................................................................................488

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


18.1 Salvando as preferncias do usurio com a classe SharedPreferences..........490
18.2 Activity de configuraes........................................................................ 493
18.3 Lendo e salvando arquivos...................................................................... 498
18.4 Trabalhando com arquivos na memria interna........................................ 498
18.5 Trabalhando com arquivos na memria externa (SD card)........................ 501
18.6 Outros mtodos da classe Context...........................................................503
18.7 Brincando de fazer cache.........................................................................504
18.8 Banco de dados SQLite...........................................................................506
18.9 Criao de um banco de dados diretamente com a API............................ 507
18.10 Insero de registros no banco de dados..................................................512
18.11 Atualizao de registros no banco de dados..............................................513
18.12 Excluso de registros do banco de dados.................................................514
18.13 Busca de registros no banco de dados......................................................514
18.14 Mtodos da classe Cursor.......................................................................515
18.15 Continuando o projeto dos carros...........................................................517

14

Google Android 4a edio

18.16 Visualizando o banco de dados com a ferramenta adb.............................519


18.17 Visualizando o banco de dados com um cliente SQLite........................... 520
18.18 Banco de dados versus web service..........................................................521
18.19 Adicionando aes na action bar............................................................ 523
18.20 Editando o nome do carro.................................................................... 525
18.21 Excluindo um carro do banco de dados.................................................. 530
18.22 Atualizando a lista com dados do web service........................................ 533
18.23 Modo de execuo da activity launchMode......................................... 535
18.24 Fazendo backup na nuvem.................................................................... 536
18.25 Fazendo backup de um arquivo.............................................................540
18.26 Links teis............................................................................................ 541

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


19.1 Introduo.............................................................................................. 542
19.2 Detectando toques longos OnLongClickListener................................... 543
19.3 Ativando o ActionMode na action bar......................................................544
19.4 Removendo os carros selecionados............................................................551
19.5 Compartilhando os carros selecionados................................................... 552
19.6 Compartilhando as fotos dos carros selecionados..................................... 555
19.7 Links teis.............................................................................................. 559

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


20.1 Intent envio de uma mensagem ao Android...........................................560
20.2 Intents explcitas e implcitas.................................................................. 561
20.3 Exemplos de intents nativas.................................................................... 562
20.4 Permisses.............................................................................................568
20.5 Retornando resultados de uma intent startActivityForResult.................568
20.6 IntentFilter............................................................................................. 570
20.7 Por que a MainActivity declara um <intent-filter>?.................................. 572
20.8 Exemplo completo com intent customizada............................................. 572
20.9 Verificando se uma intent ser encontrada...............................................580
20.10 Interceptando aplicaes nativas............................................................ 581
20.11 Lendo cdigo de barras..........................................................................583
20.12 Nomenclatura das intents...................................................................... 585
20.13 Links teis............................................................................................ 585

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


21.1 Formatos de udio e vdeo suportados.....................................................586
21.2 Classe Media Player................................................................................586
21.3 Criando um player de mp3......................................................................589
21.4 Reproduzindo vdeo com a classe VideoView............................................ 593
21.5 Utilizando uma intent e o player de vdeo nativo...................................... 595

Sumrio

15

21.6 Utilizando o VideoView no projeto dos carros..........................................600


21.7 Tirando fotos com uma intent.................................................................604
21.8 Tirando fotos como obter o arquivo da foto...........................................607
21.9 Trabalhando com bitmaps de forma eficiente........................................... 610
21.10 Enviando a imagem para o servidor.........................................................612
21.11 Gravando udio e vdeo..........................................................................612
21.12 Links teis.............................................................................................614

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


22.1 Introduo.............................................................................................. 615
22.2 Google Maps Android API Verso 2...................................................... 616
22.3 Google Play Services............................................................................... 616
22.4 Gerando a chave de acesso dos mapas......................................................617
22.5 Configurando o projeto.......................................................................... 620
22.6 Adicionando o mapa no projeto dos carros.............................................. 624
22.7 Classe GoogleMap................................................................................. 628
22.8 Localizao do mapa latitude e longitude............................................. 629
22.9 CameraPosition zoom..........................................................................630
22.10 Configurando o tipo do mapa................................................................631
22.11 Colocando os conceitos em prticas....................................................... 632
22.12 CameraPosition.................................................................................... 635
22.13 CameraPosition bearing rotao.......................................................636
22.14 CameraPosition tilt inclinao.......................................................... 637
22.15 Monitorando os eventos do mapa..........................................................638
22.16 Marcadores........................................................................................... 639
22.17 Polyline desenhando uma linha no mapa............................................644
22.18 Links teis............................................................................................ 645

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


23.1 Introduo..............................................................................................646
23.2 My Location........................................................................................... 647
23.3 Monitorando o GPS ( moda antiga)....................................................... 647
23.4 Monitorando o GPS (Fused Location Provider)........................................649
23.5 Conectando-se ao Google Play Services................................................... 650
23.6 Obtendo a ltima localizao de forma eficiente.......................................651
23.7 API de localizao do Google Play Services.............................................. 655
23.8 Desenhando uma rota entre dois pontos.................................................. 659
23.9 Buscando um endereo........................................................................... 661
23.10 Links teis............................................................................................ 661

16

Google Android 4a edio

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


24.1 Introduo..............................................................................................662
24.2 Configurando um receiver de forma esttica............................................663
24.3 Configurando um receiver de forma dinmica.........................................665
24.4 Quando utilizar um receiver esttico ou dinmico?.................................. 667
24.5 Classe LocalBroadcastManager...............................................................668
24.6 Execuo de um receiver ao inicializar o sistema operacional....................668
24.7 Interceptando uma mensagem SMS.........................................................669
24.8 Ciclo de vida.......................................................................................... 670
24.9 Delegando o trabalho para um service......................................................671
24.10 Mostrando uma notificao para o usurio.............................................671
24.11 Links teis............................................................................................. 672

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


25.1 Por que usar uma notificao para se comunicar com o usurio................ 673
25.2 Criando uma notificao simples............................................................ 674
25.3 Heads-up notifications............................................................................680
25.4 Notificaes na tela de bloqueio..............................................................682
25.5 Criando uma notificao grande (big view notifications)..........................684
25.6 Criando uma notificao com aes........................................................686
25.7 Cancelando uma notificao...................................................................688
25.8 Mais informaes sobre a classe PendingIntent........................................688
25.9 Exemplo com notificao e BroadcastReceiver..........................................689
25.10 Mostrando uma barra de progresso na notificao.................................. 692
25.11 Links teis............................................................................................. 693

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


26.1 Por que utilizar um alarme (agendar uma tarefa)...................................... 694
26.2 Mtodo da classe AlarmManager............................................................ 695
26.3 Agendando um alarme........................................................................... 697
26.4 Repetindo o alarme.................................................................................701
26.5 Classe Calendar......................................................................................701
26.6 Quando utilizar ou no um alarme......................................................... 702
26.7 Links teis............................................................................................. 703

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


27.1 Introduo..............................................................................................704
27.2 Exemplos de servios.............................................................................. 705
27.3 Como iniciar e parar um servio..............................................................706
27.4 Exemplo prtico..................................................................................... 707
27.5 Deixar o servio executando depois de sair de uma tela.............................712

Sumrio

17

27.6 Entendendo o ciclo de vida de um servio................................................712


27.7 A classe IntentService...............................................................................714
27.8 Criando um player mp3.......................................................................... 716
27.9 Mtodo bindService(intent,con,flags)...................................................... 723
27.10 Qual mtodo utilizar para iniciar um servio?......................................... 725
27.11 Um servio em execuo contnua no consome muito processamento?... 725
27.12 JobInfo a nova API do Lollipop........................................................... 726
27.13 Links teis............................................................................................ 730

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


28.1 O que push?..........................................................................................731
28.2 Como funciona o GCM.......................................................................... 732
28.3 Gerando a chave de acesso do GCM........................................................ 733
28.4 Obtendo o Project Number..................................................................... 735
28.5 Executando o projeto de exemplo........................................................... 735
28.6 Enviando a mensagem de push............................................................... 736
28.7 Criando o projeto Android passo a passo................................................ 739
28.8 Classe GoogleCloudMessaging............................................................... 740
28.9 Configurando o projeto Android............................................................. 742
28.10 Criando a activity para fazer o registro no GCM..................................... 746
28.11 Links teis............................................................................................ 750

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


29.1 Troca de configuraes configuration changes.........................................751
29.2 Salvando o estado com o mtodo onSaveInstanceState(bundle)................ 752
29.3 Salvando o estado com o mtodo setRetainInstance(boolean)................... 755
29.4 A importncia de reter a instncia do fragment........................................ 756
29.5 Manter uma thread executando durante a troca de orientao.................. 757
29.6 Como bloquear a troca de orientao.......................................................761
29.7 Dispositivos com teclado......................................................................... 762
29.8 Configurao android:configChanges e o mtodo onConfigurationChanged....762
29.9 Salvando o estado no projeto dos carros.................................................. 765
29.10 Links teis............................................................................................ 765

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


30.1 Unidades de medida...............................................................................766
30.2 Tamanho de tela (screen size).................................................................. 767
30.3 Proporo da tela (aspect ratio)...............................................................768
30.4 Resoluo e densidade da tela................................................................. 769
30.5 O problema de utilizar pixels.................................................................. 769
30.6 DIP ou DP (density-independent pixel)................................................... 771
30.7 Tabela de densidade dos dispositivos.......................................................773

18

Google Android 4a edio

30.8 Customizando as imagens conforme a densidade da tela.......................... 774


30.9 Trabalhando com a unidade dp no Canvas.............................................. 775
30.10 Tamanho da tela em dp.........................................................................777
30.11 Dimenses (dimen)...............................................................................777
30.12 Qualificadores de recursos para tablets.................................................. 780
30.13 Links teis.............................................................................................781

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


31.1 O problema com o ProgressDialog........................................................... 783
31.2 Controlando a troca de orientao ao executar uma task..........................788
31.3 Executando a AsyncTask de forma serial ou paralela................................. 793
31.4 Loader.................................................................................................... 794
31.5 Opinio do autor....................................................................................808
31.6 Links teis..............................................................................................809

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


32.1 Por que utilizar a classe ContentProvider provedor de contedo............. 810
32.2 URI Immutable URI reference............................................................... 811
32.3 Exemplos de provedores de contedo nativos........................................... 812
32.4 Lendo os contatos da agenda...................................................................814
32.5 Como ler todos os telefones e a foto de um contato.................................. 816
32.6 Mostrando os contatos em um ListView...................................................821
32.7 Utilizando um CursorAdapter................................................................. 824
32.8 Utilizando um CursorLoader.................................................................. 827
32.9 Monitorando a fonte de dados com um loader.........................................828
32.10 Criando um provedor de contedo customizado....................................830
32.11 Classe ContentProvider...........................................................................831
32.12 Classe esttica Carros............................................................................838
32.13 Links teis............................................................................................840

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


33.1 Enviando SMS por intent ou pela API...................................................... 841
33.2 Criando um BroadcastReceiver para receber um SMS............................... 845
33.3 Links teis.............................................................................................848

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


34.1 Introduo..............................................................................................849
34.2 Reconhecendo gestos previamente cadastrados........................................849
34.3 Detectando gestos comuns, como scroll lateral......................................... 857
34.4 Detectando gesto de pinch (zoom).......................................................... 861
34.5 Links teis.............................................................................................866

Sumrio

19

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


35.1 Como obter a lista de sensores disponveis............................................... 867
35.2 Testando os sensores............................................................................... 871
35.3 Sensor de luminosidade.......................................................................... 876
35.4 Sensor de temperatura............................................................................ 878
35.5 Sensor de proximidade........................................................................... 878
35.6 Sensor de acelermetro........................................................................... 879
35.7 Movendo uma view pela tela com o acelermetro.....................................886
35.8 Google Fit..............................................................................................889
35.9 Links teis..............................................................................................898

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


36.1 Verificando se o dispositivo suporta Bluetooth.........................................899
36.2 Ativando o Bluetooth por programao...................................................900
36.3 Listando os dispositivos pareados...........................................................902
36.4 Buscar novos dispositivos Bluetooth........................................................902
36.5 Deixando o Bluetooth visvel para ser encontrado....................................906
36.6 Criando um BluetoothDevice pelo endereo............................................907
36.7 Chat em Bluetooth.................................................................................908
36.8 Conectando-se ao Bluetooth pela serial....................................................918
36.9 Links teis..............................................................................................919

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


37.1 Introduo.............................................................................................. 920
37.2 Hello TTS faa seu Android falar...........................................................921
37.3 Verificando o idioma e falando em portugus........................................... 927
37.4 Reconhecimento de voz por intent........................................................... 929
37.5 Reconhecimento de voz por um listener................................................... 932
37.6 Links teis.............................................................................................. 935

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


38.1 Introduo.............................................................................................. 936
38.2 Gerenciando dependncias..................................................................... 937
38.3 Trabalhando com mdulos..................................................................... 938
38.4 Trabalhando com bibliotecas.................................................................. 941
38.5 Criando uma biblioteca.......................................................................... 941
38.6 Configurando um servidor Maven Sonatype Nexus.................................946
38.7 Publicando no Maven Central.................................................................946
38.8 Flavors................................................................................................... 947
38.9 Classe BuildConfig..................................................................................951

20

Google Android 4a edio

38.10 Assinando o aplicativo para o build release............................................ 953


38.11 Links teis............................................................................................ 955

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


39.1 Introduo.............................................................................................. 957
39.2 Hello World Wear................................................................................... 959
39.3 Conectando o smartphone no Android Wear...........................................963
39.4 Conectando o smartphone no relgio fsico.............................................965
39.5 Notificaes no wear...............................................................................966
39.6 Notificaes com vrias pginas.............................................................. 967
39.7 Notificaes empilhadas.........................................................................968
39.8 Notificaes com comandos de voz.......................................................... 970
39.9 Google Play Services e Wearable API........................................................ 972
39.10 Node API.............................................................................................. 973
39.11 Message API.......................................................................................... 974
39.12 Data API............................................................................................... 975
39.13 Enviando mensagens entre o smartphone e o Wear................................. 976
39.14 Enviando uma foto tirada pela cmera para o wear.................................986
39.15 Criando views e layouts para wear..........................................................989
39.16 Criando cards (cartes)..........................................................................990
39.17 Criando listas........................................................................................995
39.18 Criando pginas (ViewPager).................................................................997
39.19 Criando pginas em grid (GridViewPager).............................................999
39.20 Aplicativos em tela cheia (Full-Screen)................................................. 1003
39.21 Animao de confirmao.................................................................... 1005
39.22 Alertas de sucesso e erro..................................................................... 1007
39.23 Interceptando eventos em background................................................. 1008
39.24 Localizao e sensores......................................................................... 1009
39.25 Links teis........................................................................................... 1010

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


40.1 Controle da verso de sua aplicao.........................................................1011
40.2 Compilando o projeto corretamente....................................................... 1012
40.3 Assinando o aplicativo pelo Android Studio/Gradle................................ 1013
40.4 Publicando no Google Play.................................................................... 1013
40.5 Monetizao com anncios.................................................................... 1014
40.6 Links teis............................................................................................ 1016