Slide 1

Slide 1 text

Android Training Program PORTUGAL Aula #11 Resumo

Slide 2

Slide 2 text

● Sejam excelentes uns para os outros ● Fale mais alto se vir ou ouvir alguma coisa ● O assédio não é tolerado ● Pratique "Sim e" um ao outro Código de conduta Mais informações: http://bit.ly/2IhF0l3

Slide 3

Slide 3 text

Andres-Leonardo Martinez-Ortiz Google Carlos Mota Formador Renato Almeida Formador @davilagrau @cafonsomota @tallnato Equipa Daniela Ferreira Gestora de comunidades

Slide 4

Slide 4 text

● 12 aulas ● 1h30 cada aula ● ~1 aula por semana ● 14 Outubro a 16 Dezembro ● YouTube live ● Suporte assíncrono contínuo via Discord/email ● Todo o código disponível no GitHub Photo by Arif Riyanto on Unspla O programa

Slide 5

Slide 5 text

#0 14 de Outubro Pronto para começar #1 21 de Outubro Bem-vindos ao Android #2 28 de Outubro Fundações I #3 04 de Novembro Fundações II #4 11 de Novembro Fundações III #5 18 de Novembro Listas, listas e mais listas #6 25 de Novembro Jetpack, Jetpack, Jetpack! #7 - #8 02 - 03 de Dezembro Firebase #9 - #10 09 - 10 de Dezembro MLKit & TensorFlow #11 16 de Dezembro Resumo Semana Semana Calendário ✅ ✅ ✅ ✅ Direto ✅ ✅ ✅ ✅ ✅

Slide 6

Slide 6 text

Sumário Photo by Mika Baumeister on Unsplash ● Resumo do programa ● Convidados ● Notas finais

Slide 7

Slide 7 text

Photo by Mollie Sivaram on Unsplash

Slide 8

Slide 8 text

Photo by Mollie Sivaram on Unsplash ‍ ~5000 participantes ~2900 subscrições no YouTube ~25000 visualizações Obrigado! ‍♀

Slide 9

Slide 9 text

http://events.withgoogle.com/atp2020 ✉ [email protected] http://bit.ly/atp2020-youtube http://bit.ly/atp2020-discord Links

Slide 10

Slide 10 text

http://bit.ly/atp2020-live

Slide 11

Slide 11 text

http://bit.ly/atp2020-codelabs

Slide 12

Slide 12 text

Resumo do programa

Slide 13

Slide 13 text

Olá Mundo!

Slide 14

Slide 14 text

versões Android 11 Android 10 Apple Pie 1.0 Cupcake 1.5 Donut 1.6 Eclair 2.0/2.1 Froyo 2.2 Gingerbread 2.3.x Honeycomb 3.x Ice Cream Sandwich 4.0 Jelly Bean 4.1-4.3 KitKat 4.4 Lollipop 5.0 Marshmallow 6.0 Nougat 7.0 Oreo 8.0 Pie 9.0 Android 9. 10. 7. 8. 5. 6. 3. 4. 2. 1. 0.

Slide 15

Slide 15 text

*ícones de flaticon.com Rabanadas 11 Queijadinha 10 Arroz Doce 1.0 Cornucópia 1.5 Filhoses 2.2 Gargantas de Freira 2.3.x 3.x 4.0 Jesuítas 4.1-4.3 Molotoff 6.0 Nata 7.0 Ovos Moles 8.0 Pudim de Abade de Priscos 9.0 Leite Creme 5.0 Doce da Casa 1.6 Escarpiada 2.0/2.1 4.4 versões Portuguesas Android 9. 10. 7. 8. 5. 6. 3. 4. 2. 1. 0.

Slide 16

Slide 16 text

Git 9. 10. 7. 8. 5. 6. 3. 4. 2. 1. 0.

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

Android Server side Native em todo o lado Kotlin Web 9. 10. 7. 8. 5. 6. 3. 4. 2. 1. 0.

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Activity Resources Notification Telephony Camera2 SMSManager InCallService ... (API’s) OpenGL ES ... Bibliotecas nativas ART ... Runtime ICameraDevice ... HAL Camera Drivers ... Linux Kernel

Slide 21

Slide 21 text

0. 1. 9. 10. 7. 8. 5. 6. 3. 4. 2.

Slide 22

Slide 22 text

1. 2. AndroidManifest.xml ... 0. 9. 10. 7. 8. 5. 6. 3. 4.

Slide 23

Slide 23 text

Ciclo de vida

