Desenvolvimento de aplicações na plataforma Google

Propaganda
Desenvolvimento de
aplicações na plataforma
Google Android
Rafael M. Lins
Manoel Taenan
Prof. Dr. Fábio Gomes
Design by Rafael M. Lins
Autores
• Rafael Madureira Lins de Araújo
– Bla bla bla
• Manoel Taenan
– Bla bla bla
• Prof. Dr. Fábio Gomes
– Bla bla bla
Introdução
• Google Android OS, também chamado
apenas de Android, é um sistema
operacional de código aberto para
dispositivos móveis baseado em uma
versão modificada do Linux
• Provê uma infraestrutura robusta de
execução de aplicações Java com uma VM
especial chamada Dalvik.
• Atualmente é a plataforma que mais
cresce no mundo
Mais informações: http://www.dalvikvm.com/
1/2
Introdução
• Atualmente, a plataforma Google Android é
mantida pela OHA (Open Handset Alliance),
um grupo formado por mais de 40 empresas
que se uniram para inovar e acelerar o
desenvolvimento de aplicações e serviços
para dispositivos móveis
• Android SDK é o kit de desenvolvimento que
disponibiliza as ferramentas e APIs
necessárias para desenvolver aplicações para
a plataforma Google Android, utilizando a
linguagem Java
2/2
Arquitetura
1/2
Arquitetura
• Linux Kernel
– Sistemas e subsistemas de baixo nível, drivers,
acesso direto ao hardware, etc.
• Ambiente de Execução e Bibliotecas
– Dalvik VM, Serviços de Alto Nível
• Arcabouço de Aplicações
– Interface do Android para tudo descrito
anteriormente
• Aplicações
– São implementadas utilizando os Arcabouços
2/2
Ambiente de Desenvolvimento
• Eclipse IDE
– IDE mais utilizada entre os desenvolvedores Java
• Eclipse Android Development Toolkit (ADT)
– Parte do Eclipse Google Plugin
– Prover editores gráficos, utilitários para auxiliar na
instalação de componentes, deployment, etc.
• Update Site: https://dl-ssl.google.com/android/eclipse/
• JDK
– Versão 1.5 (Java 5)ou superior
1/2
Ambiente de Desenvolvimento
• Android SDK
– Gerencia componentes de desenvolvimento
– Gerencia máquinas virtuais para testes
– Gerencia montagem dos pacotes APK
– Instalado automaticamente pelo Eclipse
Google Plugin, ou pode ser baixado em
http://developer.android.com/sdk
– Recomenda-se instalar os SDK da versão mais
atual do Android e a versão 2.1 e/ou 2.2 e/ou
2.3.3
2/2
Componentes de Aplicações
• Três componentes-chave:
– Activity: Componentes que interagem com o
usuário
– Service: Componentes que rodam em
segundo plano
– Intent: Interliga Activities e/ou Services
Conceitos Básicos
• Activity
– Representa uma tela da aplicação
• Serve de container para elementos visuais
– android.view.View: Classe base para os
elementos visuais como Botões, Listas, etc.
1/4
Conceitos Básicos – Estrutura do Projeto
/src
Código-fonte Java da sua aplicação
Android <versão>
Bibliotecas de API e SDK do Android
R.java
Classe autogerada que contém
constantes de Resources da aplicação
/res
Resources da aplicação (imagens,
textos, etc.)
/drawable-<ldpi, mdpi, hdpi>
Imagens que você pretende utilizar
/layout
Arquivos XML de layout das suas
Activities
/values
Arquivos XML com valores estáticos
do sistema
AndroidManifest.xml
Arquivo de Manifesto da aplicação
(armazena informações de permissões,
activities, services e outros)
<pacote>
<pacote>
2/4
Conceitos Básicos
• R.java
– Classe autogerada pelo ADT
– Mantém uma lista de constantes que são
utilizadas pela aplicação
• IDs de objetos de tela, IDs das imagens do projeto,
IDs das contantes de String (i18n)
– Não pode ser alterada manualmente
– Por causa dela, utilize apenas nomes
que_sigam_este_formato (minúsculas separadas por underline)
3/4
Conceitos Básicos
• AndroidManifest.xml
– Armazena metainformações sobre a aplicação
– Todas as Activities tem que ser inclusas nele
– Todos os Services tem que ser inclusos nele
– Todas as permissões devem ser inclusas nele
4/4
Interface com o Usuário
• Existem vários elementos de tela préprontos e formas de se implementar seus
próprios elementos de tela
• android.view.View e
android.view.ViewGroup são as classes
base dos widgets (elementos de tela)
– Os padrão normalmente se chamam
AlgumaCoisaView
– TextView, EditView, ListView, MapView, ...
1/6
Interface com o Usuário
• Para facilitar a organização, recomenda-se
que todo elemento esteja dentro de um
Layout
– Normalmente LinearLayout ou TableLayout
LinearLayout configurado como
layout Horizontal: 1 Elemento
por linha
2/6
Interface com o Usuário
Telas podem ser montadas
programaticamente ou via XML
XML pode ser montado pelo criador
visual de telas. Cada XML representa
uma tela e seus componentes.
Nesta tela, temos um layout linear e
dentro 5 elementos, nesta ordem:
- TextView
- EditText
- TextView
- EditText
- Button
Arquivo login.xml
3/6
UI – Activity: Ciclo de Vida
onCreate(), onStart(),
onRestart()
A Activity veio para primeiro plano
(origem determina qual método)
onResume()
A Activity retornou ao primeiro plano
após uma chamada a onStop()
onPause(), onStop()
A Activity saiu de primeiro plano em
virtude de uma ação do usuário ou
intervenção do S.O. (uma chamada,
por exemplo)
onDestroy()
A Activity será finalizada.
4/6
Interface com o Usuário
• Por padrão a primeira tela mostrada é a
main.xml
– Segunda linha de código do método
onCreate() padrão
• Você sempre deve exibir uma tela quando
iniciar uma Activity
setContentPane()
– Caso não queira uma tela, você está criando
um Service
5/6
Interface com o Usuário
Interações com o usuário são
realizadas diretamente com os
elementos de tela
No exemplo ao lado, pegamos uma
das caixas de texto utilizando o
método findViewById() passando
como parâmetro a constante do ID da
caixa de texto (configurada no editor
de tela e gravada na classe R)
Vale lembrar que sempre se deve fazer
o cast para o tipo correto de elemento
De posse do elemento, chamamos os
métodos dele e executamos nossa
lógica.
Dica: Os IDs ficam todos na classe R e são únicos
dentro do sistema. Por isso, faça um padrão de
nomenclatura para não se perder. Neste exemplo
usamos layout_tipoNome onde layout = o nome do
layout (login.xml), tipo = EditView (edt) e nome =
“Login”: login_edtLogin
6/6
UI - Eventos
Como quase toda UI a do Android
funciona baseada em Eventos
Eventos nada mais são que métodos
chamados pelo S.O. quando
determinada interação é feita pelo
usuário.
Esta é a parte chata do
desenvolvimento de Interfaces com o
Usuário, e a “complicada” também.
Na verdade, só não é algo comum do
desenvolvimento em Java criar classes
anônimas que implementam apenas
um método.
Eventos sempre começam com “on”
onClickListener
onLongClickListener
E têm uma classe correspondente:
android.view.View.OnClickListener
android.view.View.OnLongClickListener
AndroidManifest.xml
Todas as Activities e Services devem
estar presentes no arquivo
AndroidManifest.xml
Esta tarefa é feita automaticamente
pelo ADT quando você usa o wizard
de criação de Activity. No caso de
Services eles tem que ser inclusos
manualmente.
Para incluir você mesmo utilize a
interface gráfica de edição do
AndroidMainfest.xml ou inclua o
XML respectivo
Se algum dia você fizer uma Activity
ou Service que não está sequer
abrindo, verifique se ele está incluído
no AndroidManifest.xml
Intents
• Toda a troca de informações entre
Activities e Services é feita através de um
objeto chamado Intent
– Ele representa a sua intenção de executar uma
ação. Essa ação pode ser apenas passar um
parâmetro até pedir para o usuário escolher
um número de telefone na agenda, um envio
de SMS e até download
• Fora passagem de parâmetros
praticamente toda Intent requer uma
Permissão
Intents
Usar Intents para passagem de
parâmetros é bastante simples.
Crie uma instância de Intent passando
como parâmetro ao construtor quem
tem a intenção e para quem será
enviada a Intent: this (você) e
SegundaTela (quem vai receber esta
Intent)
Depois disso basta chamar
startActivity() e enviar sua
Intent como parâmetro. A Activity
especificada será iniciada e receberá a
Intent e seus parâmetros.
Para adicionar parâmetros, basta
chamar putExtra():
intent.putExtra(“exemplo”, “XPTO”);
Para ler, use getExtra():
intent.getExtra(“exemplo”);
Intents
• O Android traz uma vasta gama de Intents
nativas
• Intent Nativa são Intents que “alguém vai
atender” como por exemplo abrir um
endereço da Web
– Quem vai abrir? O Browser Nativo, Google
Chrome, Dolphin HD, Opera, Opera Mini? Não
importa, o que importa é atender.
Intents
• A maioria das Intents nativas requerem
permissões
– INTERNET: Permissão para qualquer coisa
relacionada a Internet. Desde abrir Sockets
(baixo nível) a simplesmente abrir um website
– CONTACT_LIST: Acessar a lista de contatos,
pedir para o usuário selecionar um contato de
sua lista de contatos
Permissões
• Permissões devem ser expressas no
AndroidManifest.xml e quando alguém
instalar seu aplicativo, a Google Play Store
irá pedir permissão do usuário para que
seu aplicativo tenha acesso ao que você
precisa
– Infelizmente algo chato porém necessário
– Infelizmente, também, algumas permissões
não são claras nem para o desenvolvedor nem
para o usuário
Intents e Permissões
Permissões
Esta é a lista incompleta de permissões requisitadas pelo aplicativo do
facebook. Ao instalar, você dá ao aplicativo permissão para tudo isso.
Permissões
Para gerenciar permissões, abra o
arquivo AndroidManifest.xml
Vá até a aba Permissions (Permissões)
Existem vários tipos de permissões no
Android. As que vamos precisar são
Uses Permissions (Permissão de Uso)
que são representadas pelo ícone U
verde.
Clique no Ícone U ou, se preferir, em
Add... e escolha Uses Permission
Depois basta escolher a permissão
que você precisa na lista. Na imagem,
escolhemos a permissão para acesso a
Internet
Notificações
São pequenas mensagens que são
mostradas discretamente ao usuário e
ficam armazenadas na área de
notificações do sistema.
O exemplo mais expressivo de
notificação é a notificação mostrada
quando chega um SMS no celular. O
Android mostra 1 ou 2 linhas do texto
da mensagem na barra superior e
depois um ícone de uma carta,
indicando que há uma notificação de
nova SMS.
Ao se clicar numa notificação a mesma
dispara uma Activity e a notificação
deve remover-se da área de
notificação.
O texto, título e ação da mesma pode
ser atualizado a qualquer momento
A Activity é que é responsável por
retirar a notificação da área de notificação
Download