Sei sulla pagina 1di 68

Gabriel Santana Bonatto

Lucas Kazuo Yamashita

Sorocaba / S.P.
Outubro / 2015.

Sumrio
1. Introduo ...................................................................................................... 6
2. Ciclo de Vida de uma Activity ......................................................................... 8
3. Criando uma nova aplicao ........................................................................ 11
Trocar de tela utilizando um boto ................................................................ 16
Adicionar a classe da activity no manifest.xml .............................................. 18
Exerccio de navegao entre telas .............................................................. 24
4. Mensagem de Alerta .................................................................................... 25
5. Dialog ........................................................................................................... 26
6. Passando parmetros .................................................................................. 28
7. Criao e utilizao do banco de dados interno Sqlite ................................. 29
Insero de valores no banco de dados ....................................................... 30
Buscar valores do banco de dados............................................................... 34
SharedPreferences ....................................................................................... 40
Exerccio de pesquisa e insero no banco de dados .................................. 48
8. Banco de Dados ........................................................................................... 49
9. Logcat........................................................................................................... 53
10. Dispositivo Real .......................................................................................... 55
11. Maquina Virtual .......................................................................................... 56
12. SDK Manager ............................................................................................. 58
13. Interface Grfica ......................................................................................... 60
14. Classe R ..................................................................................................... 62
15. Build.gradle ................................................................................................ 63

16. Requisitos do sistema ................................................................................ 64


Windows ....................................................................................................... 65
Mac OS X ..................................................................................................... 65
Linux ............................................................................................................. 66
17. Saiba Mais.................................................................................................. 66
18. Referncias ................................................................................................ 67

FIGURAS

FIGURA 1: ARQUITETURA

SISTEMA OPERACIONAL ANDROID ........................... 7

FIGURA 2: CICLO DE VIDA DE UMA ACTIVITY ....................................................... 9


FIGURA 3:

MENU

FILE ...................................................................................... 11

FIGURA 4:

MENU NEW PROJECT ........................................................................ 12

FIGURA 5:

TELA NEW PROJECT ......................................................................... 12

FIGURA 6:

TELA NEW PROJECT

\ TARGET ANDROID DEVICES ............................. 13

FIGURA 7:

TELA NEW PROJECT

\ BLANK ACTIVITY ............................................. 13

FIGURA 8:

TELA NEW PROJECT

\ FINISH ............................................................ 14

FIGURA 9:

TELA NEW PROJECT

\ ERRO DE RENDERIZAO ................................ 14

FIGURA 10:

TELA NEW PROJECT

\ ACERTANDO ERRO DE RENDERIZAO 1 ....... 15

FIGURA 11:

TELA NEW PROJECT

\ ACERTANDO ERRO DE RENDERIZAO 2 ....... 15

FIGURA 11:

TELA NOVO LAYOUT ....................................................................... 16

FIGURA 12:

TELA NOVO LAYOUT

FIGURA 13:

TELA NOVA CLASSE ....................................................................... 17

\ RELATIVELAYOUT ......................................... 16

FIGURA 14: NOMEANDO NOVA CLASSE ............................................................. 17


FIGURA 15:

HERDANDO A CLASSE ACTIVITY DA NOVA CLASSE CRIADA .............. 18

FIGURA 16:

ANDROIDMANIFEST ........................................................................ 19

FIGURA 17:

INSERINDO O COMPONENTE BOTO NO LAYOUT .............................. 20

FIGURA 18: NOMEANDO COM UM ID EM ESPECIFICO ........................................... 21


3

FIGURA 19:

CLASSE MAINACTIVITY ................................................................... 22

FIGURA 20:

CLASSE ACTIVITY 2 ........................................................................ 22

FIGURA 21:

COLOCANDO ID EM ESPECIFICO PARA O BOTO CRIADO

FIGURA 22:

CLASSE ACTIVITY 2 ........................................................................ 24

FIGURA 23:

LAYOUT FINAL DO EXERCICIO ......................................................... 25

................. 23

FIGURA 24: FUNO MENSAGEMALERTA ......................................................... 26


FIGURA 25:

XML DO LAYOUT DO DIALOG ........................................................... 27

FIGURA 26:

FUNO DIALOG ............................................................................ 28

FIGURA 27: CONTEXT ....................................................................................... 28


FIGURA 28: INTENT E BUNDLE ......................................................................... 29
FIGURA 29: RECEBENDO PARMETROS ............................................................ 29
FIGURA 30: STRING DE CONEXO ...................................................................... 29
FIGURA 31:

COMANDO SQL

.............................................................................. 30

FIGURA 32:

TELA DO LAYOUT ........................................................................... 30

FIGURA 33:

CLASSE ACTIVITYINSERIR

FIGURA 34:

FUNO LIMPACAMPOS

FIGURA 35:

FUNO SALVACARRO ................................................................... 33

FIGURA 36:

TELA LISTVIEW .............................................................................. 34

FIGURA 37:

TELA LAYOUT _ LISTACARRO ........................................................... 35

.............................................................. 31

................................................................. 32

FIGURA 38: LIGAO ENTRE AS CLASSES CARRO E ACTIVITYEXIBIR .................. 36


FIGURA 39:

CLASSE CARRO ............................................................................. 36

FIGURA 40:

