Introdução ao android - siecomp 2015.1

774 visualizações

Publicada em

Minicurso ministrado na SIECOMP

Publicada em: Engenharia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
774
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
61
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Introdução ao android - siecomp 2015.1

  1. 1. Introdução ao Android Afonso da Silva Machado 3 de Março de 2015
  2. 2. Eu Afonso da Silva Machado 7º Semestre de Engenharia de Computação Universidade Estadual de Feira de Santana Membro da Empresa Junior de Engenharia de Computação
  3. 3. Você Quem tem um aparelho Android? Quem sabe programar em Java? Quem já programou pra alguma plataforma móvel? Quem já “programou” pelo menos um Hello World pra Android?
  4. 4. Conteúdo •Histórico e Características •Eclipse x Android Studio • Android SDK • AVD •Arquitetura •Debug •Organização da IDE •Conceitos específicos •Mão na massa
  5. 5. Metodologia •Dividindo em três partes 1. Manuseando a IDE 2. Aprendendo conceitos fundamentais 3. Aplicando seus conceitos a) Um pequeno app para cada conceito b) Apps completos para exercitar
  6. 6. Você Código Aberto Desenvolvido inicialmente pela Android Inc. Comprado pela Google em 2005 e Lançado em 2008 Baseado no Kernel do Linux Rodava com uma máquina virtual Java própria: Dalvik VM, a partir da versão 5.0 roda com uma nova máquina virtual ART (Android Run Time).
  7. 7. Um sistema operacional para Tablets
  8. 8. E smartphones?
  9. 9. #sqn
  10. 10. Android Wear e Android TV
  11. 11. Diferentes Smartphones
  12. 12. E em breve: Android Auto
  13. 13. Anunciado para Grandes Marcas http://www.android.com/
  14. 14. Várias versões
  15. 15. Android 5.0: Lollipop
  16. 16. Várias versões 1.0: 2008, O lançamento, HTC Dream; 2.0: Google, Eclair e Froyo, Nexus One; 2.3: Gingerbred, o sucesso; 3.0: Versão para Tablets, Honeycomb; 4.0: A ascenção, Ice Cream Sandwich, Jelly Bean e Kit Kat; 5.0: A ouzadia, Lollipop.
  17. 17. Versões http://developer.android.com/about/dashboards/index.html
  18. 18. Google play store, filmes, músicas...
  19. 19. Android Studio (ou Eclipse?) http://developer.android.com/sdk/index.html
  20. 20. Vamos ao que Interessa ;)
  21. 21. Mas e o Eclipse?
  22. 22. Java + Um bando de coisa Chato? Quantos gostam de java? Quantos gostam de eclipse?
  23. 23. A idéia era: Android gambiarreitor tabajara Seu kit de ferramentas e plugins Android que você instala no seu Eclipse, e pronto, já pode programar seus apps nativos 
  24. 24. ADT: Android Developer Tools O ADT foi a primeira IDE para desenvolvimento em Android Todo o processo de build é baseado na ferramenta Apache Ant Construído na infraestrutura do Eclipse
  25. 25. Era legal... Mas... •Interface muito misturada •Meio eclipse seco, meio Android •Relativamente pesado •Emulador quase impossível de ser executado
  26. 26. Até que... 16 de maio de 2013 Google I/O Android KitKat Google Nexus 5 IDE exclusiva para Android
  27. 27. Android Studio No mesmo mês (Maio de 2014) foi lançado o primeiro beta o Android Studio, versão 0.1
  28. 28. Android Studio No mês de dezembro de 2014 a Google publicou o download da primeira versão estável (1.0)
  29. 29. Android Studio Android Studio é a nova suíte de desenvolvimento de apps em Android Foi projetado utilizando a infraestrutura da IDE IntelliJ IDEA, da JetBrains Utiliza o Gradle como novo sistema de build no processo de desenvolvimento
  30. 30. A idéia é • Apresentar uma IDE com uma interface intuitiva e organizada; • Mais “leve” e mais rápida; • Multiplataforma; • Novo sistema de automação de compilação, deixando de lado o “Ant” e adicionando o “Gradle”. • Mantendo o Android SDK
  31. 31. Features do Android Studio • Baseado no flexível sistema de build Gradle • Variantes de build e geração de múltiplos APKs • Suporte expandido de templates para Google Play Services e • vários tipos de dispositivos • Editor de layout poderoso com suporte para edição de temas • Ferramenta Lint para capturar problemas de performance,
  32. 32. Features do Android Studio • usabilidade, compatibilidade de versões, dentre outros • suporte para utilização do ProGuard e assinatura de apps • suporte embutido para Google Cloud Platform, tornando mais fácil • integrar funcionalidades do Google Cloud Messaging e App Engine
  33. 33. Features do Android Studio Funcionalidade Sistema de Build Build de dependências baseadas no Apache Maven Sim Não Variantes de build e geração de múltiplos APKs (ex: Android Wear, Android TV) Sim Não Auto-completar de código Android avançado e refactoring Sim Não Editor gráfico de layout Sim Sim Assinatura de APK e gerenciamento de keystore Sim Sim Suporte à NDK Sim Sim
  34. 34. Requerimentos (pesado mas leve) Windows OS X Linux Microsoft Windows 8/7/Vista/2003 (32 ou 64 bit) Mac OS X 10.8.5 or mais atual, up to 10.10 to up 10.10.1 up 10.10.2 GNOME ou KDE ou Unity desktop no Ubuntu ou Fedora 2 GB RAM mínimo, 4 GB RAM recomendado 2 GB RAM mínimo, 4 GB RAM recomendado 2 GB RAM mínimo, 4 GB RAM recomendado 500 MB de espaço em disco 500 MB de espaço em disco 500 MB de espaço em disco 16 GB de espaço livre para o Android SDK e suas imagens de sistema 16 GB de espaço livre para o Android SDK e suas imagens de sistema 16 GB de espaço livre para o Android SDK e suas imagens de sistema Java Development Kit (JDK) 7 ou mais atual Java Development Kit (JDK) 7 ou mais atual Java Development Kit (JDK) 7 ou mais atual Resolução mínima de tela: 1280x800 Resolução mínima de tela: 1280x800 Resolução mínima de tela: 1280x800
  35. 35. Android SDK •Um kit de ferramentas onde você encontrará todas as ferramentas e API’s necessárias para fazer o seu aplicativo usando o Android Studio ou o Eclipse
  36. 36. Vamos explorar •Abra o Android Studio. $ cd android-studio/ $ cd bin/ $ sh studio.sh
  37. 37. Criando um projeto
  38. 38. Criando um projeto
  39. 39. Criando um projeto
  40. 40. Isso é pra mais tarde ;)
  41. 41. Enquanto Esperamos...
  42. 42. 1. Usando seu aparelho Android 2. Usando um Android Virtual Device Testando seus apps
  43. 43. Usando seu aparelho Android, conectando a uma porta USB do seu computador e ativando o modo de depuração no dispositivo Testando seus apps
  44. 44. •Mais rápido •Mais confortável •Mais técnico •Acesso mais rápido à DEBUGs Testando no seu aparelho Android
  45. 45. Usando um Android Virtual Device (AVD) Testando seus apps
  46. 46. •É basicamente um emulador do SO no seu computador (Semelhante ao Virtual Box) •Dentro de um AVD você pode emular câmera, rede, memória RAM, armazenamento interno e processador. Android Virtual Device (AVD)
  47. 47. •Lento quando instalado em máquinas com pouca memória e baixo processamento •Devido a travamentos, a experiência com o sistema e com o seu aplicativo se torna ruim •Alternativa grátis •Bom método de testar uma nova versão do Android Android Virtual Device (AVD)
  48. 48. •Quem tiver um celular Android, use; •Caso contrário usaremos um AVD; •Mas criaremos um para entendermos seu funcionamento •Seu projeto ja abriu? Por via das duvidas...
  49. 49. Barra principal Debug Compilar e Executar Dispositivos Virtuais Android SDK Tools Monitoramento do Dispositivo
  50. 50. Procedimentos Iniciais Dispositivos Virtuais Android SDK Tools Monitoramento do Dispositivo
  51. 51. Prática Criar e executar um AVD Verificar pacotes do Android SDK
  52. 52. Enquanto seu AVD não abre...
  53. 53. Vamos à alguns conceitos
  54. 54. Arquitetura de uma aplicação • Linux Kernel • Bibliotecas • Frameworks • Aplicações • Android Runtime ou Dalvik VM
  55. 55. Arquitetura do Android
  56. 56. Linux Kernel Permite que a plataforma Android tenha alta portabilidade Por ser de código aberto permite que talentos individuais ou companhias o melhorem ainda mais (ou piorem –’)
  57. 57. Bibliotecas A camada acima do Kernel contém as bibliotecas nativas do Android Essas bibliotecas são todas escritas em C ou C++ e compiladas para a arquitetura de hardware específica utilizada pelo telefone. Ex.: Codecs de mídia, Banco de Dados AQL
  58. 58. Android Runtime • Core libraries: gráficos 2D, interações com o SO, collections do Java • Máquina Virtual Android Runtime
  59. 59. Dalvik VM x ART • No Dalvik (Just-in-time), os aplicativos instalados no Android são interpretados pela máquina virtual Dalvik, e então as informações deles são enviadas até a interface gráfica • No ART (Ahead-of-time), os códigos são pré-compilados na linguagem de execução já durante a instalação dos aplicativos. Isso significa que a instalação dos softwares pode ser mais demorada, mas também representa mais rapidez na execução dos apps
  60. 60. Dalvik VM ART Usa a abordagem just-in-time, que resulta em menor consumo de espaço de armazenamento, mas o tempo de carregamento dos apps é mais longo; Usa a abordagem antes-do- tempo, que compila os aplicativos quando eles são instalados, resultando em tempos de carga e uso do processador menores; O cache se acumula ao longo do tempo, de modo que o tempo de inicialização são rápidos; O cache é construído no boot dos dispositivo, logo reiniciar leva muito mais tempo; Como o espaço ocupado é menor, ele unciona melhor para dispositivos de armazenamento interno menor. consome muito mais espaço de armazenamento, uma vez que ele armazena aplicativos compilados além dos APKs. Sem suporte à 64bits Suporte à 64bits
  61. 61. Framoworks e Aplicações • Gerenciadores de câmera, GPS, janelas... • Telefone, mensagens, câmera, e o seu aplicativo
  62. 62. Seu AVD já abriu?
  63. 63. Se sim, vamos brincar com ele.
  64. 64. DDMS: Dalvik Debug Monitor Server Abra o Monitoramento do Dispositivo
  65. 65. •Ferramenta de Debug do Android Studio (Já existia no Eclipse); •Mas no Android Studio a ferramenta pode também ser usada para debugar com o seu smartphone Android DDMS: Dalvik Debug Monitor Server
  66. 66. •Abra a aba “Emulator Tool” e simule uma ligação e um envio de SMS Prática
  67. 67. Deixe seu AVD aberto e vamos pra outra parte
  68. 68. Lembram de quando eu falei sobre “Activity”?
  69. 69. Equivale à uma tela. Cada Activity é definida em dois arquivos res/layout/activity_nome.xml (visual) src/.../NomeActivity.java (comportamento) Activity
  70. 70. •Crie a sua Activity Prática
  71. 71. Hello world!
  72. 72. Estrutura de um Projeto no Android Studio
  73. 73. Perspectivas de Desenvolvimento Projeto Pacotes Android
  74. 74. Estrutura do projetoNome do projeto (mesmo nome do diretório)
  75. 75. Estrutura do projetoPasta com arquivos de configuração da IDE
  76. 76. Estrutura do projeto Módulo do projeto O ícone muda conforme o tipo de módulo (wear, TV, glass)
  77. 77. Estrutura do projeto Contém os arquivos compilados do app e os arquivos auxiliares (layouts, arquivos *.class, arquivo R.java)
  78. 78. Estrutura do projeto Pasta com as bibliotecas utilizadas Contém os arquivos *.jar
  79. 79. Estrutura do projeto Pasta com todo o código-fonte do aplicativo Por padrão o Android Studio cria os fontes em “src/main/java
  80. 80. Estrutura do projeto Pacote principal das classes de teste Por padrão o Android Studio cria os fontes em “src/androidTest/java
  81. 81. Estrutura do projeto Arquivos de recursos do aplicativo Layouts, telas, strings, ícones do app
  82. 82. Estrutura do projeto Arquivo ‘Manifest’ do app (nome, versão do Android, permissões...) No Android Studio, cada módulo tem um arquivo ‘manifest’
  83. 83. Estrutura do projeto Arquivo de configuração do módulo app Herdado da infraestrutura do IntelliJ
  84. 84. Estrutura do projeto Arquivo build.gradle para o módulo app Contém arquivos de configuração e tarefas do módulo, como versão mínima, versão padrão, dependências (escrito em Groovy)
  85. 85. Estrutura do projeto Pacote de arquivos do Gradle
  86. 86. Estrutura do projeto Arquivo build.gradle do projeto Contém informações gerais do projeto (repositórios)
  87. 87. Estrutura do projeto Arquivo de propriedades do Gradle Configurações específicas do gradle (gerado)
  88. 88. Estrutura do projeto Script para execução das tarefas do Gradle Utilizado no processo de realizar a construção do app
  89. 89. Estrutura do projeto Informações locais (SDK) Informa a localização do Android SDK (gerado)
  90. 90. Estrutura do projeto Arquivo de configuração do projeto Herdado da infraestrutura do IntelliJ
  91. 91. Estrutura do projeto Arquivo de configuração dos módulos Contém as informações dos módulos do projeto
  92. 92. Estrutura do projeto Bibliotecas externas Lista de bibliotecas externas ao projeto (SDK, JDK, etc)
  93. 93. Layout
  94. 94. Layout • Todo o layout e interface gráfica de um aplicativo feito no Android Studio está inserido num arquivo .xml, que é criado junto com uma Activity;
  95. 95. Layout • Pode ser manuseado tanto o código xml quanto a ferramenta de interface do Android Studio.
  96. 96. strings.xml • res/values/strings/xml Útil para traduzir um app para vários idiomas (Usando um arquivo strings.xml para cada idioma)
  97. 97. Código Java • src/.../MainActivity.java • Todas as Activities são herdam da classe ActionBarActivity • Para cada Actvity há um layout indicado no código • Qualquer componente da tela é referenciado no arquivo R.java
  98. 98. styles.xml • Contém o estilo que você usa para o aplicativo e seus componentes Útil para economizar linhas nos arquivos do layout, aplicando os estilos dos componentes
  99. 99. Arquivo R.java (Gerado pelo compilador) • Possui métodos estáticos com as referências de todos os recursos do projeto • Cada recurso é identificado por um número. O compilador gera constantes par facilitar o uso de recursos no código fonte • É gerada automaticamente pelo Android Studio e nunca deve ser alterada manualmente
  100. 100. Compilando seu projeto  Make Project  Run
  101. 101. Compilando seu projeto Substitua no arquivo strings.xml, “Hello, World” por qualquer outra String Execute o app
  102. 102. Compilando seu projeto Substitua no arquivo styles.xml o “parent” por “Base.V14.Theme.AppCompact” Execute o app
  103. 103. Interação
  104. 104. Adicione um botão
  105. 105. Ids! Quando você adiciona mais de um componente numa tela, os componentes são organizados por IDs
  106. 106. Ids! Os Ids são referenciados no arquivo R.java, para facilitar a interação com os componentes, basta apenas usar seu ID
  107. 107. Clique! Usando o método “onClick” e chamando-o no arquivo .java da sua activity android:onClick=“botaoClicado” public void botaoClicado (View v){ }
  108. 108. Prática 1. Exibir uma mensagem na tela 2. Exibir algo no Log ao tocar o botão 3. Exibir a quantidade de vezes que o botão foi tocado 4. Mudar o texto do textView (Nosso antigo ‘Hello World!’)
  109. 109. Toast (mensagem na tela) Toast.makeText(this, "Que botao massa vei", Toast.LENGTH_SHORT).show();
  110. 110. Log (não visível para o usuário) Toast.makeText(this, "Que botao massa vei", Toast.LENGTH_SHORT).show(); //métodos de Log Log.v //Verbose Log.d //Debug Log.i //Info Log.e //Warnig Log.wtf //What a F***
  111. 111. Método findViewById • Use este método para acessar qualquer ID disponível para sua aplicação no arquivo R.java no tempo de execução. TextView texto = (TextView) findViewById(R.id.textView1); texto.setText("Clicou "+x+" vezes");
  112. 112. Práticazinha • Modifique o texto do Botão ao tocar nele
  113. 113. Prática • Adicione um campo de texto ‘EditView’ na sua Activity • Ao clicar no botão, altere o TextView para o valor do campo de texto. Boa prática: crie um atributo para cada view e inicialize todos no onCreate (usando findViewById)
  114. 114. Ciclo de vida de uma Activity
  115. 115. Ciclo de vida de uma Activity
  116. 116. Prática Implemente os métodos do ciclo de vida de uma activity para emitir uma mensagem de log para cada um Tente fazer com que onDestroy seja chamado
  117. 117. Prática Rotacione o dispositivo (Ctrl + F11) e veja quais métodos são chamados.
  118. 118. Seu primeiro app funcional! Usando dos conhecimentos até agora passados, implemente um aplicativo que cálcule suas 3 médias de alguma disciplina e diga se você está ou não aprovado
  119. 119. Dica! Use três ‘EditText’ + 3 ‘TextView’ para as médias Use um ‘TextView’ (inicialmente vazio) para informar o resultado Caso precise, use ‘AbsoluteLayout’ para posicionar melhor os componentes
  120. 120. Dica! No seu layout (xml), use o método ‘android:maxLenght’ para definir o tamanho máximo de caracteres no EditText Use também o método ‘android:inputType’ para definir o tipo de entrada (Números)
  121. 121. Melhorando o app! Para evitar erros, defina os ‘EditText’ como ‘0’ inicialmente, usando setText();
  122. 122. Melhorando o app! Fazer com que apareça um ‘Dialog’ com o resultado na tela
  123. 123. Melhorando o app! Brincar com o Dialog, fazendo com que apareça uma mensagem diferente no botão, ao passar ou perder
  124. 124. Melhorando o app Faça com que ele calcule a média que você precisa numa prova final em caso de reprovação Fórmula para nota mínima da final finalMinima = 12.5 – (1.5 * media)
  125. 125. Voltando para o projeto Hello World! Preferências
  126. 126. Preferências Como salvar dados para que eles possam ser acessados da próxima vez que o app seja executado? SharedPreferences é uma forma conveniente de salvar pequenas quantidades de dados.
  127. 127. Preferências SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(this); Editor editor = prefs.edit(); editor.putString("texto", texto); editor.commit(); SharedPreferences prefs = PreferenceManager .getDefaultSharedPreferences(this); String texto = prefs.getString("texto", ""); Salvando Carregando
  128. 128. Prática Faça o app guardar o texto Carregue no onCreate e salve no onDestroy Boa prática: use atributos static final para as chaves
  129. 129. Intents
  130. 130. Intents São mensagens que seu programa envia para o sistema para requisitar funcionalidades de outros Componentes Exemplo: uma Activity envia um Intent para requisitar ao sistema que outra Activity seja aberta Outro exemplo: uma Activity envia um Intent para requisitar ao sistema que abra um navegador na página www.google.com
  131. 131. Abrindo outra Activity Intent intent = new Intent(this, OutraActivity.class); startActivity(intent); Pode ser chamado, por exemplo, ao clicar em um botão A nova activity é “empilhada” sobre a atual
  132. 132. Fechando a Activity Usando o método ‘finish();’ Quando uma activity é fechada (desempilhada), o Sistema mostra a Activity anterior, que estava abaixo da atual A Activity é desempilhada para evitar empilhamentos desnecessários, gerando alto consume de memória
  133. 133. Prática Aproveitando o seu projeto Hello World, crie uma nova Activity chamada OutraActivity.java Na MainActivity.java, adicione um novo botão que ao ser clicado abre OutraActivity Na OutraActivity adicione um botão que ao ser clicado feche a Activity
  134. 134. Passando dados de uma Activity pra outra Intent intent = new Intent(this, OutraActivity.class); intent.putExtra(“pi”, 3.14); startActivity(intent); Bundle extras = getIntent().getExtras() if (extras != null) { float x = extra.getFloat(“pi”); } MainActivity.java OutraActivity.java Pode ser chamado no onCreate();
  135. 135. Retornando dados de uma Activity Intent intent = new Intent(this, OutraActivity.class); startActivityForResult(intent, 1234); Intent data = new Intent(); data.putExtra(“pi”, 3.14); setResult(RESULT_OK, data); finish(); MainActivity.java OutraActivity.java MainActivity.java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == 1234 && resultCode == RESULT_OK) { float pi = data.getFloatExtra(“pi”); } }
  136. 136. Exercitando Adicione dois ‘TextView’ vazios em cada Activity Faça com que nesses ‘TextView’ aparecam a quantidade de vezes que você trocou de Activity Dessa forma:
  137. 137. Prática
  138. 138. Intents Implícitos // Abrir navegador Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com/")); startActivity(intent); // Enviar mensagem (SMS) Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(android.content.Intent.EXTRA_TEXT, "Oi!"); startActivity(intent);
  139. 139. Intents Implícitos Existem ainda vários outros tipos ACTION_CALL -> Realiza chamadas IMAGE_CAPTURE -> Tira uma foto
  140. 140. ListView
  141. 141. ListView: Funcionamento ListView ArrayAdapter
  142. 142. ListView ListView listView = (ListView) findViewById(R.id.mylist); listView.setAdapter(adapter);
  143. 143. ListView ListView lista = (ListView) findViewById(R.id.mylist); String[] values = new String[] { “Jelly Bean”, “KitKat”, “Lollipop” }; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, // layout de um item values); lista.setAdapter(adapter); Crie um novo projeto, adicione um ListView na Activity, coloque este código no onCreate, e observe o que acontece
  144. 144. ListView: Interação lista.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // Seu código aqui } }); Coloque este código dentro do onCreate e coloque um “Toast” dentro do onItemClick
  145. 145. Prática Sistema para guardar quaisquer observações

×