Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Training Program - Portugal, Aula 1

ATP Portugal
October 21, 2020

Android Training Program - Portugal, Aula 1

Aula #1: Bem-vindos ao Android 👋

Vamos a isto!

Durante as próximas semanas vais desenvolver uma aplicação Android utilizando as diferentes funcionalidades que a plataforma te fornece e irás ainda integrar com Firebase e TensorFlow:
- Introdução ao Android
- Diferentes API’s
- Criar uma aplicação
- Estrutura do projeto

ATP Portugal

October 21, 2020
Tweet

More Decks by ATP Portugal

Other Decks in Education

Transcript

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

    View full-size slide

  2. ● 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

    View full-size slide

  3. Andres-Leonardo
    Martinez-Ortiz
    Google
    Carlos Mota
    Formador
    Renato Almeida
    Formador
    @davilagrau @cafonsomota @tallnato
    Equipa

    View full-size slide

  4. ● 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

    View full-size slide

  5. #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

    View full-size slide

  6. ● 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

    View full-size slide

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

    View full-size slide

  8. Resumo da Aula #0

    View full-size slide

  9. ● 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

    View full-size slide

  10. *í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

    View full-size slide

  11. 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

    View full-size slide

  12. Photo by Lucas Miguel on Unsplash

    View full-size slide

  13. Photo by Brandon Hoogenboom on Unsplash

    View full-size slide

  14. ● 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

    View full-size slide

  15. null safety
    Kotlin

    View full-size slide

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

    View full-size slide

  17. Plataforma Android

    View full-size slide

  18. Arquitetura
    vai sair no teste!

    View full-size slide


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

    View full-size slide

  20. Photo by Fidel Fernando on Unsplash

    View full-size slide


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

    View full-size slide

  22. Photo by Moritz Mentges on Unsplash

    View full-size slide

  23. Camera2

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

    View full-size slide


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

    View full-size slide


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

    View full-size slide


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

    View full-size slide


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

    View full-size slide


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

    View full-size slide


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

    View full-size slide

  30. Passaporte para o
    Google

    View full-size slide

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

    View full-size slide

  32. 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

    View full-size slide

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

    View full-size slide

  34. https://buildyourfuture.withgoogle.com/

    View full-size slide

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

    View full-size slide

  36. Criar uma aplicação

    View full-size slide

  37. O que vais precisar
    android
    studio

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  41. Kotlin para
    principiantes
    ‍♀

    View full-size slide


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

    View full-size slide

  43. 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

    View full-size slide

  44. 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.

    View full-size slide

  45. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  48. 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

    View full-size slide

  49. 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

    View full-size slide

  50. 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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide


  58. descobre as diferenças...

    View full-size slide

  59. 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)

    View full-size slide

  60. Converter de Java para
    Kotlin

    View full-size slide

  61. Double Bang

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  67. Scratch file

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  72. Doce ou travessura

    View full-size slide

  73. 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.

    View full-size slide

  74. Trabalho Para Casa
    ‍‍

    View full-size slide

  75. 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

    View full-size slide

  76. 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

    View full-size slide

  77. Trabalho para casa

    View full-size slide

  78. Obrigado
    ‍♀

    View full-size slide

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

    View full-size slide