CLASSE ACTIVITYEXIBIR

FIGURA 41:

FUNO MYLISTADAPTER

FIGURA 42:

FUNO POPULATELISTACARROS .................................................. 39

FIGURA 43:

FUNO POPULATELISTVIEW

FIGURA 44:

FUNO SELECTITEMLISTA ............................................................ 40

FIGURA 45:

CLASSE LOGIN ............................................................................... 41

................................................................ 37
.............................................................. 38

......................................................... 39

FIGURA 46: LIGAO ENTRE AS CLASSES LOGIN E USERLOGIN ......................... 42


FIGURA 47:

CLASSE USERLOGIN

...................................................................... 43

FIGURA 48:

TELA LAYOUT _ LOGIN ..................................................................... 43

FIGURA 49: LIGAO ENTRE AS CLASSES LOGIN E USERLOGIN ......................... 44


4

FIGURA 50:
FIGURA

TELA LAYOUT _ CADASTRAR

51:

LIGAO

ENTRE

........................................................... 44
AS

CLASSES

LOGIN ,

USERLOGIN

ACTIVITYCADASTRAR ......................................................................................... 45

FIGURA 52:

CLASSE MAINACTIVITY ................................................................... 46

FIGURA 53:

FUNO LAYOUT ........................................................................... 46

FIGURA 54:

LIGAO ENTRE AS CLASSES LOGIN , USERLOGIN E MAINACTIVITY

FIGURA 55:

RESULTADO FINAL ......................................................................... 47

FIGURA 56:

VALORES TELA LOGIN .................................................................... 48

FIGURA 57:

INTENT .......................................................................................... 49

FIGURA 58:

ABRINDO ANDROID DEVICE MONITOR .............................................. 50

FIGURA 59:

ANDROID DEVICE MONITOR

FIGURA 60:

PERMISSO NO ANDROIDMANIFEST ................................................ 52

FIGURA 61:

SQLITESTUDIO ............................................................................... 53

.. 47

............................................................ 50

FIGURA 62: LOGCAT ......................................................................................... 53


FIGURA 63:

FUNO LOG ................................................................................. 54

FIGURA 64:

CREATE NEW LOGCAT FILTER

FIGURA 65:

ANDROID SDK MANAGER ................................................................ 55

FIGURA 66:

LOGCAT

FIGURA 67:

ABRINDO ANDROID DEVICE MONITOR .............................................. 57

FIGURA 68:

ANDROID DEVICE MONITOR

FIGURA 69:

LOCALIZAO ANDROID SDK MANAGER .......................................... 58

FIGURA 70:

DEFAULT SETTINGS

FIGURA 71:

ANDROID SDK MANAGER ................................................................ 60

FIGURA 72:

BUILD ............................................................................................ 62

FIGURA 73:

FILE

FIGURA 74:

BUILD. GRADLE (MODULE : APP ) ...................................................... 63

FIGURA 75:

CODIGO -FONTE DO BUILD .GRADLE ................................................. 64

........................................................ 54

........................................................................................ 56

/ RESET ADB ......................................... 58

....................................................................... 59

/ INVALIDATE CACHES /RESTART .............................................. 63

1. Introduo

O que o Android?

Um sistema operacional baseado em Linux;

Inicialmente uma startup comprada pela Google (2005) ;

Milhes de ativaes por dia, um bilho de aparelhos vendidos em 2014;

Em 22/outubro/2008 foi lanado o primeiro Android;

Aplicaes escritas em Java so compiladas em bytecodes Dalvik e


executadas usando a Mquina Virtual Dalvik ;

O Android est quase totalmente disponvel como cdigo aberto sob


licenas ora restritivas (GNU), ora permissivas (Apache, BSD).

Verses do Android
A partir da verso 1.5 foram escolhidos nomes de doces (ordem
alfabtica):

Cupcake

Donut

clair

Froyo

Gingerbread

Honeycomb

Ice Cream Sandwich

Jelly Bean

Kit kat

Lollipop

Arquitetura e Sistema Operacional Android

FIGURA 1: ARQUITETURA

S ISTEMA OPERACIONAL ANDROID

Android Studio

Aps dois anos de desenvolvimento, soluo oficial desde dezembro de


2014;

IDE baseada no IntellijIDEA e no Gradle Build System, com


customizaes especficas para o desenvolvimento Android;

Aposenta a soluo integrada anterior, baseada em Eclipse (ADT


Bundle) ;

Permite gerar o .apk de sada diretamente da IDE ou pela linha de


comando;

Permite unificar testes automatizados nos projetos, e executar os


mesmos pela IDE ou pela linha de comando;

Permite assinar o app para lojas de aplicativos;

Oferece editor visual WYSIWYG para criao das telas;

Compatvel com Linux, Mac e Windows.

(DEVELOPERS_2,2015)
7

2. Ciclo de Vida de uma Activity


