Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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
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.
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.