Slide 1

Slide 1 text

Android Training Program PORTUGAL Aula #1 Bem-vindos ao Android

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

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

● Resumo da aula anterior ● Plataforma Android ● Passaporte para o Google ● Uma pausa com Android 4.4 ● Criar uma aplicação ● Kotlin para principiantes ● Doce ou travessura Sumário Photo by Mika Baumeister on Unsplash

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Resumo da Aula #0

Slide 11

Slide 11 text

● Apresentação do programa ● A evolução do Android ● Introdução do Git e GitHub ● Introdução ao Kotlin ● Cria a tua aplicação Aula #0

Slide 12

Slide 12 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

Slide 13

Slide 13 text

Apple Pie Ice Cream Sandwich KitKat Lollipop Oreo Pie Android 1.0 Android 4.0 Android 4.4 Android 5.0 Android 8.0 Android 9.0 evoluções da UI Android *adaptado a partir do tweet Luke Wroblewski, https://twitter.com/lukew/status/996461585693540352

Slide 14

Slide 14 text

Photo by Lucas Miguel on Unsplash

Slide 15

Slide 15 text

Photo by Brandon Hoogenboom on Unsplash

Slide 16

Slide 16 text

● Desenvolvimento nativo ○ Java/ Kotlin ❤ ○ Bibliotecas nativas escritas em C/C++ ● Híbrido ○ PhoneGap, Ionic, etc. ● Cross platform ○ Flutter, React Native, Xamarin, NativeScript, Ionic, Ruby Motion, etc. ● Multiplatforma ○ Kotlin (toda a lógica é partilhada por diferentes plataformas, e a UI desenvolvida nativamente) Android

Slide 17

Slide 17 text

null safety Kotlin

Slide 18

Slide 18 text

https://github.com/android-training-program

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Discord

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Plataforma Android

Slide 23

Slide 23 text

Arquitetura

Slide 24

Slide 24 text

Arquitetura

Slide 25

Slide 25 text

Arquitetura vai sair no teste!

Slide 26

Slide 26 text

Imagina que queres tirar uma foto com o teu telemóvel.

Slide 27

Slide 27 text

Photo by Fidel Fernando on Unsplash

Slide 28

Slide 28 text

Camera Mensagens Telefone ... (aplicações de sistema)

Slide 29

Slide 29 text

Photo by Moritz Mentges on Unsplash

Slide 30

Slide 30 text

Camera2 SMSManager InCallService ... (API’s) Camera Mensagens Telefone ... (aplicações de sistema)

Slide 31

Slide 31 text

Activity Resources Notification Telephony Camera2 SMSManager InCallService ... (API’s) Camera Mensagens Telefone ... (aplicações de sistema)

Slide 32

Slide 32 text

Activity Resources Notification Telephony Camera2 SMSManager InCallService ... (API’s)

Slide 33

Slide 33 text

Activity Resources Notification Telephony Camera2 SMSManager InCallService ... (API’s) OpenGL ES ... Bibliotecas nativas

Slide 34

Slide 34 text

Activity Resources Notification Telephony Camera2 SMSManager InCallService ... (API’s) OpenGL ES ... Bibliotecas nativas ART ... Runtime

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Passaporte para o Google

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

Bolsas https://buildyourfuture.withgoogle.com/ ● Google Europe Students with Disabilities Scholarship Termina em: 04 de Dezembro Valor: 7000€ ● Generation Google Scholarship Termina em: 04 de Dezembro Valor: 7000€ ● Google Conference and Travel Scholarships Termina em: 01 de Agosto de 2021

Slide 40

Slide 40 text

Programas https://buildyourfuture.withgoogle.com/ Google Summer of Code Google Code-in Google Hash Code Google CTF

Slide 41

Slide 41 text

https://buildyourfuture.withgoogle.com/

Slide 42

Slide 42 text

Uma pausa com Não saiam dos vossos lugares Android 4.4

Slide 43

Slide 43 text

Criar uma aplicação

Slide 44

Slide 44 text

O que vais precisar android studio

Slide 45

Slide 45 text

https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

Slide 46

Slide 46 text

https://github.com/join?source=login

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

No content

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

No content

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

No content

Slide 56

Slide 56 text

https://www.toptal.com/developers/gitignore

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

No content

Slide 59

Slide 59 text

No content

Slide 60

Slide 60 text

No content

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

Kotlin para principiantes ‍♀

Slide 65

Slide 65 text

A linguagem que vamos utilizar durante todo o curso vai ser Kotlin. - ATP 2020

Slide 66

Slide 66 text

Notas ● O curso vai ser leccionado utilizando Kotlin ● Kotlin é a linguagem oficial de programação para Android desde 2019 ○ Todas as aplicações/bibliotecas desenvolvidas nativamente são em Kotlin ● A versão de Java que temos atualmente no Android é a 8 ○ A última versão que foi lançada é a 15 ● Não há qualquer problema na utilização de Java ○ ambas as linguagens são interoperáveis (comunicam entre si) ○ mas uma vez que Kotlin é a linguagem oficial, é esta que vamos utilizar durante o curso

Slide 67

Slide 67 text

Kotlin ● Consegues fazer o mesmo, escrevendo menos código ● Mais erros apanhados antes de compilares o teu código ○ O próprio Android Studio (IDE) avisa-te de possíveis problemas que o teu código possa dar ● Inúmeras funcionalidades disponíveis na linguagem ● Várias ferramentas que te permitem lidar melhor com concorrência ● Integração com bibliotecas desenvolvidas em Kotlin mais fácil e directa ○ Paging3, Room, Compose, etc.

Slide 68

Slide 68 text

VS

Slide 69

Slide 69 text

VS Ronda 1

Slide 70

Slide 70 text

