Apresentação utilizada no curso introdutório de Android realizado na Semana de Ciências Exatas e Tecnologia da PUC-SP nos dias 04 e 05 de novembro de 2013
Agenda • Introdução ao Android – Conhecendo um pouco da sua história • Conceitos básicos do Android – A arquitetura do Android – Os elementos essenciais • Configuração do ambiente • Desenvolvendo a minha primeira aplicação – Hello World – Atividade 01 - LogCat e Ciclo de Vida – Atividade 02 – Telas – Atividade 03 - Telas e Intent
História do Android • Desenvolvida pela Android Inc. (comprada pela Google) • Faz parte da Open Handset Alliance* • O primeiro aparelho comercial com Android foi o HTC Dream ou G1. • Em 2007, Android Beta SDK é liberado. • Hoje, o Android é o sistema mais utilizado em smartphones *A OHA é um conjunto de várias empresas, que têm como objetivo desenvolver padrões abertos para dispositivos móveis HTC Dream
Mercado Android • O Android conquistou 79.3% de participação no segmento de smartphones durante o segundo trimestre deste ano (187,4 milhões de unidades), aponta a consultoria IDC. No mesmo período do ano passado, o índice era de 69,1%.
Vantagens do Android no Mercado • As principais características que diferenciam o Android de outros sistemas: – Flexibilidade – Aplicações – Demanda – Segurança – Custo Você consegue citar mais alguma característica que diferencia o sistema Android?
Utilizadores do Android • A AdMob* fez uma pesquisa sobre os utilizadores de IPhone, IPod, Android, etc., relativamente à sua interação e envolvência com as aplicações. Homens Mulheres Apenas 21% compram uma aplicação paga por mês 24% dos utilizadores tem menos de 24 anos *AdMob é uma empresa americana de publicidade móvel comprada pela Google
Características do Android • Sistema baseado em Linux (kernel 2.6) • Código fonte é open source* • API em Java (Android SDK) • Não está preso a nenhum hardware • Grande quantidade de aplicativos (Google Play) • Diversas opções de personalização • Existe SGBD nativo, o SQlite • Possui suporte a gráficos 3D baseado na especificação 1.0 da OpenGL ES *O código fonte pode ser baixado no site source.android.com
Utilização das Versões Versão Codinome API Distribuição 2.2 Froyo 8 1.7% 2.3.3 – 2.3.7 Gingerbread 10 26.3% 3.2 Honeycomb 13 0.1% 4.0.3 – 4.0.4 Ice Cream Sandwich 15 19.8% 4.1.X Jelly Bean 16 37.3% 4.2.X 17 12.5% 4.3 18 2.3% Dados retirados do site: http://developer.android.com *Dados referentes a pesquisa realizada em um período de 7 dias, terminado no dia 01/11/2013
Arquitetura do Android • O Google geralmente se refere ao sistema operacional Android como uma pilha de softwares. Cada camada da pilha agrupa vários programas que suportam funções específicas do sistema operacional. A organização em camadas permite uma melhor organização (e uso) do sistema!
Arquitetura do Android • Camada de Aplicações: onde se localizam todos os aplicativos que são executados sobre o sistema operacional, tais como, cliente de SMS e MMS, cliente de e-mail, navegador, mapas, calculadora, dentre outros • Camada de Suporte: A camada de framework nativo disponibiliza aos desenvolvedores as mesmas Applications Programming Interface (APIs) – Interface de Programação de Aplicativos utilizadas para a criação de aplicações originais do sistema operacional Android
Arquitetura do Android • Camada de Bibliotecas: camada que possui as bibliotecas C/C++ que são utilizadas pelo sistema, e também bibliotecas de multimídia, visualização de camadas 2D e 3D, funções para navegadores web, funções de aceleradores de hardware, renderização 3D, funções para gráficos, fontes bitmap e vetorizadas e funções de acesso a banco de dados SQLite.
Arquitetura do Android • Camada de Runtime: camada se instancia a máquina virtual Dalvik, criada para cada aplicação executada no Android. Essa maquina virtual é a melhor referente a desempenho, maior integração com a nova geração de hardware e projetada como executar vários processos paralelamente. • Camada de Kernel Linux: o núcleo do sistema operacional Android é derivado do kernel 2.6 do Linux, herdando diversas características dessa plataforma. Parte importante que se utiliza do Linux na concepção do Google Android é o de controle de processos, gerenciarem memória, threads, protocolos de rede, modelo de drives e a segurança dos arquivos.
Elementos Essenciais • Os aplicativos são escritos em Java (Dalvik VM não é uma JVM! Os arquivos .class são convertidos por meio de um compilador java para arquivos .dex) • Não existe função main(), existem pontos de entrada • O principal componente é a Activity, que corresponde a uma tela.
Elementos Essenciais - Activity • É representado por uma tela na aplicação. Possui interface de usuário composta por Views, componentes gráficos, eventos e etc. • Define que existe uma tela, controla seu estado e a passagem de parâmetros de uma tela para a outra, define os métodos que serão chamados quando o usuário apertar algum botão da tela, etc.
Activity – Ciclo de Vida • onCreate(): Método chamado quando a Activity é iniciada • onStart(): Método chamado quando a Activity fica visível para o usuário. • onResume(): Método chamado quando a Activity irá interagir com o usuário. • onPause(): Método chamado quando o sistema está prestes retomar uma outra Activity. • onStop(): Método chamado quando a Activity não estiver mais sendo executada. • onDestroy(): Método chamado quando a Activity terminou. • onRestart(): Método chamado quando a Activity estiver prestes a ser chamada novamente.
Elementos Essenciais - View • Uma view pode ser um simples componente gráfico (botão, checkbox,imagem) ou uma view complexa, que atua como um gerenciador de layout, a qual pode conter várias views- filhas e tem a função de organizar as mesmas na tela. • A view é definida por meio de um arquivo XML.
Elementos Essenciais - Intent • O Intent representa uma ação que a aplicação deseja executar (mensagem da aplicação para o sistema operacional). • Uma Intent pode ser usada para: – Enviar mensagem ao sistema operacional. – Abrir uma nova tela da aplicação. – Solicitar ao sistema operacional que ligue para certo número. – Solicitar ao sistema operacional que abra o navegador em certa url. – Abrir o Google Play para fazer certa instalação de app – Etc.
Elementos Essenciais – Manifest.xml • O arquivo manifest.xml contém informação essencial sobre a aplicação para o sistema Android. O sistema necessita dessa informação para que depois consiga rodar a aplicação • O manifest.xml define, por exemplo: – O nome do pacote Java para a aplicação – Os componentes da aplicação – Activitites, serviços, listeners – Permissões que a aplicação necessita para rodar – Versão mínima da API usada na aplicação – Etc...
Elementos Essenciais – Classe R • A classe R é uma classe auto-gerada pelo build da aplicação no Eclipse. Ela serve como vínculo entre as Activities e as Views , ou seja, para cada componente da sua view, teremos uma variável na classe R que a referencia (de um jeito estranho!). • Não precisamos nos preocupar muito com essa classe pelo fato de não termos que mexer nela, o build do Eclipse já nos poupa desse fardo.
Classe R - Exemplo Não se preocupe com a classe R. Ela se mostrará uma grande aliada, desde que você se lembre de nunca mexer nela! Ela é gerada automaticamente!
Hello World • Tarefas: – Configurar o ambiente – Criar novo projeto – Criar nova máquina virtual (emulador) – Executar o projeto Não esqueça de identificar e entender todos os elementos explicados dentro do código!
Atividade 01 - LogCat e Ciclo de Vida • Nesta atividade vamos aprender um pouco mais sobre o ciclo de vida de uma Activity e como usar o sistema de logs da máquina virtual Dalvik, o LogCat • Objetivo: Criar uma aplicação que exibe uma mensagem no LogCat a cada uma das etapas do ciclo de vida da Activity • Veja arquivo: TarefaLogCat – Exemplo.txt Não esqueça de filtrar os logs para não se perder!
Atividade 02 - Telas • Nesta atividade vamos aprender um pouco mais sobre Activity e View. • Objetivo: Criar um aplicação – que se integre com a atividade 01 – que tenha 2 telas. Ao clicar em uma delas, é redirecionada para a outra. • Veja arquivo: Telas.txt Faça as telas estender a tela de log feita na atividade anterior!
Atividade 03 – Telas e Intent • Nesta atividade vamos aprender um pouco mais sobre como usar as Intent e Bundle para passar parâmetros entre telas • Objetivo: Iterar o código da atividade 02, de modo que seja possível passar parâmetros entre telas (a mensagem exibida na segunda tela deve ser passada por parâmetro na primeira). • Veja arquivo: Passando-parametros.txt Aqui só vamos alterar um pouco os métodos onCreate() das nossas telas! Vai ser moleza! ;D
Referências 1. http://developer.android.com/index.html 2. http://web.esad.ipleiria.pt/PDMIII/3080403/index_1.html 3. http://www.jeferson.silva.nom.br/2012/06/curso-basico-de-programacao- para.html 4. http://olhardigital.uol.com.br/pro/noticia/36573/36573 5. http://informatica.hsw.uol.com.br/google-phone2.htm 6. http://www.alexandreporfirio.com/mini-curso-android/ 7. http://www.mundointerativo.com.br/2012/07/25/a-evolucao-do-android/ Nome: Google Android: Aprenda a criar aplicações para Dispositivos móveis com o Android SDK Autor: Ricardo R. Lecheta Editora: Novatec – Segunda Edição
Atividade 04 - Listas • Nesta atividade vamos mostrar como o Android facilita o nosso trabalho com lista de itens. Vamos aprender a criar uma lista de itens e exibi-la na tela. • Objetivo: Ver o funcionamento da classe ListActivity • Veja arquivo: TelaLista-exemplo.txt Nesta atividade vamos somente entender como funciona essa classe! Será importante para a próxima atividade! * Não esqueça de alterar o seu Manifest.xml
Atividade 05 – Menu para Aplicação • Nesta atividade vamos aprender como usar a ListActivity para criar um menu para a nossa aplicação. • Objetivo: Criar um menu para as telas da aplicação. Ao apertar no item que corresponde a tela, ela deverá abrir. • Utilize a classe da atividade 04 como base! Você se lembra como chamar uma tela? Não? Olhe no código das outras atividades! A chave é a Intent. * Não esqueça de alterar o seu Manifest.xml
Experimento – Criando Telas • Neste experimento vamos criar uma tela ao gosto de cada um, utilizando o sistema de drag n’ drop que gera o xml da nossa tela. Depois, vamos aprender a como pegar os elementos da nossa tela no código da nossa Activity para interagir com eles.
Pesquisa de satisfação • Esperamos que você tenha gostado e aprendido nessa oficina de Android! Tentamos passar os principais conceitos envolvidos na programação de qualquer aplicativo para o sistema Android. • Se possível, gostaríamos que vocês respondessem a enquete a seguir para que possamos ter um pequeno feedback de vocês em relação ao que foi passado Enquete - Oficina Android 2013
Referências 1. http://developer.android.com/index.html 2. http://web.esad.ipleiria.pt/PDMIII/3080403/index_1.html 3. http://www.jeferson.silva.nom.br/2012/06/curso-basico-de-programacao- para.html 4. http://olhardigital.uol.com.br/pro/noticia/36573/36573 5. http://informatica.hsw.uol.com.br/google-phone2.htm 6. http://www.alexandreporfirio.com/mini-curso-android/ 7. http://www.mundointerativo.com.br/2012/07/25/a-evolucao-do-android/ Nome: Google Android: Aprenda a criar aplicações para Dispositivos móveis com o Android SDK Autor: Ricardo R. Lecheta Editora: Novatec – Segunda Edição