Slide 24

Slide 24 text

Fragment 1. 2. 0. 9. 10. 7. 8. 5. 6. 3. 4.

Slide 25

Slide 25 text

Intents +351990000001 1. 2. 0. 9. 10. 7. 8. 5. 6. 3. 4.

Slide 26

Slide 26 text

Navegação

Slide 27

Slide 27 text

2. 3. Layouts +351990000001 1. 0. 9. 10. 7. 8. 5. 6. 4.

Slide 28

Slide 28 text

Views +351990000001 2. 3. 1. 0. 9. 10. 7. 8. 5. 6. 4.

Slide 29

Slide 29 text

Resolução medium resolution (mdpi) HTC Wildfire S high resolution (hdpi) Samsung Galaxy S2 extra extra extra high resolution (xxxhdpi) Pixel 5 2. 3. 1. 0. 9. 10. 7. 8. 5. 6. 4.

Slide 30

Slide 30 text

+351990000001

Slide 31

Slide 31 text

3. 4. LiveData ViewModel Room 2. 1. 0. 9. 10. 7. 8. 5. 6.

Slide 32

Slide 32 text

● Service ● Threads ● IntentService ● AsyncTasks ● WorkManager ● JobScheduler ● DownloadManager ● AlarmManager ● Coroutines Operações assíncronas Soluções 3. 4. 2. 1. 0. 9. 10. 7. 8. 5. 6.

Slide 33

Slide 33 text

atualizar atualizar desenha o ecrã desenha o ecrã desenha o ecrã objetivo: 60fps operação pesada atualizar atualizar thread secundária Operações assíncronas thread de UI 3. 4. 2. 1. 0. 9. 10. 7. 8. 5. 6.

Slide 34

Slide 34 text

Allow Snapchat to access this device’s location? Ao instalar todas as permissões requisitadas são dadas Funcionalidades do sistemas precisam de autorização explícita do utilizador As permissões vão sendo cada vez mais restritivas: - Apenas enquanto estamos a utilizar a aplicação - Permitir apenas uma única vez Android ... Android 6.0 … Android 10 Android 11

Slide 35

Slide 35 text

4. 5. RecyclerView Activity RecyclerView LayoutManager Adapter ViewHolder data RecyclerView LayoutManager Adapter ViewHolder data Adapter ViewHolder data 3. 2. 1. 0. 9. 10. 7. 8. 6.

Slide 36

Slide 36 text

Dogs’Ogram 4. 5. 3. 2. 1. 0. 9. 10. 7. 8. 6.

Slide 37

Slide 37 text

O Retrofit transforma uma API HTTP numa interface 4. 5. 3. 2. 1. 0. 9. 10. 7. 8. 6.

Slide 38

Slide 38 text

Glide 4. 5. 3. 2. 1. 0. 9. 10. 7. 8. 6.

Slide 39

Slide 39 text

The Dog API 4. 5. 3. 2. 1. 0. 9. 10. 7. 8. 6.

Slide 40

Slide 40 text

5. 6. 4. 3. 2. 1. 0. 9. 10. 7. 8.

Slide 41

Slide 41 text

LiveData ViewModel Paging 3 Compose Room Camera X 5. 6. 4. 3. 2. 1. 0. 9. 10. 7. 8.

Slide 42

Slide 42 text

Room Room Resto da aplicação Data Access Object Entidades Obter os DAOs Obter as entidades da BD Persistir os dados para a BD get / set valores 5. 6. 4. 3. 2. 1. 0. 9. 10. 7. 8.

Slide 43

Slide 43 text

CameraXβ Sistema de add-ons Consistência em todos os diapositivos Funciona com 94% dos Android 5.0+ 5. 6. 4. 3. 2. 1. 0. 9. 10. 7. 8.

Slide 44

Slide 44 text

CameraXβ Captura Análise de imagem Pré-visualização Casos de uso https://developer.android.com/training/camerax 5. 6. 4. 3. 2. 1. 0. 9. 10. 7. 8.

Slide 45

Slide 45 text

@Composable fun Example() { Row { Image( asset = vectorResource(id = R.drawable.ic_paw), modifier = Modifier.width(32.dp).height(32.dp) ) Column { Text( text = "Olá mundo! ", style = TextStyle( fontSize = 19.sp, fontWeight = FontWeight.Normal, color = colorResource(id = R.color.white) ), modifier = Modifier.padding(start = 16.dp) ) Text( text = "Bem-vindos ao ATP!", style = TextStyle( fontSize = 19.sp, fontWeight = FontWeight.Normal, color = colorRsource(id = R.color.grey) ), modifier = Modifier.padding(start = 16.dp) ) } } } Como utilizar? Example.kt Compose