A classe Activity quem gerencia a interface com o usurio, ela quem recebe
as requisies, as trata e processa.
Cada activity iniciada inserida no topo de uma pilha, chamada de activity
stack.
Um bom exemplo para entender melhor o ciclo de vida de uma activity, seria
quando voc esta no meio de um jogo e logo em seguida recebe uma ligao,
o Sistema Operacional trar como prioridade a ligao e deixar a aplicao no
pause ( onPause() ).
Sempre que uma activity est pausada o sistema operacional pode decidir
encerrar o processo, para por exemplo, liberar recursos e memria para outras
aplicaes. Caso esteja no mesmo jogo citado acima e repentinamente decidiu
abrir uma pgina de internet, o sistema operacional colocar no topo da pilha a
aplicao do browser e em segundo plano o jogo. Por algum motivo, o usurio
esquea-se de retornar ao jogo, caso o sistema operacional precise liberar
recursos de memria, o sistema operacional poder decidir encerrar o
processo do jogo. Nesse momento sua aplicao pode decidir salvar algumas
informaes ou no.

FIGURA 2: CICLO DE VIDA DE UMA ACTIVITY

onCreate() - a primeira funo a ser executada em uma Activity. Geralmente


a responsvel por carregar os layouts XML e outras operaes de
inicializao. executada apenas uma vez.

protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

onStart() - chamada imediatamente aps a onCreate() e tambm quando


uma Activity que estava em background volta a ter foco.
protected void onStart() {
super.onStart();
Log.i(TAG, getClassName() + ".onStart() chamado.");
}

onResume() - Assim como a onStart(), chamada na inicializao da Activity e


tambm quando uma Activity volta a ter foco. Qual a diferena entre as duas?
A onStart() s chamada quando a Activity no estava mais visvel e volta a ter
o foco, a onResume() chamada nas retomadas de foco.
protected void onResume() {
super.onResume();
Log.i(TAG, getClassName() + ".onResume() chamado.");
}

onPause() - a primeira funo a ser invocada quando a Activity perde o foco


(isso ocorre quando uma nova Activity iniciada).
protected void onPause() {
super.onPause();
Log.i(TAG, getClassName() + ".onPause() chamado.");
}

onStop() - S chamada quando a Activity fica completamente encoberta por


outra Activity.

10

protected void onStop() {


super.onStop();
Log.i(TAG, getClassName() + ".onStop() chamado.");
}

onDestroy() - A ltima funo a ser executada. Depois dela, a Activity


considerada morta ou seja, nao pode mais ser relanada. Se o usurio
voltar a requisitar essa Activity, um novo objeto ser contrudo.
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, getClassName() + ".onDestroy() chamado.");
}

onRestart() - Chamada imediatamente antes da onStart(), quando uma Activity


volta a ter o foco depois de estar em background.

protected void onRestart() {


super.onRestart();
Log.i(TAG, getClassName() + ".onRestart() chamado.");
}

3. Criando uma nova aplicao


Na primeira vez que o Android Studio iniciado, ele automaticamente entra na
tela de criao de um novo aplicativo. Caso no entre automaticamente, siga
os seguintes passos:
1. Clique em File:

FIGURA 3:

MENU

FILE

11

2. New Project:

FIGURA 4:

MENU NEW PROJECT

3. Digite o nome da aplicao e o nome da companhia:

FIGURA 5:

TELA NEW PROJECT

12

4. Selecione a SDK:

FIGURA 6:

TELA NEW PROJECT

\ TARGET ANDROID DEVICES

5. Selecione Blank Activity:

FIGURA 7:

TELA NEW PROJECT

\ BLANK ACTIVITY

13

6. Clique em finish:

FIGURA 8:

TELA NEW PROJECT

\ FINISH

Caso ocorra erro de renderizao:

FIGURA 9:

TELA NEW PROJECT

\ ERRO DE RENDERIZAO

14

Troque a verso do android usado para renderizar seu layout:

FIGURA 10:

TELA NEW PROJECT

\ ACERTANDO ERRO DE RENDERIZAO 1

Isso deve resolver o problema.

FIGURA 11:

TELA NEW PROJECT

\ ACERTANDO ERRO DE RENDERIZAO 2

15

Trocar de tela utilizando um boto


1. Criar um novo layout:
1.1.

Boto direito na pasta layout -> New -> Layout Resource File:

FIGURA 11:

1.2.

TELA NOVO LAYOUT

Nomeie o layout e escolha o tipo de layout (Relative, Linear e Absolute):

F IGURA 12:

TELA NOVO LAYOUT

\ RELATIVELAYOUT

16

2. Criar uma nova classe para a activity:


2.1.

Boto direito na pasta SeuNome.apostila -> New -> JavaClass:

FIGURA 13:

2.2.

TELA NOVA CLASSE

Nomeie sua classe:

FIGURA 14: NOMEANDO NOVA CLASSE

17

2.3.

A classe da para a activity deve ser filha da classe Activity que vem no
AndroidStudio:

FIGURA 15:

HERDANDO A CLASSE ACTIVITY DA NOVA CLASSE CRIADA

Adicionar a classe da activity no manifest.xml


No Androidmanifest.xml que est dentro da pasta manifests adicione a linha de
cdigo:
<activity android:name=".nome_da_Classe_da_activity"/>
necessrio ter o . e deve estar dentro da tag <application>;

18

FIGURA 16:

ANDROIDMANIFEST

3. Trocar de tela:
3.1.

Adicione um boto na tela inicial do projeto:

19

FIGURA 17:

3.2.

INSERINDO O COMPONENTE BOTO NO LAYOUT

