+ curso de android xviii jornada de cursos. + 10. persistência

35
+ Curso de Android XVIII Jornada de Cursos

Upload: internet

Post on 17-Apr-2015

108 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+

Curso de Android

XVIII Jornada de Cursos

Page 2: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+10. Persistência

Page 3: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Programação com banco de dados

O Android tem suporte nativo a um banco de dados relacional: o SQLite (http://www.sqlite.org ).

Isto facilita muito o trabalho de armazenamento e leitura de dados no dispositivo.

Ao contrário de JME, o Android permite que dados sejam armazenados e recuperados da base de dados através de comandos SQL;

Page 4: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Programação com banco de dados

Além de que a base de dados existe fisicamente, podendo ser copiada do dispositivo para uma unidade de backup, por exemplo

Ou ainda, o banco de dados pode ser instalado no dispositivo já com os dados pré-carregados etc.

Page 5: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Criando o banco de dados

O comando abaixo cria o banco de dados, ou retorna a referência para o mesmo, caso já tenha sido criado.

myDB = getApplicationContext().openOrCreateDatabase(

DATABASE_NAME, MODE_PRIVATE,null);

Page 6: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+A linguagem SQL

O SQL foi desenvolvido para ser uma linguagem padrão para operações com Banco de Dados.

A linguagem SQL foi elaborada para ser independente de hardware ou do software. Ao usar o SQL, você não precisa saber a respeito do software de

banco de dados ou do hardware envolvido em uma operação. Tudo o que você precisa conhecer são os comandos/instruções

SQL padrão para solicitar informações, que obrigatoriamente é o mesmo em todos os sistemas que utilizam o SQL.

Page 7: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+CREATE TABLE

O comando CREATE TABLE é usado para criar uma tabela em um banco de dados.

CREATE [TEMPORARY] TABLE IF NOT EXISITS [tabela] ([ [coluna1] [tipo de dado1] {NULL|NOT NULL}...])

Page 8: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+INSERT

O comando INSERT é usado para adicionar um ou mais registros em tabela de um banco de dados.

INSERT INTO tabela (coluna1, [coluna2, ...]) VALUES (valor1, [valor2, ...])

Page 9: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+UPDATE

O comando UPDATE é usado para atualizar registros em uma ou mais tabelas do banco de dados.

UPDATE tabela SET campo1 = valor1 [,campo2 = valor2,...] [WHERE condição]

Page 10: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+DELETE

O comando DELETE é utilizado para remover um ou mais registros de uma tabela no banco de dados.

DELETE FROM tabela [WHERE condição]

Page 11: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+SELECT

O comando SELECT é utilizado para recuperar um conjunto de registros de uma ou mais tabelas. Ela recupera zero ou mais linhas, dependendo das condições colocadas.

SELECT [DISTINCT] * | expressão [ AS nome_saída ] [, ...]

[ FROM tabela1 [t1, tabela2 t2 ...] [ WHERE condição ] [ GROUP BY expressão [, ...] ] [ ORDER BY expressão [ ASC | DESC] [, ...] ] [ LIMIT { contador | ALL } ]

Page 12: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Exemplos de SQL usando Android

O comando abaixo pode ser usado para executar as funções do banco de dados:

É importante ressaltar que este comando deve ser usado para consultas que NÃO retornam dados (todas as outras, exceto o SELECT).

myDB.execSQL(String query)

Page 13: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Exemplos de SQL usando Android

Para executar um SELECT, utilizamos o seguinte método:

myDB.query(boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit);

Page 14: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Exemplos de SQL usando Android

Como exemplos, iremos mostrar o comportamento da função com os comandos INSERT e SELECT.

String TABLE_NAME = "pessoa";String nome = "Nome";String sobreNome = "Sobrenome" ;String pais = "Pai e Mãe";Integer idade = 22;myDB.execSQL("INSERT INTO" +TABLE_NAME +"(nome, sobrenome, pais, idade)" +" VALUES " +"('" + nome + "'," +"'" + sobreNome + "'," +"'"+ pais + "'," +idade + ");");

Page 15: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Exemplos de SQL usando Android

Cursor c = myDB.query(TABLE_NAME,newString[] {"nome", "sobrenome", "pais", "idade"},null,null,null,null,null);if(c !=null) {

while( ! c.isAfterLast() ) {if( c.getPosition() == -1 ) {c.moveToFirst();}int posColunaNome = c.getColumnIndex("nome");int posColunaSobreNome = c.getColumnIndex("sobrenome");int posColunaPais = c.getColumnIndex("pais");int posColunaIdade = c.getColumnIndex("idade");String nome = c.getString(posColunaNome);String sobrenome = c.getString(posColunaSobreNome);String pais = c.getString(posColunaPais);intidade = c.getInt(posColunaIdade);

}}

Page 16: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Melhorando!

Voltemos mais uma vez para a nossa aplicação de cadastro (a primeira versão);

Faça com que a aplicação armazene os dados em um banco de dados dentro do dispositivo Android;

Page 17: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Melhorando! [2]

Implemente um mecanismo que faça a sincronização do banco de dados remoto (usado nos exemplos de Internet) com o banco de dados local.

Implemente uma tela de atualização, com um botão para realizar a ação e um texto indicando a quantidade de registros no banco de dados;

Page 18: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Melhorando! [2]

CREATE TABLE IF NOT EXISTS pessoa (nome varchar(100) NOT NULL, idade int (11) NOT NULL, profissao varchar(100) NOT NULL)

Page 19: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Desafio!

Implemente um sistema de blog;

Ele precisa ter as seguintes funcionalidades: Listar Posts; Inserir Posts com imagens; Comentar um post; Visualizar o comentário em um post;

USE BANCO DE DADOS!

Page 20: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Desafio!

Restrições: Listar os posts com um ListView que sempre está pegando os

dados do BD; Cada ação pede um layout diferente, inclusive um menu inicial; A quantidade de comentários deve ser exibida ao visualizarmos

um post; Selecione as imagens de uma galeria e exiba quando visualizarmos

um post;

Page 21: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Desafio!

CREATE TABLE IF NOT EXISTS post ( id integer PRIMARY KEY AUTOINCREMENT, titulo text NOT NULL, autor text NOT NULL, texto text NOT NULL, foto integer NOT NULL)

CREATE TABLE IF NOT EXISTS comentario (id integer PRIMARY KEY AUTOINCREMENT, post_id int eger NOT NULL, texto text NOT NULL, autor text NOT NULL)

Page 22: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+11. Google Maps

Page 23: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Google Maps

Um recurso muito interessante no Android é o suporte ao Google Maps.

O Google Maps é um serviço acessado através da internet (não é instalado no dispositivo) e que contém mapas do mundo inteiro, sendo também totalmente compatível com o Android.

Page 24: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Google Maps

Para que o Google Maps funcione no Android em ambiente de desenvolvimento, é necessário obter uma chave no site do Google. É necessário apenas ter uma conta Google e fazer login.

Outro detalhe é que a chave vale apenas para um computador, pois é gerada com base na assinatura digital da máquina.

Page 25: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Obtendo a chave para acessar o Maps

Para poder usar o serviço Google Maps, é necessário ter uma chave de autorização devidamente gerada no site do Google; esta chave é gerada gratuitamente.

Para obtermos uma chave, portanto, precisamos primeiro obter a assinatura digital da máquina onde está instalado o emulador do Android.

Page 26: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Obtendo a chave para acessar o Maps

No prompt de comando: Vá até a pasta “bin” do JDK. keytool.exe -v -list -alias androiddebugkey -keystore

"C:\Users\<Nome>\.android\debug.keystore" –storepass android -keypass android

Page 27: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Obtendo a chave para acessar o Maps

Page 28: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Obtendo a chave para acessar o Maps

Copie o “Fingerprint do Certificado MD5” gerado para a sua máquina;

De posse do fingerprint, entre no site https://developers.google.com/android/maps-api-signup.html;

No site, leia os termos da licença e se concordar, marque a opção que está de acordo, cole o certificado obtido na caixa “My certificate’s...” e cliquena opção “Generate API Key”.

Page 29: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Obtendo a chave para acessar o Maps

Page 30: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Obtendo a chave para acessar o Maps

Será solicitado que você faça login no Google, então, você deve ter uma contaou senão você poderá criá-la neste momento. Faça o login.

Sua chave será gerada e exibida pra você na tela, com um exemplo de como utilizar o componente “MapView” para exibir o mapa.

Page 31: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Obtendo a chave para acessar o Maps

Page 32: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Construindo uma aplicação simples

Project Name: ProjetoMapaSimples

Build Target: Google APIs (2.3.3)

Application name: MapaSimplesAndroid

Package name: br.ufpe.cin.android.appmaps

Create Activity: Principal

Min SDK Version: 10

Page 33: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Construindo uma aplicação simples

Insira as tags:

“<uses-permission android:name="android.permission.INTERNET" /> “ ANTES da tag <application>

“<uses-library android:name="com.google.android.maps" />” DENTRO da tag <application>

Page 34: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Construindo uma aplicação simples

main.xml

<?xml version= "1.0"  encoding="utf-8"?> <RelativeLayout xmlns:android=http://schemas.android.com/apk/res/android  android:layout_width="fill_parent"  android:layout_height="fill_parent" >

<com.google.android.maps.MapView android:id="@+id/mapView"

  android:layout_width="fill_parent"  android:layout_height="fill_parent" android:enabled="true" android:clickable="true"  

android:apiKey="0B0-L7d2MIQm2lx81czA67LoDbg-m0qDjH0iqXA"  /> </RelativeLayout>

Page 35: + Curso de Android XVIII Jornada de Cursos. + 10. Persistência

+Construindo uma aplicação simples

Principal.java:

super .onCreate(savedInstanceState);setContentView(R.layout.main);MapView mapa = (MapView) findViewById(R.id.mapView);mapa.displayZoomControls(true);

@Override protected Boolean isRouteDisplayed() { return false ;}

public class Principal extends MapActivity{