Slide 46

Slide 46 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 47

Slide 47 text

Constrói melhores aplicações Cloud Firestore Armazena e sincroniza dados a uma escala global Firebase ML Machine learning para programadores Cloud Functions Corre código de servidor sem gerir servidores Authentication Autentica utilizadores de forma simples e segura Hosting Distribui recursos web rapidamente e com segurança Cloud Storage Armazena e distribui ficheiros à escala da Google Realtime Database Armazena e sincroniza dados da aplicação em segundos 6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 48

Slide 48 text

Melhora a qualidade da aplicação Crashlytics Prioritiza e resolve problemas com relatórios poderosos e em tempo real Performance Monitoring Obtém informações sobre o desempenho da aplicação Test Lab Testa a tua aplicação em dispositivos alojados pela Google App Distribution Distribuí versões de pré-lançamento da aplicação a utilizadores específicos 6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 49

Slide 49 text

Cresce o teu negócio In-App Messaging Envolve os utilizadores activos com mensagens contextuais Google Analytics Obtém métricas gratuitas e ilimitadas Predictions Segmentação inteligente de utilizadores baseada no comportamento previsto A/B Testing Optimiza a experiência da aplicação através de experimentação Cloud Messaging Envia mensagens e notificações direcionadas Remote Config Modifica a tua aplicação sem lançar uma nova versão Dynamic Links Impulsiona o crescimento utilizado links directos 6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 50

Slide 50 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 51

Slide 51 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 52

Slide 52 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 53

Slide 53 text

VS 6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 54

Slide 54 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 55

Slide 55 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 56

Slide 56 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 57

Slide 57 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 58

Slide 58 text

6. 7. 8. 5. 4. 3. 2. 1. 0. 9. 10.

Slide 59

Slide 59 text

7. 8. 9. 6. 5. 4. 3. 2. 1. 0. 10.

Slide 60

Slide 60 text

● Pode ser visto como uma forma de ajudar o software a realizar uma tarefa sem programar explicitamente ou criar regras ● Na programação tradicional, um programador especifica as regras que o computador deve usar ● Focado mais em análise de dados do que em programação ● São disponibilizados um conjunto de exemplos e o computador aprende a partir destes dados ● Podemos ver o machine learning como “programar com dados” Machine learning

Slide 61

Slide 61 text

● Extrapolar dados ● Evitar fraudes ● Identificar oportunidades de investimento ● Auxiliar os investidores a decidir quando negociar ● Identificar clientes com perfis de alto risco Banca e finanças Onde é aplicado? Photo by Micheile Henderson https://www.sas.com/en_us/insights/analytics/machine-learning.html

Slide 62

Slide 62 text

● Através da análise dos dados de wearables e outros tipos de sensores, permite avaliar o paciente em tempo real ● Identificar tendências ou sinais de alerta de forma a melhorar os diagnósticos e tratamentos ● Serve de complemento para os diagnósticos médicos Saúde Onde é aplicado? Photo by Online Marketing

Slide 63

Slide 63 text

Navegação com uma conta registada

Slide 64

Slide 64 text

Visão Linguagem natural 7. 8. 9. 6. 5. 4. 3. 2. 1. 0. 10.

Slide 65

Slide 65 text

Exemplo ● Nariz ○ (505.149811, 221.201797), (506.987122, 313.285919) ● Olho esquerdo ○ (404.642029, 232.854431), (408.527283, 231.366623), (413.565796, 229.427856), (421.378296, 226.967682), (432.598755, 225.434143), (442.953064, 226.089508), (453.899811, 228.594818), (461.516418, 232.650467), (465.069580, 235.600845), (462.170410, 236.316147), (456.233643, 236.891602), (446.363922, 237.966888), (435.698914, 238.149323), (424.320740, 237.235168), (416.037720, 236.012115), (409.983459, 234.870300) ● Parte de cima do lábio ○ (421.662048, 354.520813), (428.103882, 349.694061), (440.847595, 348.048737), (456.549988, 346.295532), (480.526489, 346.089294), (503.375702, 349.470459), (525.624634, 347.352783), (547.371155, 349.091980), (560.082031, 351.693268), (570.226685, 354.210175), (575.305420, 359.257751) Contorno da cara 7. 8. 9. 6. 5. 4. 3. 2. 1. 0. 10.

