$30 off During Our Annual Pro Sale. View Details »

Android Training Program - Portugal, Aula 11

ATP Portugal
December 16, 2020

Android Training Program - Portugal, Aula 11

Aula #11 Resumo 📚

Feito! Durante o curso desenvolveste uma aplicação Android com recurso às últimas bibliotecas e frameworks disponíveis. Vamos fazer um resumo de tudo o que aprendeste e mostrar-te como podes publicar a tua aplicação.

ATP Portugal

December 16, 2020
Tweet

More Decks by ATP Portugal

Other Decks in Education

Transcript

  1. Android
    Training
    Program
    PORTUGAL
    Aula #11
    Resumo

    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
    Daniela Ferreira
    Gestora de
    comunidades

    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. Sumário
    Photo by Mika Baumeister on Unsplash
    ● Resumo do programa
    ● Convidados
    ● Notas finais

    View Slide

  7. Photo by Mollie Sivaram on Unsplash

    View Slide

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

    View Slide

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

    View Slide

  10. http://bit.ly/atp2020-live

    View Slide

  11. http://bit.ly/atp2020-codelabs

    View Slide

  12. Resumo do programa

    View Slide

  13. Olá Mundo!

    View Slide

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

    View Slide

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

    View Slide

  16. Git
    9.

    10.

    7. 8.

    5.

    6.

    3.

    4.

    2.

    1.

    0.

    View Slide

  17. View Slide

  18. Android Server side
    Native
    em todo o lado
    Kotlin
    Web
    9.

    10.

    7. 8.

    5.

    6.

    3.

    4.

    2.

    1.

    0.

    View Slide

  19. View Slide


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

    View Slide

  21. 0.

    1.

    9.

    10.

    7. 8.

    5.

    6.

    3.

    4.

    2.

    View Slide

  22. 1.

    2.

    AndroidManifest.xml
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="pt.atp.bobi">
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.Bobi">
    ...


    0.

    9.

    10.

    7. 8.

    5.

    6.

    3.

    4.

    View Slide

  23. Ciclo de vida

    View Slide

  24. Fragment
    1.

    2.

    0.

    9.

    10.

    7. 8.

    5.

    6.

    3.

    4.

    View Slide

  25. Intents
    +351990000001
    1.

    2.

    0.

    9.

    10.

    7. 8.

    5.

    6.

    3.

    4.

    View Slide

  26. Navegação

    View Slide

  27. 2.

    3.

    Layouts
    +351990000001
    1.

    0.

    9.

    10.

    7. 8.

    5.

    6.

    4.

    View Slide

  28. Views
    +351990000001
    2.

    3.

    1.

    0.

    9.

    10.

    7. 8.

    5.

    6.

    4.

    View Slide

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

    View Slide

  30. +351990000001

    View Slide

  31. 3.

    4.

    LiveData
    ViewModel
    Room
    2.

    1.

    0.

    9.

    10.

    7. 8.

    5.

    6.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  36. Dogs’Ogram
    4.

    5.

    3.

    2.

    1.

    0.

    9.

    10.

    7. 8.

    6.

    View Slide

  37. O Retrofit transforma uma API HTTP numa interface

    4.

    5.

    3.

    2.

    1.

    0.

    9.

    10.

    7. 8.

    6.

    View Slide

  38. Glide
    4.

    5.

    3.

    2.

    1.

    0.

    9.

    10.

    7. 8.

    6.

    View Slide

  39. The Dog API
    4.

    5.

    3.

    2.

    1.

    0.

    9.

    10.

    7. 8.

    6.

    View Slide

  40. 5.

    6.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    7. 8.

    View Slide

  41. LiveData
    ViewModel
    Paging 3
    Compose
    Room
    Camera X
    5.

    6.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    7. 8.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  46. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  50. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  51. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  52. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  53. VS
    6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  54. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  55. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  56. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  57. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  58. 6.

    7. 8.

    5.

    4.

    3.

    2.

    1.

    0.

    9.

    10.

    View Slide

  59. 7. 8.

    9.

    6.

    5.

    4.

    3.

    2.

    1.

    0.

    10.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  63. Navegação com uma conta registada

    View Slide

  64. Visão Linguagem natural
    7. 8.

    9.

    6.

    5.

    4.

    3.

    2.

    1.

    0.

    10.

    View Slide

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

    View Slide

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

    View Slide

  67. Exemplo
    Deteção de poses
    7. 8.

    9.

    6.

    5.

    4.

    3.

    2.

    1.

    0.

    10.

    View Slide

  68. 9.

    10.

    7. 8.

    6.

    5.

    4.

    3.

    2.

    1.

    0.

    View Slide

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

    View Slide

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

    View Slide

  71. ● 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/

    View Slide

  72. ● 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/

    View Slide

  73. Transferência de estilo

    View Slide

  74. Convidados

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  80. As nossas secções

    View Slide

  81. Passaporte para
    a Google

    View Slide

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

    View Slide

  83. VS

    View Slide

  84. Doce ou
    travessura
    Photo by Beth Teutschmann on Unsplash

    View Slide

  85. Castanhas quentes e
    boas!
    Photo by sare . on Unsplash

    View Slide

  86. Sexta-Feira
    negra
    Photo by Xiaolong Wong on Unsplash

    View Slide

  87. Natal
    Photo by Mel Poole Unsplash

    View Slide

  88. View Slide

  89. pogChamp
    elpidios
    NunoP2
    Parabéns!

    View Slide

  90. ‍♀

    View Slide

  91. Os nossos parceiros

    View Slide

  92. Os nossos parceiros
    Obrigado! ‍♀

    View Slide

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

    View Slide

  94. 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! ‍♀

    View Slide

  95. Fifi

    View Slide

  96. Fifi
    Obrigado! ‍♀

    View Slide

  97. Obrigado
    ‍♀

    View Slide

  98. Android
    Training
    Program
    PORTUGAL
    Boas férias!

    View Slide