Nomeie o boto de uma maneira que lembre para que ele serve. Como
as classes java enxergam todos os elementos de todos os layouts, uma
maneira de deixar o projeto arrumado nomear o elemento da seguinte
manteira: tipo do elemento + a que layout pertence (tela) + o que faz. Ex:
btnTela1Tela2 ou btnTela1GoTela2.

20

FIGURA 18: NOMEANDO COM UM ID EM ESPECIFICO

3.3.

Adicione um listener para o boto dentro da main activity:


Para fica mais arrumado o cdigo, crie uma procedure para o listener e a
coloque dentro do onCreate.

21

FIGURA 19:

CLASSE MAINACTIVITY

Essa listener ser ativada toda vez que o boto btnTela1Tela2 for pressionado.
3.4.

Para que a classe Activity2 chame o layout_activity2 digite o seguinte


cdigo na Activity2:

FIGURA 20:

CLASSE ACTIVITY 2

22

Agora a tela 1 chama a tela 2 ao pressionar o boto.


O ideal fechar a activity caso queira voltar da tela 2 para a 1 ao invs
de chamar outra activity. Pois assim, ir consumir menos memria. Crie
um boto na Tela 2:

FIGURA 21: INSERINDO ID EM ESPECIFICO PARA O BOTO CRIADO

Assim como no boto da tela principal, crie uma procedure para um


listener, mas com o seguinte cdigo:

23

FIGURA 22:

CLASSE ACTIVITY 2

Finish() mata a activity.

Exerccio de navegao entre telas


Crie: dois layouts com suas activities:
layout_inserir ActivityInserir;
layout_exibir ActivityExibir;
(No se esquea de adicion-los no manifest).
Um TextView em cada um dos layouts com o nome da tela;
Um boto com o texto voltar em cada um dos layouts (arrume o id).
Dois botes na tela principal com os seguintes textos: Exibir valores do banco
e Inserir valores no banco.

24

Faa:
Com que ao pressionar o boto voltar, retorne a tela principal;
Ao pressionar o boto Exibir valores do banco, mostre a tela layout_exibir;
Ao pressionar o boto Inserir valores no banco, mostre a tela layout_inserir.

FIGURA 23:

LAYOUT FINAL DO EXERCICIO

4. Mensagem de Alerta
Esta funo como o prprio nome j diz, serve para exibir uma mensagem de
alerta para o usurio caso ocorra alguma exceo.

25

FIGURA 24: FUNO M ENSAGEMALERTA

5. Dialog
Na mensagem de alerta visto anteriormente, se vocs podem observar, o
dialog usado, ou seja, o dialog nada mais que uma janela que abre aps
um processo, dentro dele voc pode personalizar como uma mensagem de
confirmao de algum estado alterado, renomear algum campo desejado e
entre outros. Veja no exemplo a seguir como feito um dialog personalizado.

26

FIGURA 25:

XML DO LAYOUT DO DIALOG

Neste layout, o nome dado ser dialog_exemplo, para que ento na classe
onde o dialog criado possa se conectar com o layout feito.

27

FIGURA 26:

FUNO DIALOG

6. Passando parmetros
Primeiramente na activity que est passando o(s) parmetros, necessrio
passar no Intent o contexto com o mtodo getContext(); e a classe que ir
receber esses parmetros via Intent.
Faa ento o mtodo Context, como mostra a seguir:

FIGURA 27: CONTEXT

28

Logo depois insira o cdigo a seguir em alguma funo que a chame, pois logo
que o startActivity(); executada, o objeto da classe Intent executada e
sendo assim chamando a classe pr-estabelecida.

FIGURA 28: INTENT E B UNDLE

Para receber os parmetros da Intent da classe chamada, necessrio que a


chave seja igual da classe chamadora, ou seja, a MainActivity podemos dizer.

FIGURA 29: RECEBENDO PARMETROS

7. Criao e utilizao do banco de dados interno Sqlite


O Sqlite vem integrado com o Android Studio, para utiliz-lo no necessrio
instalar nenhum software ou plugin.

Na MainActivity digite o seguinte cdigo dentro do onCreate para criar o banco


de dados, se existir um com o mesmo nome ele chamado:

FIGURA 30: STRING DE CONEXO

29

E para criar uma tabela, execute um comando sql com o banco de dados
criado:

FIGURA 31:

COMANDO SQL

Insero de valores no banco de dados


Deixe o layout da tela de insero da seguinte maneira:
*No precisa utilizar a mesma estrutura, mas com os mesmos elementos.

FIGURA 32:

TELA DO LAYOUT

30

Na activity da tela de insero adicione as seguintes funes:


final EditText txtalgo = (EditText) findViewById(R.id.txtalgo);

Pega o elemento da tela, tornando acessvel suas propriedades e valores.


Muito parecido com o document.getElementById() do javascript.

Adicione as funes que sero criadas no onCreate e deixe a varivel db


acessvel todas as funes.

FIGURA 33:

CLASSE ACTIVITYINSERIR

A funo limpaCampos adiciona um listener para o boto btnInserirLimpar e


deixa os EditText da tela com texto vazio.

31

FIGURA 34:

FUNO LIMPACAMPOS

A funo salvaCarro adiciona um listener para o boto btnInserirSalva, a


funo pega e valida os valores informados e salva na tabela Carro.

