Você está na página 1de 6

Tutorial 2: Gravando um local de interesse usando o GPS e o TinyDB Nesse tutorial, ser criada uma aplicao que:

Detecta a posio atual do usurio Permite que a posio atual seja salva em um banco de dados junto com um comentrio sobre esse local Apresenta uma lista dos lugares salvos por esse usurio Tem integrao entre os locais salvos e o Google Maps

Ele tem como base o captulo 7 do livro App Inventor: Create your own Android Apps, de David Wolber, Hal Abelson (criador do App Inventor), Ellen Spertus e Liz Looney. Nossos principais objetivos com essa aplicao so: 1. Usar o componente LocationSensor, que faz uso do sistema de localizao do dispositivo (GPS e triangulao de redes) 2. Usar o componente TinyDB, um banco de dados local

Passo 1: Encontrar o ponto atual no mapa


Nosso primeiro objetivo detectar a posio atual do usurio e mostrar na tela da aplicao seu endereo atual e as coordenadas da sua posio.

Interface
A imagem abaixo mostra os elementos que usaremos nessa parte do experimento:

Essa aplicao usa os seguintes componentes: 1. Label1: Etiqueta com uma mensagem de descrio da tela 2. Horizontal Arrangement1 e 2: Elementos de layout usados para posicionar um conjunto de etiquetas lado a lado, horizontalmente. 3. EtiquetaEnderecoAtual: Etiqueta onde ser mostrado o endereo atual 4. EtiquetalLatitudeAtual e EtiquetalLongitudeAtual: Etiquetas onde sero mostradas as coordenadas do usurio 5. Labels 2, 4 e 6: Etiquetas com a descrio do contedo apresentado 6. LocationSensor1: Componente que permite o uso do sistema de localizao do dispositivo

Blocos Lgicos

A imagem abaixo mostra a rotina para deteco e exibio da posio:

Estamos fazendo uso do evento LocationChanged do componente LocationSensor1, que disparada em duas ocasies: a) quando a posio detectada pelo sensor muda e b) quando o sensor realiza a primeira leitura de posio. A leitura da primeira posio em geral mais demorada, levando alguns segundos. Uma vez que a leitura realizada, as etiquetas correspondentes so preenchidas com os parmetros detectados.

Testando a aplicao
No experimento anterior, testamos a aplicao usando o emulador de Android ou um celular conectado ao computador. Mas para testar a aplicao atual, precisamos estar ao ar livre e no muito fcil fazer isso tendo o celular conectado. Por isso, precisamos gravar a app no celular. Na tela do Designer h um boto no canto superior direito chamado 'Package to Phone'. Depois de apertado, so mostradas trs opes de como transferir a aplicao: a) usando um cdigo de barras a ser lido pelo celular, b) gravando no computador um arquivo instalvel no dispositivo mvel ou c) transferncia direta para um telefone conectado.

Passo 2: Gravar um ponto de interesse no mapa


Para podermos gravar um ponto do mapa na memria do telefone, precisamos adicionar mais alguns elementos no Designer: 1. GravarLocal: boto que aciona a rotina de gravao do ponto de interesse (desativado por padro) 2. EtiquetaEnderecoUltimo, EtiquetaLatitudeUltimo, EtiquetaLongitudeUltimo e UltimoComentario: campos de texto no qual sero exibidas as informaes referentes ao ltimo ponto de interesse gravado. 3. TinyDB1: componente que faz a interface entre a aplicao e o banco de dados locais, disponibilizando rotinas de leitura e escrita de pares chave-valor.

No momento em que abrimos a aplicao pela primeira vez, no podemos permitir que o boto GravarLocal seja acionado antes de que o local atual tenha sido identificado. Por isso, o boto est desativado por padro. Precisamos ento alterar o evento LocationChanged do LocationSensor1 para habilitar o boto uma vez que uma posio foi identificada:

Com a posio detectada, o boto pode ser acionado. Para configurar seu comportamento, usamos o evento Click do boto. Nele, so realizadas dois conjuntos de operaes: a) os valores de endereo, latitude e longitude so copiados das etiquetas referentes posio atual nas referentes ltima posio (gravada) e b) os mesmo valores so armazenados no banco de dados local, usando o mtodo StoreValue do TinyDB1.

Apesar da aplicao mostrar corretamente qual o local atual e qual o local anterior na tela, caso ela seja fechada (ou o celular seja reiniciado) as informaes referentes ultima

posio gravada no aparecero mais na tela. Para que as informaes sejam exibidas corretamente na tela, precisamos recuperar as informaes gravadas no TinyDB, conforme mostrado abaixo:

Para recuperar cada um dos valores gravados, usamos suas chaves correspondentes no mtodo GetValue do TinyDB1. Antes de gravarmos um local pela primeira vez, no h informao nenhuma a ser recuperada no TinyDB, e tentar usar o GetValue nessa ocasio causaria um erro (e posterior fechamento) da app. Por isso, antes das operaes de leitura realizamos uma verificao usando uma das chaves e verificamos se algo retornado.

Você também pode gostar