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

Upload: iury-teixeira

Post on 18-Nov-2014

978 views

Category:

Technology


0 download

DESCRIPTION

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

TRANSCRIPT

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.