32

FIGURA 35:

FUNO SALVACARRO

33

Buscar valores do banco de dados


Adicione um ListView na tela de exibio:

FIGURA 36:

TELA LISTVIEW

34

Crie um layout com o nome layout_listacarro, no final a ListView ter a mesma


aparncia que este layout, ou seja, se alterar a ordem a ListView tambm ter
a ordem alterada.

FIGURA 37:

TELA LAYOUT _ LISTACARRO

35

Ligao das classes:

FIGURA 38: LIGAO ENTRE AS CLASSES CARRO E ACTIVITYEXIBIR

Para exibir os valores precisamos criar uma classe para armazenar os valores
do banco. Essa classe ir ter todos os campos da tabela Carro.

FIGURA 39:

CLASSE CARRO

36

Carregue o banco de dados e crie uma lista de objetos Carro, iremos utiliz-la
para preencher a ListView, passando a lista para um ArrayAdapter.

FIGURA 40:

CLASSE ACTIVITYEXIBIR

O ArrayAdapter faz parte das classes do AndroidStudio, somente precisamos


alterar alguns de seus valores, informando a classe que passada, o layout do
listView e a lista de objetos. E por ltimo relacionar os valores do objeto com o
layout. Crie essa classe local no final da classe ActivityExibir.

37

FIGURA 41:

FUNO MYLISTADAPTER

Utilizamos o cursor para nos movimentar pelo resultado da query do banco.


Carregando a lista de objetos Carro.

38

FIGURA 42:

FUNO POPULATELISTACARROS

Por ltimo, somente instancie um objeto da classe local MyListAdapter e


adicione o ArrayAdapter listView.

FIGURA 43:

FUNO POPULATELISTVIEW

Para poder pegar o valor de um objeto da lista ao precion-lo adicione um


listener na listView que com a posio pega o objeto da lista de objetos Carro.

39

FIGURA 44:

FUNO SELECTITEMLISTA

SharedPreferences
utilizado para armazenar dados no dispositivo. Muito til para guardar
configuraes e informaes do usurio. Eles ficam guardados mesmo que o
usurio saia da aplicao e o aparelho seja desligado.
Sua utilizao parecida com a session do PHP. Pode ser utilizado para
armazenar e validar o login.

Nesta parte, criaremos uma sharedPreferences para fazer um sistema de login,


para isso, crie uma classe com o nome Login, o objetivo somente mostrar a
funcionalidade, por isso vai ser bem simples. O cdigo da classe vai ficar:

40

FIGURA 45:

CLASSE LOGIN

Assim como no session do php, o SharedPreferences precisa de um nome


(identificador), e os valores armazenados tambm. Podemos cham-la na
prpria activity, mas utilizar uma classe para isso torna o cdigo mais
arrumado. Utilizamos um Editor para inserir valores e para dar um commit que
tem a mesma funo do commit de um banco de dados (terminar a transao

41

realmente inserindo os valores, se ocorrer um rollback, a transao no


concluda).
Ligao entre as classes:

FIGURA 46: LIGAO ENTRE AS CLASSES LOGIN E USERLOGIN

42

FIGURA 47:

CLASSE USERLOGIN

Se o SharedPreferences estiver vazio, ir retornar o valor default informado


depois da vrgula no cdigo: login.getString(login, ).
Vamos criar duas layouts e duas classes, o layout_login, layout_cadastrar,
ActivityCadastrar e a ActivityLogin e adicion-las no AndroidManifest.
A aparncia dos dois layouts deve ficar mais ou menos assim (Utilize o
TextView do tipo password):

FIGURA 48:

TELA LAYOUT _ LOGIN

43

A ligao de classes da tela de login deve ser:

FIGURA 49: LIGAO ENTRE AS CLASSES LOGIN E USERLOGIN

FIGURA 50:

TELA LAYOUT _ CADASTRAR

44

A ligao de classes na tela de cadastro de login deve ser:

FIGURA 51:

LIGAO ENTRE AS CLASSES LOGIN , USERLOGIN E ACTIVITYCADASTRAR

No MainActivity iremos criar o comando para a nova tabela e um validador,


para verificar se h uma sesso aberta. Se existir, mostra a tela principal, se
no exibe a tela de login. A alterao no cdigo ficar assim:

45

FIGURA 52:

CLASSE MAINACTIVITY

A funo logout, simplesmente ir redirecionar para a tela de login e utilizar a


procedure logout das classe UserLogin.

FIGURA 53:

FUNO LAYOUT

46

A ligao entre classes da MainActivity deve ser:

FIGURA 54:

LIGAO ENTRE AS CLASSES LOGIN , USERLOGIN E MAINACTIVITY

FIGURA 55:

RESULTADO FINAL

47

Exerccio de pesquisa e insero no banco de dados


1. Com o que foi ensinado, pegue os valores informados na tela login e faa
uma pesquisa na tabela login. Utilize o cursor e no se esquea de validar os
valores informados. Caso seja encontrado os valores na tabela, insira este
cdigo:

FIGURA 56:

VALORES TELA LOGIN

Somente instancia um objeto da classe Login com os valores informados,


instancia um objeto da classe UserLogin que gera o SharedPreferences (foi
usado um logout para ter certeza que no sobrou valores dentro da SP.) e
ento exibe a MainActivity.

