Aulas Google Android

110
GOOGLE ANDROID Prof. MSc. Iury Teixeira Faculdade de Juazeiro do Norte Especialização em Desenvolvimento de Aplicativos para Dispositivos Móveis

description

Aulas ministradas na especialização de dispositivos móveis. Plataforma, Activity, Intent, Notification

Transcript of Aulas Google Android

Page 1: Aulas Google Android

GOOGLE ANDROID Prof. MSc. Iury Teixeira Faculdade de Juazeiro do Norte Especialização em Desenvolvimento de Aplicativos para Dispositivos Móveis

Page 2: Aulas Google Android

Nosso objetivo

Conhecer o sistema operacional e plataforma de desenvolvimento Google Android junto de seus principais

componentes de desenvolvimento de Apps.

Page 3: Aulas Google Android

Roteiro • Origem • OHA • Onde está o Android? • OAA • Arquitetura •  Tipos de Aplicativos • Google Play • SDK e Dalvik • Ambiente de

Desenvolvimento • AVD e Emulador

• ADB, DDMS e ADT • Widgets • Activity •  ListActivity •  Intents

Page 4: Aulas Google Android
Page 5: Aulas Google Android

Android Sistema Operacional

Android, Inc.

Open Source

Código Proprietário?

Java !? Linux

Page 6: Aulas Google Android

O que existe no Android?

Acesso a serviços nativos API´s

Views e Fragments

Gráficos, câmeras

Background e Foreground

Widgets

SQLite

C2DM Sensores

Page 7: Aulas Google Android
Page 8: Aulas Google Android

Mercado do Android

2012

66,4 % dos Devices

Page 9: Aulas Google Android

Mercado do Android

2013

78,4 % de aparelhos com AndroidOS

15,6 % iOS

Page 10: Aulas Google Android

2014 – previsão – Fonte : Gartner

Page 11: Aulas Google Android

onde Android?

Page 12: Aulas Google Android

Smartphones e phablets

Page 13: Aulas Google Android

Tablets

Page 14: Aulas Google Android

Wearable Devices

Page 15: Aulas Google Android

Internet das Coisas

Page 16: Aulas Google Android

iQon System

Page 17: Aulas Google Android

Arquitetura do AndroidOS

Page 18: Aulas Google Android

• Android é baseado no Kernel 2.6 do Linux;

• O Linux é responsável por gerenciar:

Memória

Processos Threads

Segurança

Redes

Drivers

Android e Linux

Prof. Iury Teixeira

Page 19: Aulas Google Android

•  Assim como no Java, o Android possui uma VM, chamada

Dalvik. VM otimizada para baixo consumo de recursos

•  Essa mesma, é responsável por efetuar toda compilação e transformar em código executável no Android;

•  Não existe uma JVM no Android;

• E como funciona a compilação?

Máquina Virtual

Prof. Iury Teixeira

Page 20: Aulas Google Android

Exportação

Prof. Iury Teixeira

Page 21: Aulas Google Android

Tipos de Aplicativos •  Foreground

•  Interage com o usuário

• Background •  Executa em segundo plano

•  Intermittent •  União dos primeiros tipos

• Widgets •  De fácil acesso na Home Screen •  API específica

Prof. Iury Teixeira

Page 22: Aulas Google Android

Loja de Aplicativos • Objetivo:

•  Possibilitar aos desenvolvedores um local para disponibilizar suas Apps.

• Para utilizar: •  Cadastro, pagamento de US$ 25.00;

•  Após isso pode ser instalado por qualquer usuário;

Page 23: Aulas Google Android

Versões X API

Page 24: Aulas Google Android

Ferramentas e SDK

Eclipse + ADT plugin

Android SDK Tools

Android Platform-tools

The latest Android platform

The latest Android system image for the emulator

ADT Bundle

Page 25: Aulas Google Android

Estrutura do SDK •  add-ons

•  Arquivos extras e de terceiros pertencentes a determinadas APIs

•  plataforms •  raiz das APIs

•  tools •  Arquivos auxiliares para a execução de ferramentas do SDK

Page 26: Aulas Google Android

O Que vem com o SDK • Contém:

•  toda a API necessária para desenvolver utilizando a linguagem Java;

•  SDK Manger •  Emulador;

•  Sendo possível plugar um celular na porta USB para executar/testar a aplicação;

•  Para isso necessita do driver do celular instalado na máquina;

• AVD Manager •  Controlador de plataformas do Android

•  DDMS •  Debug, Monitoramento;

Page 27: Aulas Google Android

SDK Manager •  Local onde pode ser feito o download de:

•  APIs •  Ferramentas •  bibliotecas de terceiros •  Documentação, exemplos e código

