Aulas Google Android
-
Upload
iury-teixeira -
Category
Technology
-
view
978 -
download
0
description
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.