2. Faa com que ao pressionar o boto cadastrar na tela de login, seja


mostrado a tela de cadastro(layout_cadastro atravs da ActivityCadastro).

3. Ao pressionar o boto cadastrar na tela de cadastro, pegue e valide os


valores informados (inclusive verificar se a senha igual a confirmao da
senha) e insira no banco de dados. Depois de inserir o valor no banco, digite o
seguinte cdigo:

48

FIGURA 57:

INTENT

Que exibe uma mensagem para informar que o cadastro foi realizado com
sucesso, seta a sesso e exibe a tela principal.

8. Banco de Dados
Para visualizar o banco de dados criado de sua aplicao, necessrio realizar
alguns passos, usaremos somente o emulador para poder visualizar o banco
de dados, pois no dispositivo real por motivos de segurana no possvel
acessar a pasta privada do aplicativo.
Depois de executar o projeto no emulador, o banco de dados criado
(lembrando que o banco de dados s criado quando a funo de criar o
banco no cdigo est implantada e chamada).

49

Tools -> Android -> Android Device Monitor

FIGURA 58:

ANDROID / ANDROID DEVICE MONITOR

Selecione o emulador desejado, em File Explorer mostra a estrutura de


diretrios

do

emulador

conforme

mostra

abaixo,

ento

abra

em

data/data/(extenso do projeto)/databases/(Nome do Banco)

FIGURA 59:

ANDROID DEVICE MONITOR

50

Dependendo da maquina virtual utilizada, possvel que esteja protegido a


pasta Data e para no ter problemas com permisses, mude o diretrio do
arquivo, para isso necessrio utilizar a funo a seguir.
public void Criapasta() {
File f = new
File("/data/data/com.example.gabrielbonatto.oficial/databases/Cadastro"); // Cadastro
o nome do Banco Criado
FileInputStream fis = null;
FileOutputStream fos = null;

try {
fis = new FileInputStream(f);
fos = new FileOutputStream("/mnt/sdcard/meu_banco_dump.db");
//meu_banco_dump.db o nome do seu arquivo do banco que conter todas as suas
Tabelas do banco
while (true) {
int i = fis.read();
if (i != -1) {
fos.write(i);
} else {
break;
}
}
fos.flush();
Toast.makeText(this, "DB dump OK", Toast.LENGTH_LONG).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "DB dump ERROR", Toast.LENGTH_LONG).show();
} finally {
try {
fos.close();
fis.close();
} catch (IOException ioe) {
51

}
}
}

No AndroidManifest coloque a permisso a seguir para que possa adicionar


escrita nos diretrios

FIGURA 60:

PERMISSO NO ANDROIDMANIFEST

Essa funo far que o arquivo seja mandado para outro diretrio, para abrir o
arquivo, basta entrar em storge/sdcard/meu_banco_dump.db.
Com o arquivo em mos, extraia para fora do emulador, no canto superior
direito um disquete, clique nele com o arquivo selecionado que deseja extrair.
Baixe o SQLite Studio do site http://sqlitestudio.pl/?act=download.
Abra o programa e ento adicione o banco de dados no SQLiteStudio, lembrese que ao fazer modificaes no banco de dados pelo SQLiteStudio e queria
que a aplicao leia tal modificao, necessrio que importe para dentro do
emulador e na pasta data/data e no no storage/sdcard, pois no sdcard
somente para ter o banco em mos e o Android Studio l somente dentro da
pasta data.

52

FIGURA 61:

SQLITESTUDIO

9. Logcat
Os logs permitem ao desenvolvedor debugar erros durante o desenvolvimento
e tambm investigar problemas com o software em produo, ou seja, com o
usurio final. possvel criar logs de informao, debug, alertas e erro. Cada
log pode ser escrito em uma determinada tag, para que posteriormente apenas
as mensagens desejadas sejam recuperadas. Caso no tenha aparecido o
LogCat, aperte o atalho Alt+6.

FIGURA 62: LOGCAT

53

Para que filtre somente as Tags desejadas no Logcat, siga o cdigo-fonte a


seguir:

FIGURA 63:

FUNO LOG

A seguir no canto superior direito da janela do LogCat, v no combo com os


filtros e clique em Edit Filtrer Configuration

FIGURA 64:

CREATE NEW LOGCAT FILTER

54

10. Dispositivo Real


Para que possa emular a aplicao no prprio dispositivo necessrio verificar
qual a verso que seu dispositivo se encontra, para verificar, v

em

Configuraes -> Sobre o dispositivo, sendo assim, com a verso do Android


em mos v em SDK, veja em qual pacote seu dispositivo se encaixa, no meu
caso o pacote Android 4.1.2 (API 16), de preferencia baixe todos do pacote,
caso no queira, deixe checado conforme mostra a imagem.

FIGURA 65:

ANDROID SDK MANAGER

OBS: Os pacotes que no esto checados so para emuladores virtuais que


esto na maquina.
Aps ter instalado, no mesmo SDK, v pasta Extras e instale o pacote
Google USB Driver, para que possa se conectar com o dispositivo real. Na
sesso build.gradle da apostila explicar sobre verses, fique atento.

55

11. Maquina Virtual


