Upload
iury-teixeira
View
976
Download
0
Embed Size (px)
DESCRIPTION
Aulas ministradas na especialização de dispositivos móveis. Plataforma, Activity, Intent, Notification
Citation preview
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.