Slide 66

Slide 66 text

Exemplo Classificação de imagens Texto Confiança Estádio 0.9205354 Desporto 0.7531109 Evento 0.66905296 Lazer 0.59904146 Futebol 0.56384534 Rede 0.54679185 Planta 0.524364 7. 8. 9. 6. 5. 4. 3. 2. 1. 0. 10.

Slide 67

Slide 67 text

Exemplo Deteção de poses 7. 8. 9. 6. 5. 4. 3. 2. 1. 0. 10.

Slide 68

Slide 68 text

9. 10. 7. 8. 6. 5. 4. 3. 2. 1. 0.

Slide 69

Slide 69 text

Resumo Como funciona? Treinado Modelo de TensorFlow Convertido (para o formato do TensorFlow lite) Android App (Java/C++ API) iOS App (C++ API) Linux (ex. Pi) (Python/Java/C++ API)

Slide 70

Slide 70 text

https://firebase.google.com/products/ml

Slide 71

Slide 71 text

● Utilizando um modelo pré-treinado, permite desenhar um retângulo com a respectiva descrição de mais de 1000 objetos Deteção de objectos https://github.com/tensorflow/examples/blob/master/lite/examples/object_detection/android/

Slide 72

Slide 72 text

● Este exemplo deteta continuamente as partes do corpo que estão visíveis pela câmera do dispositivo Deteção de pose https://github.com/tensorflow/examples/blob/master/lite/examples/posenet/android/

Slide 73

Slide 73 text

Transferência de estilo

Slide 74

Slide 74 text

Convidados

Slide 75

Slide 75 text

Neto Marin Qualidade e futuro das aplicações Android Developer Advocate @Google @netomarim

Slide 76

Slide 76 text

Nuno Loureiro Pixels Camp forever Head Of Design & Innovation at Trojan Horse was a Unicorn @nloureiro

Slide 77

Slide 77 text

Inês Santos Silva Construir Equipas Diversas e Inclusivas CEO @Aliados @isss111

Slide 78

Slide 78 text

Isabel Costa Como e porquê começar a contribuir para OSS? Software Engineer @Globality @isabelcmdcosta

Slide 79

Slide 79 text

José Rocha Porque é que precisamos de mais programadores? Senior Acceleration Expert @beta-i @vvdboy

Slide 80

Slide 80 text

As nossas secções

Slide 81

Slide 81 text

Passaporte para a Google

Slide 82

Slide 82 text

Constrói o teu futuro! https://buildyourfuture.withgoogle.com/ Bolsas Estágios Programas Recursos

Slide 83

Slide 83 text

VS

Slide 84

Slide 84 text

Doce ou travessura Photo by Beth Teutschmann on Unsplash

Slide 85

Slide 85 text

Castanhas quentes e boas! Photo by sare . on Unsplash

Slide 86

Slide 86 text

Sexta-Feira negra Photo by Xiaolong Wong on Unsplash

Slide 87

Slide 87 text

Natal Photo by Mel Poole Unsplash

Slide 88

Slide 88 text

No content

Slide 89

Slide 89 text

pogChamp elpidios NunoP2 Parabéns!

Slide 90

Slide 90 text

‍♀

Slide 91

Slide 91 text

Os nossos parceiros

Slide 92

Slide 92 text

Os nossos parceiros Obrigado! ‍♀

Slide 93

Slide 93 text

Aula #0 Edições passadas do ATP Aula #1 Comunidades Aula #2 Programas e emprego na Google Aula #3 Inclusão Aula #4 Percurso até à Google Aula #5 Google Summer of Code Aula #6 UX em mobile Aula #7 Firebase KTX Aula #8 Firebase Storage Aula #9 Machine learning Aula #10 Federated learning Aula #11

Slide 94

Slide 94 text

Aula #0 Edições passadas do ATP Aula #1 Comunidades Aula #2 Programas e emprego na Google Aula #3 Inclusão Aula #4 Percurso até à Google Aula #5 Google Summer of Code Aula #6 UX em mobile Aula #7 Firebase KTX Aula #8 Firebase Storage Aula #9 Machine learning Aula #10 Federated learning Aula #11 ‍ ‍ Aula #11 Obrigado! ‍♀

Slide 95

Slide 95 text

Fifi

Slide 96

Slide 96 text

Fifi Obrigado! ‍♀

Slide 97

Slide 97 text

Obrigado ‍♀

Slide 98

Slide 98 text

Android Training Program PORTUGAL Boas férias!