Page 28: Aulas Google Android

AVD Manager • Android Virtual Device

•  Gerenciador de máquinas(devices) virtuais

Page 29: Aulas Google Android

• Mas o que é AVD ?

• Android Virtual Device

•  Criação de uma configuração virtual para um determinado dispositivo, reconhecida e emulada pelo emulador.

AVD Manager

Prof. Iury Teixeira

Page 30: Aulas Google Android

AVD 1

AVD 2

Android 4.1 SD 5000 MB Resol.: HVGA

Android 4.2 SD 500 MB Resol.: HVGA

Android 4.2 SD 1024 MB Resol.: WQVGA432

AVD 3

AVD Manager Emulador

Prof. Iury Teixeira

Page 31: Aulas Google Android

Novo projeto usando o Eclipse ADT •  File > New > Android Application Project

Page 32: Aulas Google Android

Template da Activity •  Necessita de Fragments versão 11 ou superior (mínimo)

Page 33: Aulas Google Android

Arquitetura da App

Page 34: Aulas Google Android

Src: código fonte Java Gen: fonte Java gerado pelo ADT Android 4.2.2: Compile with, versão de compilação do projeto Assests: arquivos html, textos, fonte, banco,… recursos Bin: onde ficará o .apk Libs: bibliotecas utilizadas no projeto Res: recursos estáticos utilizados no projeto Drawable: imagens do aplicativo Layout: interfaces/telas do aplicativo Menu: desenhos de menu do aplicativo Values: mensagens de texto do aplicativo

(internacionalização)

Page 35: Aulas Google Android

AndroidManifest.xml • Deve-se manter na raiz do projeto; • Mantem todas as configurações do projeto:

•  Nome, pacote base, ícone •  Activity’s •  Versão SDK •  Permissões

Page 36: Aulas Google Android

O que significa essas linhas?

Pode ser executada isoladamente, ponto inicial

A Activity estará na tela inicial

AndroidManifest.xml

Page 37: Aulas Google Android

layouts

Page 38: Aulas Google Android

layout •  /res/layout/activity_main.xml

•  Os arquivos XML na pasta layout representam uma tela da aplicação;

•  As TAGS representam os componentes visuais;

•  Os componentes visuais podem ser criados via API Java também;

Page 39: Aulas Google Android

strings

Page 40: Aulas Google Android

•  /res/values/string.xml

•  Muito importante para internacionalização;

Chave Valor

Page 41: Aulas Google Android

A Classe R •  Possui constantes (do tipo INT) para todos os recursos

criados; •  Acessa imagens; •  É atualizada automaticamente pelo ADT(Plugin), quando a

pasta res é alterada;

•  R.drawable.imagem1; •  R.layout.meu_layout; •  R.string.valor_string; •  R.style.meu_estilo;

Diferente de android.R

Page 42: Aulas Google Android

Classe R

Page 43: Aulas Google Android

Pixels, densidades, …

drawable

Page 44: Aulas Google Android

Pixel??

Um pixel é o menor ponto físico da tela de um dispositivo É o elemento pelo qual as imagens são criadas.

Page 45: Aulas Google Android

Pilhas de Densidade

Page 46: Aulas Google Android

Tendo como densidade base do dispositvo alvo 160dpi, qual tamanho

fisico teria as outras imagens (nas pastas drawable’s)?

Page 47: Aulas Google Android

Criando a imagem correta…

32px x 32px

Densidade (dpi) Pixels x Escala Tamanho Recomendado (dp) 120 32 * 0.75 24 160 32 * 1.00 32 240 32 * 1.50 48 320 32 * 2.00 64 480 32 * 3.00 96

Tendo como densidade base do dispositvo alvo 160dpi, qual tamanho fisico teria as outras imagens (drawable’s)?

Page 48: Aulas Google Android

Todos os recursos devem ter: nomes minusculos e sem espaços. Caso não

siga a regra a classe R não será compilada.

Page 49: Aulas Google Android

Criando um AVD

1º Passo

Page 50: Aulas Google Android

Criando um AVD

2º Passo

Page 51: Aulas Google Android

Executando o projeto

Botão direito no projeto e siga os passos abaixo:

Page 52: Aulas Google Android

Activity Principal

Page 53: Aulas Google Android

Capturando componentes

Arquivo Java ( Principal.java )

Arquivo XML ( layout/main.xml )

Page 54: Aulas Google Android

Evento click/tap do Button

Page 55: Aulas Google Android

Mão no código J • Criar um aplicativo chamado ArqMob;

• Calcular a área do losango:

• O resultado deve ser exibido em um AlertDialog.Builder

