introdução ao android - siecomp 2015.1

Post on 19-Jul-2015

288 Views

Category:

Engineering

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introdução ao Android

Afonso da Silva Machado

3 de Março de 2015

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

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?

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

Metodologia

•Dividindo em três partes1. Manuseando a IDE2. Aprendendo conceitos fundamentais3. Aplicando seus conceitos

a) Um pequeno app para cada conceitob) Apps completos para exercitar

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

Um sistema operacional para Tablets

E smartphones?

#sqn

Android Wear e Android TV

Diferentes Smartphones

E em breve: Android Auto

Anunciado para Grandes Marcas

http://www.android.com/

Várias versões

Android 5.0: Lollipop

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.

Versões

http://developer.android.com/about/dashboards/index.html

Google play store, filmes, músicas...

Android Studio (ou Eclipse?)

http://developer.android.com/sdk/index.html

Vamos ao que Interessa ;)

Mas e o Eclipse?

Java + Um bando de coisa

Chato?

Quantos gostam de java?

Quantos gostam de eclipse?

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

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

Era legal... Mas...

• Interface muito misturada

•Meio eclipse seco, meio Android

•Relativamente pesado

•Emulador quase impossível de ser executado

Até que...

16 de maio de 2013

Google I/O

Android KitKat

Google Nexus 5

IDE exclusiva para Android

Android Studio

No mesmo mês (Maio de 2014) foi lançado o primeiro

beta o Android Studio, versão 0.1

Android Studio

No mês de dezembro de 2014 a Google publicou o

download da primeira versão estável (1.0)

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

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

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,

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

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

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 oumais atual

Java Development Kit (JDK) 7 oumais atual

Java Development Kit (JDK) 7 oumais atual

Resolução mínima de tela: 1280x800 Resolução mínima de tela: 1280x800 Resolução mínima de tela: 1280x800

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

Vamos explorar

•Abra o Android Studio.

$ cd android-studio/

$ cd bin/

$ sh studio.sh

Criando um projeto

Criando um projeto

Criando um projeto

Isso é pra mais tarde ;)

Enquanto Esperamos...

1. Usando seu aparelho Android

2. Usando um Android Virtual Device

Testando seus apps

Usando seu aparelho Android, conectando a uma porta USB do seu computador e ativando o modo de depuração no dispositivo

Testando seus apps

•Mais rápido

•Mais confortável

•Mais técnico

•Acesso mais rápido à DEBUGs

Testando no seu aparelho Android

Usando um Android Virtual Device (AVD)

Testando seus apps

•É 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)

•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)

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

Barra principal

Debug

Compilar e Executar

Dispositivos Virtuais

Android SDK Tools

Monitoramento do Dispositivo

Procedimentos Iniciais

Dispositivos Virtuais

Android SDK Tools

Monitoramento do Dispositivo

Prática

Criar e executar um AVD

Verificar pacotes do Android SDK

Enquanto seu AVD não abre...

Vamos à alguns conceitos

Arquitetura de uma aplicação

• Linux Kernel

• Bibliotecas

• Frameworks

• Aplicações

• Android Runtime ou Dalvik VM

Arquitetura do Android

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 –’)

Bibliotecas

A camada acima do Kernel contém as bibliotecas nativas do Android

Essas bibliotecas são todasescritas em C ou C++ e

compiladas para a arquiteturade hardware específicautilizada pelo telefone.

Ex.: Codecs de mídia, Banco de Dados AQL

Android Runtime

• Core libraries: gráficos 2D, interações com o SO, collections do Java

• Máquina Virtual Android Runtime

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

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

Framoworks e Aplicações

• Gerenciadores de câmera, GPS, janelas...

• Telefone, mensagens, câmera, e o seu aplicativo

Seu AVD já abriu?

Se sim, vamos brincar com ele.

DDMS: Dalvik Debug Monitor Server

Abra o Monitoramento do Dispositivo

•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

•Abra a aba “Emulator Tool” e simule uma ligação e um envio de SMS

Prática

Deixe seu AVD aberto e vamos pra outra parte

Lembram de quando eu falei sobre “Activity”?

Equivale à uma tela.

Cada Activity é definida em dois arquivosres/layout/activity_nome.xml (visual)src/.../NomeActivity.java (comportamento)

Activity

•Crie a sua Activity

Prática

Hello world!

Estrutura de um Projeto no Android Studio

Perspectivas de Desenvolvimento

Projeto Pacotes Android

Estrutura do projetoNome do projeto(mesmo nome do diretório)

Estrutura do projetoPasta com arquivos de

configuração da IDE

Estrutura do projetoMódulo do projeto

O ícone muda conforme o tipo de módulo (wear, TV, glass)

Estrutura do projetoContém os arquivos compilados do app e os arquivos

auxiliares (layouts, arquivos *.class, arquivo R.java)

Estrutura do projeto

Pasta com as bibliotecas utilizadasContém os arquivos *.jar

Estrutura do projeto

Pasta com todo o código-fonte do aplicativoPor padrão o Android Studio cria os fontes em “src/main/java

Estrutura do projeto

Pacote principal das classes de testePor padrão o Android Studio cria os fontes em “src/androidTest/java