for (int i = 0; i <= 100; i++) { System.out.println(i); } for (i in 0..100) { println(i) } Ciclos for 0 1 2 3 4 5 ... 100

Slide 71

Slide 71 text

for (Object item : list) { // Do something with this item } for(item in list) { // Do something with this item } Ciclos for

Slide 72

Slide 72 text

list.forEach { item -> // Do something with this item } for (Object item : list) { // Do something with this item } Ciclos for

Slide 73

Slide 73 text

for (i in list.indices) { val item = list[i] // Do something with item } for (int i = 0; i < list.size(); i++) { Object item = list.get(i); // Do something with item } Ciclos for

Slide 74

Slide 74 text

class Dog(val name: String) public class Dog { private final String name; public Dog(String name) { this.name = name; } public String getName() { return name; } ... } Propriedades

Slide 75

Slide 75 text

Dog dog = new Dog("Bobi"); Log.d("O meu cão é o " + dog.getName()); public class Dog { private final String name; public Dog(String name) { this.name = name; } public String getName() { return name; } ... } Propriedades

Slide 76

Slide 76 text

val dog = Dog("Bobi") Log.d("O meu cão é o " + dog.name) Propriedades class Dog(val name: String)

Slide 77

Slide 77 text

val dog = Dog("Bobi") Log.d("O meu cão é o ${dog.name}") Propriedades class Dog(val name: String)

Slide 78

Slide 78 text

class Dog implements Animal {} class Dog : Animal {} Interfaces

Slide 79

Slide 79 text

class Dog extends Animal() {} class Dog : Animal() {} Herança

Slide 80

Slide 80 text

public String getName() { return "Olá Java"; } fun getName(): String { return "Olá Kotlin" } Métodos

Slide 81

Slide 81 text

public String getName() { return "Olá Java"; } fun getName(): String = "Olá Kotlin" Métodos

Slide 82

Slide 82 text

public String getName() { return "Olá Java"; } fun getName() = "Olá Kotlin" Métodos

Slide 83

Slide 83 text

descobre as diferenças...

Slide 84

Slide 84 text

Dog bobi = new Dog("Bobi"); Dog lacy = new Dog("Lacy"); Log.d("O meu cão é o "+ bobi.getName()); List dogs = new ArrayList(); dogs.add(bobi); dogs.add(lacy); val bobi = Dog("Bobi") val lacy = Dog("Lacy") Log.d("O meu cão é o " + bobi.name) val dogs = ArrayList() dogs.add(bobi) dogs.add(lacy)

Slide 85

Slide 85 text

Converter de Java para Kotlin ♻

Slide 86

Slide 86 text

No content

Slide 87

Slide 87 text

Double Bang ‼

Slide 88

Slide 88 text

class Kennel { var dog: Dog? = something() fun test() { dog.move() } } !!

Slide 89

Slide 89 text

class Kennel { var dog: Dog? = something() fun test() { dog!!.move() } } !!

Slide 90

Slide 90 text

class Kennel { var dog: Dog? = something() fun test() { dog!!.move() } } !!

Slide 91

Slide 91 text

class Kennel { var dog: Dog? = something() fun test() { dog?.move() } } !!

Slide 92

Slide 92 text

class Kennel { var dog: Dog? = something() fun test() { dog?.move() } } !!

Slide 93

Slide 93 text

Scratch file

Slide 94

Slide 94 text

Rascunho

Slide 95

Slide 95 text

No content

Slide 96

Slide 96 text

TODO()

Slide 97

Slide 97 text

when(legs) { } TODO() 0 -> println("É melhor usar um ") in 1..3 -> println("Mete ") 4 -> println("✅") else -> ...

Slide 98

Slide 98 text

when(legs) { 0 -> println("É melhor usar um ") in 1..3 -> println("Mete ") 4 -> println("✅") else -> ... } TODO()

Slide 99

Slide 99 text

when(legs) { 0 -> println("É melhor usar um ") in 1..3 -> println("Mete ") 4 -> println("✅") else -> TODO() } TODO()

Slide 100

Slide 100 text

when(legs) { 0 -> println("É melhor usar um ") in 1..3 -> println("Mete ") 4 -> println("✅") else -> TODO("Implementar isto") } TODO() ⚠ kotlin.NotImplementedError: Implementar isto ⚠

Slide 101

Slide 101 text

No content

Slide 102

Slide 102 text

Doce ou travessura

Slide 103

Slide 103 text

No content

Slide 104

Slide 104 text

No content

Slide 105

Slide 105 text

adb tcpip 5555 Debug via Wi-Fi 1. Liga o telemóvel ao computador 2. Introduz no terminal o comando: 3. Desliga o telemóvel do computador 4. Vai a: Definições > Sobre o telemóvel > Endereço IP 5. Com esse endereço executa o seguinte comando: adb connect 6. Feito.

Slide 106

Slide 106 text

TPC ‍‍

Slide 107

Slide 107 text

Trabalho Para Casa ‍‍

Slide 108

Slide 108 text

Trabalho para casa ● Criar um novo projecto ● Adicioná-lo ao Github ● Línguas: e ● Alterar as cores ● Adicionar um novo icon ● Explorar os diferentes componentes

Slide 109

Slide 109 text

Trabalho para casa ● Criar um novo projecto ● Adicioná-lo ao Github ● Línguas: e ● Alterar as cores ● Adicionar um novo icon ● Explorar os diferentes componentes

Slide 110

Slide 110 text

Trabalho para casa

Slide 111

Slide 111 text

Dúvidas?

Slide 112

Slide 112 text

Obrigado ‍♀

Slide 113

Slide 113 text

Android Training Program PORTUGAL Aula #2 Fundações I Próxima aula: 28 de Outubro