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

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

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

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

    View Slide

  8. View Slide

  9. View Slide

  10. Resumo da Aula #0

    View Slide

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

  12. *í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 Slide

  13. 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 Slide

  14. Photo by Lucas Miguel on Unsplash

    View Slide

  15. Photo by Brandon Hoogenboom on Unsplash

    View Slide

  16. ● 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 Slide

  17. null safety
    Kotlin

    View Slide

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

    View Slide

  19. View Slide

  20. Discord

    View Slide

  21. View Slide

  22. Plataforma Android

    View Slide

  23. Arquitetura

    View Slide

  24. Arquitetura

    View Slide

  25. Arquitetura
    vai sair no teste!

    View Slide


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

    View Slide

  27. Photo by Fidel Fernando on Unsplash

    View Slide


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

    View Slide

  29. Photo by Moritz Mentges on Unsplash

    View Slide

  30. Camera2

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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide


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

    View Slide

  37. Passaporte para o
    Google

    View Slide

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

    View Slide

  39. 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 Slide

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

    View Slide

  41. https://buildyourfuture.withgoogle.com/

    View Slide

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

    View Slide

  43. Criar uma aplicação

    View Slide

  44. O que vais precisar
    android
    studio

    View Slide

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

    View Slide

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

    View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide

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

    View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. View Slide

  62. View Slide

  63. View Slide

  64. Kotlin para
    principiantes
    ‍♀

    View Slide


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

    View Slide

  66. 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 Slide

  67. 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 Slide

  68. VS

    View Slide

  69. VS
    Ronda 1

    View Slide

  70. 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 Slide

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

    View Slide

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

    View Slide

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

  74. 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 Slide

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

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide


  83. descobre as diferenças...

    View Slide

  84. 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 Slide

  85. Converter de Java para
    Kotlin

    View Slide

  86. View Slide

  87. Double Bang

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  93. Scratch file

    View Slide

  94. Rascunho

    View Slide

  95. View Slide

  96. TODO()

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  101. View Slide

  102. Doce ou travessura

    View Slide

  103. View Slide

  104. View Slide

  105. 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 Slide

  106. TPC
    ‍‍

    View Slide

  107. Trabalho Para Casa
    ‍‍

    View Slide

  108. 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 Slide

  109. 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 Slide

  110. Trabalho para casa

    View Slide

  111. Dúvidas?

    View Slide

  112. Obrigado
    ‍♀

    View Slide

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

    View Slide