Estrutura do projeto

Arquivos de recursos do aplicativoLayouts, telas, strings, ícones do app

Estrutura do projeto

Arquivo ‘Manifest’ do app (nome, versão do Android, permissões...)

No Android Studio, cada módulo tem um arquivo ‘manifest’

Estrutura do projeto

Arquivo de configuração do módulo appHerdado da infraestrutura do IntelliJ

Estrutura do projeto

Arquivo build.gradle para o módulo appContém arquivos de configuração e tarefas do módulo,

como versão mínima, versão padrão, dependências (escrito em Groovy)

Estrutura do projeto

Pacote de arquivos do Gradle

Estrutura do projeto

Arquivo build.gradle do projetoContém informações gerais do projeto (repositórios)

Estrutura do projeto

Arquivo de propriedades do GradleConfigurações específicas do gradle (gerado)

Estrutura do projeto

Script para execução das tarefas do GradleUtilizado no processo de realizar a construção do app

Estrutura do projeto

Informações locais (SDK)Informa a localização do Android SDK (gerado)

Estrutura do projeto

Arquivo de configuração do projetoHerdado da infraestrutura do IntelliJ

Estrutura do projeto

Arquivo de configuração dos módulosContém as informações dos módulos do projeto

Estrutura do projeto

Bibliotecas externasLista de bibliotecas externas ao projeto (SDK, JDK, etc)

Layout

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;

Layout

• Pode ser manuseado tanto o código xmlquanto a ferramenta de interface do Android Studio.

strings.xml

• res/values/strings/xml

Útil para traduzir um app para vários idiomas

(Usando um arquivo strings.xml para cada idioma)

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

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

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

Compilando seu projeto

Make Project Run

Compilando seu projeto

Substitua no arquivo strings.xml, “Hello, World” por qualquer outra String

Execute o app

Compilando seu projeto

Substitua no arquivo styles.xml o “parent” por “Base.V14.Theme.AppCompact”

Execute o app

Interação

Adicione um botão

Ids!

Quando você adiciona mais de um componente numa tela, os componentes são organizados por IDs

Ids!

Os Ids são referenciados no arquivo R.java, para facilitara interação com os componentes, basta apenas usar seuID

Clique!

Usando o método “onClick” e chamando-o no arquivo.java da sua activity

android:onClick=“botaoClicado”

public void botaoClicado (View v){

}

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 ‘HelloWorld!’)

Toast (mensagem na tela)

Toast.makeText(this, "Que botao massa vei", Toast.LENGTH_SHORT).show();

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

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");

Práticazinha

• Modifique o texto do Botão ao tocar nele

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)

Ciclo de vida de uma Activity

Ciclo de vida de uma Activity

Prática

Implemente os métodos do ciclo de vida de umaactivity para emitir uma mensagem de log paracada um

Tente fazer com que onDestroy seja chamado

Prática

Rotacione o dispositivo (Ctrl + F11) e veja quais métodos são chamados.

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

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

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)

Melhorando o app!

Para evitar erros, defina os ‘EditText’ como ‘0’ inicialmente, usando setText();

Melhorando o app!

Fazer com que apareça um ‘Dialog’ com o resultado na tela

Melhorando o app!

Brincar com o Dialog, fazendo com que apareça uma mensagem diferente no botão, ao passar ou perder

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 finalfinalMinima = 12.5 – (1.5 * media)

Voltando para o projeto Hello World!

Preferências

Preferências

Como salvar dados para que eles possam seracessados da próxima vez que o app sejaexecutado?

SharedPreferences é uma forma conveniente desalvar pequenas quantidades de dados.

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

Prática

Faça o app guardar o textoCarregue no onCreate e salve no onDestroy

Boa prática: use atributos static final para as chaves

Intents

Intents

São mensagens que seu programa envia para osistema para requisitar funcionalidades de outrosComponentes

Exemplo: uma Activity envia um Intent pararequisitar ao sistema que outra Activity seja aberta

Outro exemplo: uma Activity envia um Intent pararequisitar ao sistema que abra um navegador napágina www.google.com

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

Fechando a Activity

Usando o método ‘finish();’

Quando uma activity é fechada(desempilhada), o Sistema

mostra a Activity anterior, queestava abaixo da atual

A Activity é desempilhada para evitar empilhamentos

desnecessários, gerando alto consume de memória

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

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();

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@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (requestCode == 1234 && resultCode == RESULT_OK) {float pi = data.getFloatExtra(“pi”);

}}

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:

Prática

Intents Implícitos

// Abrir navegadorIntent 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);

Intents Implícitos

Existem ainda vários outros tipos

ACTION_CALL -> Realiza chamadasIMAGE_CAPTURE -> Tira uma foto

ListView

ListView: Funcionamento

ListView

ArrayAdapter

ListView

ListView listView = (ListView) findViewById(R.id.mylist);

listView.setAdapter(adapter);

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 itemvalues);lista.setAdapter(adapter);

Crie um novo projeto, adicione um ListView na Activity, coloque este código no onCreate, e observe o que acontece

ListView: Interação

lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Overridepublic 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

Prática

Sistema para guardar quaisquer observações

top related