Beruflich Dokumente
Kultur Dokumente
Android
Bsico
Marcelo
Alves
malves.info@gmail.com
@malvesinfo
Agenda
Introduo
Congurao
do
Ambiente
Conceitos
Activity
Intents
Interface
Grca
(Layouts
e
Views)
IntentFilter
Handler
SQLite
ContentProvider
Plataformas Mobile
Introduo
Celulares
a
cada
ano
vem
crescendo
tanto
em
numero
quanto em qualidade e tecnologia. Com esse avano tecnolgico hoje possvel ter de tudo em um nico aparelho mvel como: Cmera Digital, Bluetooth, Jogos, GPS , Acesso a Internet , ler e-mails TV digital.
Introduo
E
para
acompanhar
esse
mercado
que
esta
a
todo
vapor, empresas da alta tecnologia investem pesado no desenvolvimento de plataformas livres, exveis, que tenham grande evoluo tecnolgica. E como nesse mercado inovador sempre tem uma grande empresa chamando a ateno, dessa vez foi a Google quem chamou a ateno com o lanamento do Android, sua nova plataforma para dispositivos mveis.
O
que
Android?
Android
uma
plataforma
para
dispositivos
mveis
desenvolvida pela Google e contm um sistema operacional baseado em Linux. Contm uma interface rica com diversos aplicativos instalados. Fcil de ser utilizado com tudo que de mais novo no mercado para dispositivos mveis. Possibilita a utilizao da linguagem Java para o desenvolvimento de aplicativos Android.
Evoluo Android
1.5 Cupcake
2.3 Gingerbread
Evoluo Android
3.x - Honeycomb
Evoluo Android
telefonia liderados pelo Google. Esse grupo tem o objetivo de denir uma plataforma aberta , moderna e exvel para o desenvolvimento de aplicaes coorporativas.
Android a primeira plataforma para aplicaes mveis completamente livre de cdigo aberto. Programadores podem baixar e fazer melhorias, assim como empresas no tero custos em utilizar a plataforma em seus dispositivos e ainda podem personalizar da forma que quiserem sem precisar compartilhar estas alteraes.
Arquitetura Android
SDK
Android
Alm
de
manter
a
plataforma,
a
Google
tambm
disponibiliza um SDK para o desenvolvimento de aplicaes para o Android. Com SDK disponvel a linguagem utilizada nada mais nada menos que a famosa linguagem JAVA. Google tambm disponibilizou um plugin para o Eclipse chamado ADT(Android Development Tools) para facilitar no desenvolvimento de aplicativos para Android.
sim utilizado a maquina virtual Dalvik . Depois que os bytecode (.class) so compilados os mesmo so convertidos para o formato .dex (Dalvik Executable) que nada mais que uma aplicao Android compilada. Depois da compilao gerado um arquivo .apk (Android Package File) que compacta arquivos compilados .dex e recursos utilizados pelo prprio desenvolvedor.
http://developer.android.com
Instalando
o
SDK
Aps
fazer
o
download
do
SDK
,
basta
descompactar
https://dl-ssl.google.com/android/eclipse/
clicar em Next....Next.
Congurando
ADT
Para
congurar
o
ADT
entre
no
menu
Window
/
Congurando
ADT
Com
ADT
instalado
e
congurado
j
possvel
utilizar
as ferramentas oferecidas pelo plugin, o emulador e principalmente iniciar o desenvolvimento de aplicativos Android.
Congurando
Emulador
Para
utilizar
o
emulador,
necessrio
antes
incluir
o
AVD(Android Virtual Device) com TARGET da verso desejada do SDK ou com recursos especcos Ex.: Google Maps. A partir da verso 1.5 do SDK comeou a vir embutido a verso anterior. Como estamos utilizando a verso 1.6 veio junto ao SDK a verso 1.5. Isso til para aplicaes sua que ainda utilizam a verso anterior e no se adaptaram a verso mais atualizada.
Congurando
Emulador
Para
cadastrar
um
AVD
novo
acesse
o
menu
Windows / Android SDK and ADV Manager. Logo aps clique no boto NEW.
Congurando
Emulador
Na
incluso
do
AVD
informe
uma
nome
para
o
mesmo e escolha a TARGET da verso atual do SDK. Clique em Create AVD para concluir.
Iniciando
Emulador
Aps
cadastrar
selecione
o
AVD
cadastrado
e
clique
Emulador
Esta
disponvel
no
emulador
a
maioria
dos
recursos
que um celular fsico possui. Desde browser, contacts, Message, E-mail e muito mais.
Emulador
Demonstrao
de
Browser
Primeiro
Projeto
Neste
primeiro
exemplo
ser
demonstrado
como
se
cria um projeto no Eclipse, a estrutura de diretrios e arquivos padres utilizados em um projeto Android.
Criando
Projeto
Para
criar
um
projeto,
clique
no
menu
File
/
New
/
Criando
Projeto
Na
prxima
tela
ser
exibidos
os
seguintes
campos:
Project
Name:
Nome
do
projeto
que
ser
criado.
Build
Target:
Pode
ser
selecionado
qual
verso
do
SDK
que
esse
projeto
ir
utilizar,
no
nosso
caso
iremos
usar
a
Target
Android
1.6.
Application
Name:
Ser
o
titulo
da
aplicao.
Esse
titulo
aparecer
quando
a
aplicao
for
instalada
no
emulador.
Package
Name:
Nome
do
Pacote
em
que
a
activity
principal
far
parte.
Importe
que
esse
nome
seja
nico
para
identicao
da
mesma.
Create
Activity:
Nome
da
activity
principal
que
servir
como
ponto
inicial
da
aplicao.
Uma
aplicao
pode
ter
uma
ou
vrias
activities
que
representam
as
telas
de
uma
aplicao.
Criando Projeto
Estrutura
do
Projeto
Essa
a
estrutura
de
um
projeto
Android.
Estrutura
do
Projeto
src:
Pasta
que
contem
as
classes
Java
do
projeto.
assets:
Este
diretrio
guarda
arquivos
opcionais
do
projeto
como
por
exemplo
bibliotecas
de
terceiros.
res:
Diretrio
que
guarda
os
recursos
da
aplicao
que
so:
drawable:
Diretrio
que
com
imagens
da
aplicao.
layout:
Contm
os
arquivos
XML
para
a
criao
de
layouts das telas da aplicao. values: Contm os arquivos XML usados para a internacionalizao da aplicao e conguraes.
Arquivos
do
Projeto
/res/layout/main.xml
Esse
arquivo
dene
a
interface
grca
da
tela.
Por
padro
na
criao
do
projeto
criado
um
<TextView>
para
exibir
uma
mensagem
de
texto.
A
mensagem
buscada
como
referencia
no
atributo
android:text=@string/hello
,
utilizando
a
chave
hello
localizada
no
arquivo
strings.xml
.
Poder
ser
criado
outros
arquivos
xml
de
layouts.
Ao
incluir
um
novo
layout
no
diretrio
/res/layout/
automaticamente
ser
criado
uma
referncia
na
classe
R.java.
Arquivos
do
Projeto
/res/layout/main.xml
Arquivos
do
Projeto
/res/values/strings.xml
Este
arquivo
contem
as
mensagens
da
aplicaes.
Todos
os
textos
so
localizados
neste
arquivo,
e
cada
um
tem
seu
identicador
@string/chave.
Arquivos
do
Projeto
A
classe
R.java
tem
constantes
que
referenciam
os
recursos localizados na pasta res do projeto, como por exemplo as mensagens denidas no arquivo strings.xml. Todas as vezes que um recurso atualizado ou adicionado a classe R.java ser atualizada automaticamente com referencia a esse recurso. ESTA CLASSE NO PODE SER ALTERADA MANUALMENTE!!!!
Arquivos
do
Projeto
Classe
R.
Arquivos
do
Projeto
AndroidManifest.xml
Este
o
arquivo
principal
da
aplicao
e
responsvel
pela
congurao
do
projeto
como
por
exemplo:
Incluso
da
activity
principal
e
de
todas
as
activities,
icone
da
aplicao,
nome
da
aplicao,
entre
inmeras
conguraes.
AcNvity
Na
criao
do
projeto
gerado
automaticamente
uma
classe que representa a tela (Activity) principal do projeto. esta classe que ser a tela inicial. Mas no impede de fazer esse processo manualmente utilizando o arquivo AndroidManifest.xml Para cada tela criada para aplicao dever ser lha da classe android.app.Activity. Cada Activity responsvel por controlar o estado ,eventos da tela e denir qual View ser responsvel por desenhar a interface grca do usurio. Ao herdar de Activity ser necessrio implementar o mtodo onCreate(bundle) onde o mesmo chamado automaticamente quando a Activity criada.
AcNvity
Mtodo
setContentView(view)
informando
a
constante R.layout.main, faz com que a view denida no arquivo XML seja exibida.
AndroidManifest
obrigatrio
que
cada
Activity
do
projeto
esteja
AndroidManifest
Tag
<intent-lter>
customiza
como
a
activity
ser
iniciada.
A
ao
MAIN
signica
que
a
activity
PrimeiroExemploActivity
pode
ser
iniciada
isoladamente,
como
ponto
inicial
da
aplicao.
<action
android:name="android.intent.action.MAIN"
/>
Executando
Projeto
Para
executar
um
projeto
Android
no
emulador,
clique com o boto direito no projeto, selecione o menu Run as/ Android Application.
chamada de activity stack. Ento se uma nova activity iniciada a que estava em execuo ca abaixo da nova. Se uma activity estiver no estado de pausada, o sistema operacional pode decidir encerrar o processo. Um exemplo tpico seria para liberar recursos e memria para outras aplicaes.
layout, surge a necessidade recuperar os objetos denidos no arquivo dentro do codigo-fonte. Como por exemplo: Recuperar um ImageView quando pretendemos denir uma imagem, entre outros. O Exemplo a seguir adicionamos a tag <ImageView> no arquivo de layout que serve para exibir uma imagem na tela. Foi denido alm da largura e altura o id que servir para recuperarmos o ImageView em tempo de execuo.
layout. Isso tudo feito automaticamente quando as modicaes so feitas no arquivo XML.
AcNvity
-
Navegao
Para
fazer
a
navegao
entre
Activities
necessrio
utilizar o mtodo startActivity(Intent) Intents usado na inteno de executar algo. Esse objeto encapsula qual ser a inteno, inteno informada no momento em que for criada uma instancia da Intent. Para este exemplo iremos utilizar a Intent para abrir uma outra Activity.
Activity que ser aberta. Intent contm metdos de HashMap. Onde informado a chave + valor. E na Activity que ser aberta pode-se recuperar esse valor atravs da mesma chave.
Recuperando
Intent intent = getIntent(); Bundle bundle = intent.getExtras(); String value = bundle.getString("meu_valor");
ListAcNvity
Activity
que
exibe
uma
lista
com
itens.
Internamente
essa Activity utiliza um ListView, assim no precisa criar um layout contendo um ListView. Ento no precisa chamar setContentView. Para utilizar a ListActivity preciso estender de android.app.ListActivity. Para incluir na lista os itens que sero exibidos necessrio utilizar um Objeto que seja lho de ListAdapter. esse adaptador que ir fazer todo o trabalho de incluir/exibir os dados na lista.
ListAcNvity
-
Adapter
Caso
necessite
exibir
itens
de
forma
diferente
do
que
o Android oferece, basta criar uma classe que seja um Adaptador. Normalmente utiliza-se o BaseAdapter nas classe que ser o adaptador. Para personalizao do item feita dentro do mtodo sobrecarregado getView(...). Esse mtodo chamado quando a lista for exibir cada item dentro dela.
ListAcNvity
-
SinmpleCursorAdapter
SimpleCursorAdapter
ir
mapear
o
que
estive
dentro
do
cursor
atravs
das
colunas
com
algum
componente
denido
em
um
layout.
Cursor
pode
ser
recuperado
atravs:
Da
dados
quando
executado
alguma
query
do
banco
de dados recuperando valores. A lista de contatos do telefone ira retornar um Cursor Outras aplicaes que compartilhem dados
Intents
inteno
de
executar
alguma
ao.
Essa
ao
envia
para o SO do Android e ele ir vericar a Intent e executar de acordo com o que foi congurado na Intent. Muitos servios do SO Android necessitam da intente para serem executado, o mais comuns so as Atividades (Activity) e Servios (Services)
Intents
-
NaNvas
Android
permite
que
aplicativos
executem
aplicaes
IntentFilter
Permite
criar
um
ltro
para
executar
uma
determinada ao. Muito utilizada para executar servio de outras aplicaes ou do SO Android Intent pode utilizar IntentFilter para executar uma Activity quando no souber o nome da Activity ou quando no tiver acesso a Activity. Exemplo: Abrir a Activity de uma outra aplicao.
IntentFilter
Para
criar
um
ltro
onde
ir
abrir
uma
activity,
necessrio
denir
na
declarao
da
Activity
a
TAG
<intent-lter>
dentro
da
declarao
da
Activity
no
AndroidManifest.
<activity android:name=MinhaActivity"> <intent-filter> <action android:name=ABRIR_ACTIVITY" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter>
IntentFilter
<action>
Ao
que
a
Intent
ir
realizar.
No
nosso
exemplo
foi
declarado
um
nome
para
a
ao
onde
a
activity
ser
executada
atravs
do
nome
declarado
ABRIR_ACTIVITY
<category>
utilizada
para
informar
a
Intent
como
ele
deve
executar
a
ao.
Como
executar
a
ao
no
cdigo:
Intent intent = new Intent(ABRIR_ACTIVITY); startActivity(intent);
Interface
Grca
View
a
classe
me
de
todos
os
componentes
visuais
do
Android. Serve de base para esse componentes que so chamados de widgets (Botoes, TextView e etc). ViewGroup classe me dos gerenciadores de layouts (LinearLayout, RelativeLayout e etc). ViwGroup ser responsvel por organizar as Views que sero exibidas para o usurio.
Interface Grca
Interface Grca
atravs
do
ListAdapter.
Para
essa
ViewGroup
necessrio
utilizar
um
adaptador
para
que
os
item
sejam
exibidos.
<?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/ android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="90dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" />
gerenciador das abas em exibio, e cada aba ser uma instancia de TabHost onde dever ser includo o contedo da aba. Para a utilizao de abas, necessrio criar uma Activity que herda de TabActivity
componente
em
uma
tela
permitindo
o
usurio
fazer
a
rolagem
para
a
visualizao
de
todos
os
componentes.
<?xml
version="1.0"
encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<EditText
android:id="@+id/editFilter"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Spinner
android:id="@+id/spinner1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<RadioButton
android:id="@+id/radioButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Opo
X"
/>
</LinearLayout>
</ScrollView>
colunas.
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/ android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1"> <TableRow> <TextView android:layout_column="1" android:text="Open..." android:padding="3dip" /> <TextView android:text="Ctrl-O" android:gravity="right" android:padding="3dip" /> </TableRow> <TableRow> <TextView android:layout_column="1" android:text="Save..." android:padding="3dip" /> <TextView android:text="Ctrl-S" android:gravity="right" android:padding="3dip" /> </TableRow> <TableLayout>
Views
TextView
Exibe
um
texto
na
tela.
Suas
principais
propriedades:
password android:autoLink Denie um link de acesso para: Web, e-mail, phone, map e all.
Views
EditText
View
utilizada
para
a
entrada
de
texto.
Pode
ser
alterada
a
forma
de
entrada
do
texto
atravs
do
propriedade
android:inputType,
com
as
seguintes
possbilidades:
textPassword
number
textEmailAddress
Entre
outros..
Views
Button
View
que
permite
a
utilizao/exibio
de
um boto na tela. ImageButton Tem o mesmo comportamento do Button mas exibe uma imagem no lugar do texto. CheckBox Exibe uma view com uma caixa de seleo. ToggleButton Exibe uma view parecida com o Check box, mas utilizado junto com texto, podendo fazer o controle de ON e OFF
Views
Spinner
Exibe
as
opes
no
formato
de
comboBox.
AlertDialog
Permite
a
exibio
de
alertas,
para
criar
um dialog necessrio criar uma instancia da classe: android.app.AlertDialog.Builder. Alert permite a incluso de titulo, descrio, imagem, botes e tambm a customizao.
Views
ProgressDialog
lha
de
AlertDialog
e
permite
Views
Menu/SubMenu
-
Permite
a
criao
de
menus
que
servir como atalho para acessar outras partes da aplicao. SubMenus sero opes a mais que um determinado menu ir oferecer para o usurio.
Banco
de
Dados
Android
utiliza
nativamente
o
banco
de
dados
SQLite,
alm
de
disponibilizar
de
APIs
que
possibilitam
a
manipulao
da
base
de
dados
Cada
aplicao
pode
criar
um
ou
mais
banco.
Ao
criar
seu
banco
o
mesmo
ser
salvo
no
diretrio
da
aplio
no
aparelho:
/data/data/pacote_da_app/databases
Banco
de
dados
pode
ser
criado
das
seguintes
formas:
Utilizando
uma
tool
SQLite
e
importando
o
banco
para
Banco
de
Dados
Para
criar
o
banco
de
dados
atravs
de
uma
tool
pode
Banco
de
dados
Abrindo
ou
criando
banco
de
dados:
SQLiteDatabase db = context.openOrCreateDatabase( meu_db, Context.MODE_PRIVATE, null);
Modos de permisso MODE_PRIVATE: Permite apena a aplicao utilizar o banco de dados MODE_WORLD_WRITEABLE: Qualquer um pode ler e escrever MODE_WORLD_READABLE: Qualquer um pode somente ler
disponibiliza
de
APIs
para
a
manipulao
da
base
de
dados.
Inserindo.
Para
inserir
dados
no
banco,
preciso
utilizar
o
objeto
ContentValues,
que
funciona
como
HashTable,
onde
dever
ser
includos
os
valores
de
acordo
com
o
Nome
da
Coluna
+
Valor:
ContentValues
values
=
new
ContentValues();
values.put("nome",
"Marcelo");
values.put("funcao",
"Engenheiro");
db.insert("funcionarios",
null,
values);
ContentValues
ContentValues values = new ContentValues(); values.put("nome", "Marcelo Alves"); values.put("funcao", "Professor"); db.update("funcionarios", values, "_id=?", new String[]{20"}); Parmetros de cada coluna informada na clusula Where
Clusula Where
group by having order by Colunas que devero retornar no resultado. Caso passe null todas sero retornadas
SharedPreferences
SharedPreference
pode
ser
usado
como
uma
opo
de
armazenamento de informaes. Os dados so salvos em arquivos do sistema, onde tudo gerenciado pela API SharedPreferences. Para salvar informaes no SharedPrefenreces, basta informar o nome do seu preferences para recuperar ou criar um novo e incluir os dados.
SharedPreferences
Criando
e
Incluindo
no
Preferences:
//Carregando
ou
criando
um
novo
preference
SharedPreferences
prefs
=
getSharedPreferences
("meu_pref",
MODE_PRIVATE);
//Salvando
preference
SharedPreferences.Editor
editor
=
prefs.edit();
editor.putBoolean("usuario_logado",
false);
editor.commit();
//Recuperando
dados
do
preferences
boolean
isLogado
=
prefs.getBoolean
("usuario_logado",
false);
Arquivos
Android
disponibiliza
na
activity
mtodos
para
a
manipulao de arquivos: