Aulas Google Android

Post on 18-Nov-2014

976 views 0 download

description

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

Transcript of Aulas Google Android

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

Nosso objetivo

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

componentes de desenvolvimento de Apps.

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

Android Sistema Operacional

Android, Inc.

Open Source

Código Proprietário?

Java !? Linux

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

Mercado do Android

2012

66,4 % dos Devices

Mercado do Android

2013

78,4 % de aparelhos com AndroidOS

15,6 % iOS

2014 – previsão – Fonte : Gartner

onde Android?

Smartphones e phablets

Tablets

Wearable Devices

Internet das Coisas

iQon System

Arquitetura do AndroidOS

• 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

•  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

Exportação

Prof. Iury Teixeira

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

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;

Versões X API

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

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

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;

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

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

AVD Manager • Android Virtual Device

•  Gerenciador de máquinas(devices) virtuais

• 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

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

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

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

Arquitetura da App

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)

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

O que significa essas linhas?

Pode ser executada isoladamente, ponto inicial

A Activity estará na tela inicial

AndroidManifest.xml

layouts

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;

strings

•  /res/values/string.xml

•  Muito importante para internacionalização;

Chave Valor

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

Classe R

Pixels, densidades, …

drawable

Pixel??

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

Pilhas de Densidade

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

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

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

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

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

Criando um AVD

1º Passo

Criando um AVD

2º Passo

Executando o projeto

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

Activity Principal

Capturando componentes

Arquivo Java ( Principal.java )

Arquivo XML ( layout/main.xml )

Evento click/tap do Button

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

Componentes Visuais

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;

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

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

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;

Tela Anterior

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

RadioButton

Activity

• 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

• Deve herdar de Activity [ou subclasses];

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

• Deve ser informado no AndroidManifest.xml

Activity

• Cada Activity é adicionada ao activity stack

Finish()

Por exemplo de pause: - Ligação

Activity encerrada pelo sistema

Tela 1 Tela 2

• 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

• 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

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

Valor Boolean

De forma abreviada

Captando resultados de outras telas

Iniciando outra tela esperando resposta

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

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

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)

ListActivity

•  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

Adapter ??

O Adapter permite que classes com interfaces incompatíveis

possam interagir.

ListActivity

• Um rápido exemplo…

Array com itens do ListView (Lista)

ListActivity

• Um rápido exemplo…

Personalizada?

X Java como programar Novatec X

Cada item pode ter essa estrutura?

Criando Layout personalizados para ListView

Criando o layout_list.xml

• Criando a classe Icones •  Representando cada item da lista

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

Nosso Adapter

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

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

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

Configurando a Activity de Exibição

Configurando o clique no item da Lista (ListActivity)

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

Intents O Que mais elas podem fazer?

• 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

ACTION_CALL ACTION_VIEW ACTION_SEND ACTION_DIAL ACTION_WEB_SEARCH

Exemplos de Ações

• 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

Abrindo o browser

•  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

• 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

Notifications

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

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;

Estrutura da

Notificação

Requisitos Necessários

•  Icone Pequeno

•  Titulo

• Mensagem

Criando

Flags

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

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

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

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.