Um grande problema de se testar sua aplicao no Android Studio a maquina
virtual da prpria IDE, o processo de executar seu projeto faz com que
obrigatoriamente tenha algum emulador na espera para ser executado, mas o
problema mora na lentido que isso ocorre e por isso iremos instalar uma
maquinal virtual externa para poder emular nossas aplicaes.
Computador com menor desempenho, o Bluestack um bom emulador, ele
mais simples e menos robusto quanto o Genymotion.
http://www.bluestacks.com/pt-br/apps/whatsapp-on-pc.html
Computador com maior desempenho, o Genymotion uma tima ferramenta,
porm necessrio que baixe as API para emular.
https://www.genymotion.com/#!/store
OBS: No Genymotion tem a verso FREE e a Business, veja no prprio site
algumas funcionalidades disponvel para cada verso.
Ao baixar o emulador, basta abrir o Android Studio e o Emulador. Aconselho a
abrir primeiro o Emulador e depois o Android Studio, para que a IDE possa
enxergar o emulador, segue a imagem a seguir do Android Studio conectado
com nenhum emulador, caso contrrio, estar mostrando os possveis
emuladores a ser executado.

FIGURA 66:

LOGCAT

56

Se ao abrir o emulador e a IDE no estiver conectado, o problema ser


resolvido ao resetar o ADB.
Tools -> Android -> Android Device Monitor

FIGURA 67:

ABRINDO ANDROID DEVICE MONITOR

Note que na figura abaixo esquerda h uma lista para dispositivo (Devices),
logo que apertar Reset adb , os dispositivos conectados sero mostrado na
lista e finalmente voc poder executar o seu projeto.

57

F IGURA 68:

ANDROID DEVICE MONITOR

/ RESET ADB

12. SDK Manager


Na hora de instalar o Android Studio, voc pode optar por instalar o SDK com
alguns pacotes includos ou utilizar o que voc tem na sua maquina. Na
imagem abaixo mostra o cone do SDK.

F IGURA 69:

LOCALIZAO ANDROID SDK MANAGER

Se ao clicar no abrir diretamente a janela do Android SDK Manager e


aparecer imagem a seguir, clique em Launch Standalone SDK Manager.

58

FIGURA 70:

DEFAULT SETTINGS

Para voc ter uma base, deixe checados os seguintes pacotes, as verses do
Android (API) para instalar vo ser critrio de cada um, dependendo do
dispositivo que rodar o aplicativo.

59

FIGURA 71:

ANDROID SDK MANAGER

13. Interface Grfica


Layout

Descrio

AbsoluteLayout

Permite posicionar os componentes,


fornecendo as coordenadas x e y. Est
deprecated.

FrameLayout

Tipo mais comum e simples de layout.


Funciona como uma pilha, sendo que
uma view fica por cima da outra.

LinearLayout

Utilizados

para

organizar

os

componentes na vertical ou horizontal.


TableLayout

filho do LinearLayout e pode ser


utilizado

para

organizar

os

componentes em uma tabela, com


linhas e colunas.

60

RelativeLayout

Permite posicionar um componente


relativo a outro, por exemplo, abaixo,
acima ou ao lado de um componente j
existente.

Ao construir qualquer interface grfica da tela, necessrio construir a largura


e altura do layout principal. Cada view tem sua largura e altura, veja a seguir:
Parmetro

Descrio

android:layout_height

Altura de uma view

android:layout_width

Largura de uma view

Os parmetros que o android:layout_height e android:layout_width podem ser


os seguintes:
Valor

Descrio

Fill_parent

Significa que o componente precisa


ocupar todo o tamanho definido pelo seu
pai (layout)

Match_parent

Mesmo significado que o fill_parent, s


que apartir do Android 2.2 a Google
descontinuou o fill_parent.

Wrap_parent

Utilizado para o componente ocupar


apenas o tamanho necessrio na tela,
sem esticar.

Nmero(dp)

Nmero inteiro especificando o tamanho,


por exemplo, 50 dp para ocupar 50 pixels
da tela. Sempre utilize dp e no px.

61

14. Classe R
A classe R gerada automaticamente ao compilar o projeto e contm as
constantes para acessar os diversos recursos do projeto. Nunca se deve alterar
essa classe manualmente. Caso por algum motivo a classe R seja excluda,
somente limpando ou reconstruindo o projeto para gerar uma nova classe R.

FIGURA 72:

BUILD

62

Se no construir a classe R, selecione a opo a seguir e clique em Invalidate


and Restart

FIGURA 73:

FILE

/ INVALIDATE CACHES /RESTART

15. Build.gradle
Explicaremos no curso somente o arquivo build.gradle (Module: app), que o
mais interessante no momento.

FIGURA 74:

BUILD . GRADLE ( MODULE : APP )

Ao acessar esse arquivo possvel visualizar o cdigo-fonte.


63

FIGURA 75:

CODIGO - FONTE DO BUILD . GRADLE