A = b * h / 2

Page 56: Aulas Google Android

Componentes Visuais

Page 57: Aulas Google Android
Page 58: Aulas Google Android

TextView e EditText • Propriedades:

•  layout_width = [“wrap_content” ou “match_parent”] -> Preenchimento Lateral

•  layout_heigth = [“wrap_content” ou “match_parent”] -> Preenchimento Altura

•  background = “#FFFF34” -> Cor de Fundo •  textColor = “#FFFF34” -> Cor da Fonte •  hint = “insira seu nome”-> Caso o campo de texto esteja vazio •  autoLink = [“web ou map e etc”] - > o TextView Funciona como link.

•  layout_weight = [“valor inteiro”] -> Refere-se a porcentagem que o componente irá ocupar na tela;

Page 59: Aulas Google Android

Tipos de InputType do EditText http://developer.android.com/guide/topics/ui/controls/text.html

Page 60: Aulas Google Android

Tipos de InputType do EditText http://developer.android.com/guide/topics/ui/controls/text.html

Page 61: Aulas Google Android

ToggleButton e CheckBox •  Componentes para seleção de iten opcionais; •  Propriedades do ToogleButton:

•  textOn: Exibe um texto quando selecionado; •  textOff: Exibe um texto quando não está selecionado;

•  Método isChecked(): [método de ambos os componentes] •  Retorna a situação da seleção;

Page 62: Aulas Google Android

Tela Anterior

Page 63: Aulas Google Android

RadioButton •  É utilizado com o auxilio de um RadioGroup

•  Propriedades: •  Text: Texto a ser exibido; •  Checked: Se o botão iniciará marcado ou não [ true | false ]

•  Método para obter o radio selecionado: •  isChecked();

Page 64: Aulas Google Android

RadioButton

Page 65: Aulas Google Android

Activity

Page 66: Aulas Google Android

• Representa uma “tela” da aplicação;

•  Tem a função de gerenciar os eventos da tela;

• Regra de Visão;

• Configura a View a ser exibido;

Activity

Page 67: Aulas Google Android

• Deve herdar de Activity [ou subclasses];

• Deve implementar onCreate: •  Inicializar View; •  Criar os elementos da tela;

• Deve ser informado no AndroidManifest.xml

Activity

Page 68: Aulas Google Android

• Cada Activity é adicionada ao activity stack

Page 69: Aulas Google Android

Finish()

Por exemplo de pause: - Ligação

Activity encerrada pelo sistema

Page 70: Aulas Google Android

Tela 1 Tela 2

Page 71: Aulas Google Android

• Para navegarmos entre várias telas, utilizaremos os seguintes métodos:

startActivity(intent); •  Pode enviar parâmetros •  Exibe uma nova activity

startActivityForResult(intent,codigo); •  Pode enviar parâmetros •  Exibe uma nova activity •  Espera um retorno da mesma

Page 72: Aulas Google Android

• Para se enviar parâmetros utiliza-se a classe Intent em união com a Bundle, ou não;

• É similar a um HashMap;

Valor INT e STRING

Enviando parâmentros

Page 73: Aulas Google Android

• Para enviar parâmetros • É similar a um HashMap;

Valor Boolean

De forma abreviada

Page 74: Aulas Google Android

Captando resultados de outras telas

Page 75: Aulas Google Android

Iniciando outra tela esperando resposta

Page 76: Aulas Google Android

• Utiliza-se o método setResult(codigo, intent); •  Em seguida chama o método finish();

Retornando valores

Ou sobrescreve o método onBackPressed e não chama o finish();

Page 77: Aulas Google Android

• Capturando o retorno •  onActivityResult(int requestCode, int resultCode, Intent data); •  Efetua a leitura do intent de acordo com resultCode •  requestCode = codigo da Intent do

startActivityForResult(intent, codigo);

A result code specified by the second activity. This is either RESULT_OK if the operation was successful or RESULT_CANCELED if the user backed out or the operation failed for some reason.

Page 78: Aulas Google Android

Mão no código J •  Transforme sua aplicação desktop em mobile;

• Exportar o modelo de Formas Geométricas: •  Triangulo (lib);

•  Quadrado (lib); •  CheckBox perguntando se deve calcular o volume (L x L x L)

•  Prisma e Circulo (na mesma tela- usar radiobutton): •  prisma (Área total = A1 + 2 * A2) •  circulo(Área total = 3.14 * Raio * Raio)

Page 79: Aulas Google Android

ListActivity

Page 80: Aulas Google Android

•  Exibe dados em forma de lista;

•  Subclasse de Activity;

•  Já possui métodos relacionado ao componente ListView; •  Já possui barra de rolagem;

•  Método setContentView(listView), é chamado automático;

•  Necessário um ListAdapter; •  Fazendo a ligação entre o ListView e os

dados.

ListActivity

Page 81: Aulas Google Android

Adapter ??

O Adapter permite que classes com interfaces incompatíveis

possam interagir.

Page 82: Aulas Google Android

ListActivity

• Um rápido exemplo…

Array com itens do ListView (Lista)

Page 83: Aulas Google Android

ListActivity

• Um rápido exemplo…

Page 84: Aulas Google Android

Personalizada?

X Java como programar Novatec X

Cada item pode ter essa estrutura?

Page 85: Aulas Google Android

Criando Layout personalizados para ListView

Page 86: Aulas Google Android

Criando o layout_list.xml

Page 87: Aulas Google Android

• Criando a classe Icones •  Representando cada item da lista

Page 88: Aulas Google Android

• Criando o a classe Icones (Continuação) •  Representando cada item da lista

Page 89: Aulas Google Android

Nosso Adapter

Page 90: Aulas Google Android

• Criando o a classe IconesAdapter (Continuação) •  Adaptor para a List

Page 91: Aulas Google Android

• Criando o a classe IconesAdapter (Continuação)

Page 92: Aulas Google Android

• Criando o a classe IconesAdapter (Continuação) •  Adaptor para a List

Page 93: Aulas Google Android

Configurando a Activity de Exibição

Page 94: Aulas Google Android

Configurando o clique no item da Lista (ListActivity)

Page 95: Aulas Google Android

Mão no Código J

•  Crie um novo Projeto: •  Criar uma tela de Login, antes de visualizar

a lista de livros;

•  Listar livros com imagem da capa, editora, edição e titulo;

•  Ao clicar em um item, navegar para a respectiva tela de detalhamento (titulo, autor, capa, resumo);

X Java como programar Edição 3

Item da Lista

Detalhamento

X Java como programar

Resumo Resumo Resumo Resumo Resumo Resumo

Novatec - Edição

Novatec

Ler Exibir: Leitura autorizada

Page 96: Aulas Google Android

Intents O Que mais elas podem fazer?

Page 97: Aulas Google Android

• Representa uma “ação”, que será executada pela aplicação em conjunto com o sistema operacional;

• Exemplos: •  Abrir uma nova tela startActivity(intent); •  Efetuar uma ligação; •  Abrir o browser; •  Abrir um mapa; •  …….

Intents

Page 98: Aulas Google Android

ACTION_CALL ACTION_VIEW ACTION_SEND ACTION_DIAL ACTION_WEB_SEARCH

Exemplos de Ações

Page 99: Aulas Google Android

• Algumas das atividades/intenções precisam de autorização/permissão:

•  Internet: •  android.permission.INTERNET

•  Contatos: •  android.permission.READ_CONTACTS

•  Ligação: •  android.permission.CALL_PHONE

Intents

Page 100: Aulas Google Android

Abrindo o browser

Page 101: Aulas Google Android

•  Faça uma ligação •  Ação: Intent.ACTION_CALL; •  URI: “tel:numerodesejado”; •  android.permission.CALL_PHONE

Uri uri= Uri.parse(“tel:88074562”); new Intent(Intent.Action_CALL, uri); startActivity(intent);

Fazendo ligação

Page 102: Aulas Google Android

• Adicionar opção de buscar livros na internet (no google);

• Adicionar opção de ligar para o desenvolvedor da app.

Mão no código

Page 103: Aulas Google Android

Notifications

http://developer.android.com/guide/topics/ui/notifiers/notifications.html

Page 104: Aulas Google Android

Notifications

•  Classe: android.app.Notification

•  Exibi uma mensagem na barra de status;

•  Possui um conteúdo/mensagem;

•  Uma Intent pode ser disparada ao clicar;

•  Aplicação em segundo plano disparar um Alerta;

Page 105: Aulas Google Android

Estrutura da

Notificação

Page 106: Aulas Google Android

Requisitos Necessários

•  Icone Pequeno

•  Titulo

• Mensagem

Page 107: Aulas Google Android

Criando

Page 108: Aulas Google Android

Flags

http://developer.android.com/reference/android/app/PendingIntent.html

Page 109: Aulas Google Android

Após acionada deve-se cancelar a notificação

Ou adicionar no onDestroy(), para encerra junto com a Activity que a iniciou!

Page 110: Aulas Google Android

Mão no código J •  Faça com que ao abrir a tela de detalhamento de livros

uma notificação seja disparada, e caso o usuário clique o mesmo seja redirecionado para o google com a lista de resultados referentes ao nome do livros.