compileSdkVersion 22 : API Level usada para compilar o cdigo (deve ser sempre a
ultima)
buildToolsVersion "22.0.1" : Verso do Android SDK build-tols baixada pelo Manager
defaultConfig { : Este elemento configura os itens do AndroidManifest.xml
applicationId "com.example.gabriel.apostila" : Pacote do projeto (identificador nico da
aplicao)
minSdkVersion 16 : API Level minimo que o aplicativo suporta
targetSdkVersion 22 : API Level mximo utilizada para otimizar o build na compilao
versionCode 1 : Cdigo para identificar o aplicativo no Google Play
versionName "1.0" : Verso do cdigo com formato amigvel para o usurio

16. Requisitos do sistema


Para baixar o Android Studio juntamente com o SDK (para saber mais sobre o
que o SDK, recomendo que leia a sesso SDK Manager), acesse o site oficial
do Android Stuido e baixe seguindo o link a seguir:
https://developer.android.com/sdk/index.html

64

Verso do Android Studio baixada na apostila: 1.3

Windows

Microsoft Windows 8/7/Vista/2003 (32 or 64-bit)

2 GB RAM minimum, 4 GB RAM recommended

400 MB hard disk space

At least 1 GB for Android SDK, emulator system images, and caches

1280 x 800 minimum screen resolution

Java Development Kit (JDK) 7

Optional for accelerated emulator: Intel processor with support for Intel
VT-x, Intel EM64T (Intel 64), and Execute Disable (XD) Bit functionality

Mac OS X

Mac OS X 10.8.5 or higher, up to 10.9 (Mavericks)

2 GB RAM minimum, 4 GB RAM recommended

400 MB hard disk space

At least 1 GB for Android SDK, emulator system images, and caches

1280 x 800 minimum screen resolution

Java Runtime Environment (JRE) 6

Java Development Kit (JDK) 7

Optional for accelerated emulator: Intel processor with support for Intel
VT-x, Intel EM64T (Intel 64), and Execute Disable (XD) Bit functionality

On Mac OS, run Android Studio with Java Runtime Environment (JRE) 6 for
optimized font rendering. You can then configure your project to use Java
Development Kit (JDK) 6 or JDK 7.
65

Linux

GNOME or KDE desktop

GNU C Library (glibc) 2.15 or later

2 GB RAM minimum, 4 GB RAM recommended

400 MB hard disk space

At least 1 GB for Android SDK, emulator system images, and caches

1280 x 800 minimum screen resolution

Oracle Java Development Kit (JDK) 7

Tested on Ubuntu 14.04, Trusty Tahr (64-bit distribution capable of running


32-bit applications).

17. Saiba Mais


O mtodo openOrCreateDataBase usado para criar uma nova database se
ela no existe, ou para abrir uma existente. Context.MODE_PRIVATE usado
para declarar que o arquivo da database criada deve ser local e somente para
a aplicao. Isto recomendado para mandar a database como um arquivo
privado da aplicao. O terceiro parmetro a referncia para um objeto
CursorFactory. Esse objeto ser usado para criar objetos Cursor customizados
quando se est lendo o database.
layout inflater: Coverter definies aparncias de XML em View Objects no
cdigo chamado de inflation. inflate(resource, parent View, null); A nica
utilidade do parent view permitir que o sistema faa o resource do layout em
um conteiner conhecido. O ltimo parmetro diz para o inflater no adicionar
um objeto de resource ao parent, esse um trabalho para o ListView.
Intent representa uma "Mensagem, um pedido que encaminhado ao sistema
operacional. O sistema pegar a mensagem, verificar qual a Inteno da
66

mensagem e tomar uma deciso que pode ser desde abrir uma pgina na
Web (um browser abrir e a pgina ser exibida), fazer uma chamada
telefnica ou iniciar uma Actvity.

18. Referncias

ANDROIDADVENTURES. ListView And Adapters, Disponvel em <http://www.iprogrammer.info/programming/android/7849-android-adventures-listview-andadapters.html?start=2> Acesso em:10.Set.2015.


DEVELOPERS_1, Disponvel em: <http://developer.android.com/index.html>
Acesso em: 20.Set.2015.

DEVELOPERS_2,

Disponvel

em:

<http://developer.android.com/sdk/index.html> Acesso em: 30.Set.2015.


JAVAHELPS.

Basic

Android

Database,

Disponvel

em

<http://www.javahelps.com/2015/03/basic-android-database.html> Acesso em:


19.Set.2015
LANCHETA, Ricardo R. Google Android Aprenda a criar aplicaes para
dispositivos mveis com o Android SDK. 4 Ed. So Paulo: Novatec, 2015.
PROGRAMAR_ANDROID,

Disponvel

em:

<http://www.programarandroid.com.br/2013/04/fundamental-trabalhando-comintent-e.html> Acesso em: 02.Out.2015.


SAMSUNG. Materiais do Curso Ocean - Android SamSung Mobile SDK.
Ago.2015.
PROGRAMAR_ANDROID,

Disponvel

em:

http://www.programarandroid.com.br/2013/04/fundamental-trabalhando-comintent-e.html Acesso em: 02 Outubro. 2015.

67

DEVMEDIA, Disponvel em:< http://www.devmedia.com.br/entendendo-o-ciclode-vida-de-uma-aplicacao-android/22922> Acesso em: 04 Outubro. 2015

Orientao: Prof M Denilce de Almeida O.Veloso

** NEADMOV - Ncleo de Estudos e Pesquisas Tecnolgicas em


Anlise e Desenvolvimento de Sistemas para Dispositivos Mveis

68

Potrebbero piacerti anche