SlideShare uma empresa Scribd logo
1 de 15
Baixar para ler offline
TEMA 7 1/15 
Android, on és el meu cotxe? 
Has aparcat tan a prop de l'estadi com ha sigut possible, però quan el concert 
acaba, no tens ni idea d'on està el teu cotxe. Els teus amics són igual de despistats. 
Afortunadament, no has perdut el teu telèfon Android, que mai oblida res, i et 
recorda que tens la nova aplicació, "Android, on és el meu cotxe?". Amb aquesta 
aplicació, feu clic a un botó quan estacioni el seu cotxe, i el Android utilitza el sensor 
de localització per registrar les coordenades i adreça del GPS del cotxe. Més tard, 
quan torni a obrir l'aplicació, aquesta li dóna les adreces des d'on es troba 
actualment i li recordada la situació. Problema resolt! 
El que aprendràs 
Aquesta aplicació cobreix els següents conceptes: 
• Determinació de la ubicació del dispositiu Android mitjançant el component 
LocationSensor. 
• Enregistrament de dades en una base de dades directament al dispositiu 
mitjançant TinyDB. 
• Utilització del component ActivityStarter per obrir Google Maps des de la 
teua aplicació i mostra les instruccions d'un lloc a un altre. 
Introducció 
Connectar-se a la pàgina web de App Inventor i començar un nou projecte. El nom 
de "AndroidOn" (els noms dels projectes no poden tenir espais) i també s'estableix 
el títol de la pantalla de "Android, on és el meu cotxe?". Obre l'Editor de Blocs i 
connectar al telèfon.
TEMA 7 2/15 
Disseny dels components 
La interfície d'usuari "Android, on és el meu cotxe?" consta d'etiquetes per a mostrar 
les seves ubicacions actuals i recordar-les, i botons per gravar un lloc i mostrar les 
instruccions en en mateix lloc. Necessitaràs algunes etiquetes que només mostren 
text estàtic, per exemple, EtGPS proporcionarà el text "GPS:" que apareix en la 
interfície d'usuari. Altres etiquetes, com ara EtLatitud, mostren les dades de la 
ubicació del sensor. Per aquestes etiquetes, se li proporciona un valor per defecte, 
(0,0), que canviarà a mesura que adquireix la informació d'ubicació GPS. 
També tindrà tres components no visibles: un LocationSensor per obtenir la ubicació 
actual, un TinyDB per emmagatzemar persistentment llocs, i un ActivityStarter per 
al llançament de Google Maps per obtenir adreces, entre les ubicacions actuals i 
emmagatzemats. 
Pots construir els components de la instantània del Dissenyador de components a la 
Figura 7-1. 
Figura 7-1. El "Android, on és el meu cotxe?" Aplicació al Dissenyador de components 
Pots construir la interfície d'usuari que es mostra a la Figura 7-1 arrossegant els 
components a la Taula 7-1.
TEMA 7 3/15 
Taula 7-1. Tots els components de l'aplicació 
Tipus de Component Paleta Nom assignat Objectiu 
Label Basic EtUbicacioActual Mostra la capçalera "La teua 
ubicació actual" 
HorizontalArrangement Screen Arrangement CurrentAddrArrangement Organitzar la informació 
d'adreça direcció 
Label Basic EtAdreca Visualitzar el text de "Adreça:" 
Label Basic EtAdrecaActual Mostra dades dinàmiques: 
l'adreça actual 
HorizontalArrangement Screen Arrangement CurrentGPSArrangement Organitzar la informació GPS 
Label Basic EtGPS Visualitzar el text de "GPS:" 
Label Basic EtLatitud Mostra dades dinàmiques: la 
latitud 
Label Basic EtComa Mostra “,” 
Label Basic EtLongitud Mostra dades dinàmiques: la 
longitud actual 
Button Basic BRegLocActual Feu clic per registrar la 
ubicació actual 
HorizontalArrangement Screen Arrangement RememberAddrArrangement Organitzar info per a recordar 
l'adreça 
Label Basic EtLlocRecordat Mostra el text "Lloc recordat". 
Label Basic EtAdrecaRecordada Mostra dades dinàmiques: 
l'adreça recordada 
HorizontalArrangement Screen Arrangement RememberGPSArrangement Organitzar la informació 
recordada GPS 
Label Basic EtGPSText Mostra el text “GPS” 
Label Basic EtLatitudRecordada Mostra dades dinàmiques: la 
latitud recordada 
Label Basic EtComa2 Mostrrar “,”. 
Label Basic EtLongitudRecordada Mostra dades dinàmiques: la 
longitud recordada 
Button Basic BMostrarMapa Feu clic per mostrar el mapa 
LocationSensor Sensors LocationSensor1 Sense GPS info. 
TinyDB Basic TinyDB1 Deseu la ubicació recordada 
persistentment 
ActivityStarter Other stuff ActivityStarter1 Inicieu Mapes 
Establir les propietats dels components de la següent manera: 
• Indiqueu la propietat Text de les etiquetes amb text fix com s'especifica a la 
Taula 7-1. 
• Indiqueu la propietat Text de les etiquetes de dades dinàmiques a GPS "0,0". 
• Indiqueu la propietat Text de les etiquetes per adreces dinàmiques a 
"desconegut". 
• Desactiveu la propietat Enabled del BRegLocActual i BMostrarMapa. 
• Estableixi les propietats ActivityStarter perquè ActivityStarter.StartActivity 
obrirà Google Maps. (Les propietats del ActivityStarter només són parcialment 
visibles a la interfície d'usuari que es mostra a la Figura 7-1.) Taula 7-2 
descriu com han de ser especificats, es pot deixar en blanc qualsevol de les 
propietats que no figuren en la taula.
TEMA 7 4/15 
Taula 7-2. Propietats ActivityStarter per al llançament de Google Maps 
Propietat Valor 
Action android.intent.action.VIEW 
ActivityClass com.google.android.maps.MapsActivity 
ActivityPackage com.google.android.apps.maps 
Nota. El component ActivityStarter permet a la teua aplicació obrir qualsevol 
aplicació d'Android instal·lat al dispositiu. Les propietats indicades en la taula 7-2 es 
poden utilitzar paraula per paraula per obrir Mapes, obrir altres aplicacions, 
consulteu la documentació d'App Inventor en 
http://appinventor.mit.edu/explore/content/using-activity-starter.html 
Afegir comportaments als Components 
Necessitarà els següents comportaments per aquesta aplicació: 
• Quan el LocationSensor obté una lectura, posar les dades de localització 
actuals en les etiquetes corresponents de la interfície d'usuari. Farà que 
l'usuari sàpia que el sensor ha llegit un lloc i està llest per recordar-ho. 
• Quan l'usuari fa clic al BRegLocActual, copieu les dades de localització actuals 
a les etiquetes per a la ubicació recordada. També necessitaràs per 
emmagatzemar les dades d'ubicació i recordar-les si l'usuari tanca i rellança 
l'aplicació. 
• Quan l'usuari fa clic al BMostrarMapa, llançar Google Maps perquè mostri 
adreces a la ubicació recordada. 
• Quan l'aplicació es va rellançar, carregui la ubicació recordada de la base de 
dades a l'aplicació.
TEMA 7 5/15 
Visualització de la ubicació actual 
L'esdeveniment LocationSensor.LocationChanged es produeix no només quan canvia 
la ubicació del dispositiu, sinó també quan el primer sensor rep una lectura. De 
vegades, aquesta primera lectura durarà uns segons i, de vegades no obtindràs una 
lectura en absolut si les línies de visió als satèl·lits GPS estan bloquejats (i depenent 
de la configuració del dispositiu). 
Quan aconsegueixes una lectura d'ubicació, l'aplicació de col·locar les dades en les 
etiquetes apropiades. La Taula 7-3 enumera tots els blocs que necessites per a fer 
això. 
Taula 7-3. Blocs per aconseguir un lloc de lectura i mostrar-la en la interfície d'usuari de l'aplicació 
Tipus de Bloc Calaix Objectiu 
LocationSensor1.LocationChanged LocationSensor Aquest és el controlador d'esdeveniments que 
s'activa quan el telèfon rep una nova lectura del 
GPS. 
set EtAdrecaActual.Text to EtAdrecaActual Col·loqui les noves dades en l'etiqueta de la direcció 
actual. 
LocationSensor1.CurrentAddress LocationSensor Aquesta propietat li dóna una adreça de carrer. 
set EtLatitud.Text to EtLatitud Col·loqui la latitud en l'etiqueta corresponent. 
value latitude My Definitions Connecta set EtLatitud.Text to. 
set EtLongitud.Text to EtLongitud Col·loqui la longitud en l'etiqueta corresponent. 
value longitude My Definitions Connecta set EtLongitud.Text to. 
set BRegLocActual.Enabled to BRegLocActual Recordeu que la lectura de la ubicació actual. 
true Logic Connecta set BRegLocActual.Enabled to. 
Com funcionen els blocs 
Com es pot veure a la Figura 7-2, latitud i longitud són els arguments de 
l'esdeveniment LocationChanged, de manera que les referències a agafar són els del 
calaix My Definitions. CurrentAddress no és un argument, sinó una propietat del 
LocationSensor, així que ho agafo del calaix de LocationSensor. El LocationSensor fa 
algun treball addicional cridant a Google Maps per obtenir una adreça que correspon 
a la ubicació GPS. 
Aquest controlador d'esdeveniments també habilita al BRegLocActual. Hem 
inicialitzat com deshabilitat (sense marcar) al Dissenyador de components perquè 
no hi ha res perquè l'usuari recordi fins que el sensor rep una lectura, de manera 
que ara anem a programar aquest comportament.
TEMA 7 6/15 
Figura 7-2. Ús de LocationSensor per a llegir la ubicació actual 
Posa a prova la teva app. Les proves en viu (proves de la seva aplicació 
en un telèfon connectat al seu ordinador) no funcionen per detectar la 
localització d'aplicacions. Ha d'empaquetar i descarregar l'aplicació al 
seu telèfon mitjançant l'opció " Package for Phone" → " Download to 
Connected Phone" al Dissenyador de components. Algunes dades del GPS ha 
d'aparèixer i el BRegLocActual ha d'estar habilitat. 
Si no obté una lectura, comproveu el Android per Location&Security i tracteu de 
sortir al carrer. 
Enregistrament de la ubicació actual 
Quan l'usuari fa clic al BRegLocActual, les dades de localització més actuals s'han de 
col·locar en les etiquetes per mostrar les dades recordades. La Taula 7-4 mostra els 
blocs que necessitarà per aquesta funcionalitat. 
Taula 7-4. Blocs per gravar i visualitzar la ubicació actual 
Tipus de Bloc Calaix Objectiu 
BRegLocActual.Click BRegLocActual S'activa quan l'usuari fa clic "Recorda" 
set EtAdrecaRecordada.Text to EtAdrecaRecordada Col·loqui les dades del sensor de direcció en 
l'etiqueta de la direcció recordat 
LocationSensor1.CurrentAddress LocationSensor Aquesta propietat li dóna una adreça de 
carrer. 
set EtLatitudRecordada.Text to EtLatitudRecordada Col·loqui la latitud detectada a l'etiqueta 
"recordada" 
LocationSensor.Latitude LocationSensor Connecta set EtLatitudRecordada.Text to 
set EtLongitudRecordada.Text to EtLongitudRecordada Col·loqui la longitud detectada a l'etiqueta 
"recordada". 
LocationSensor.Longitude My Definitions Connecta set EtLongitudRecordada.Text to 
set BMostrarMapa.Enabled to BMostrarMapa Mapa del lloc recordat 
true logic Connecta set BMostrarMapa.Enabled to
TEMA 7 7/15 
Com funcionen els blocs 
Quan l'usuari fa clic al BRegLocActual, la lectura actual dels sensors de posició es 
posa a les etiquetes “recordada”, com es mostra a la Figura 7-3. 
Figura 7-3. La col·locació de la informació de la ubicació actual de les etiquetes “recordada” 
Es donarà compte també que la BMostrarMapa està habilitada. Això pot ser 
complicat, perquè si l'usuari fa clic al BMostrarMapa immediatament, la ubicació 
recordada serà la mateixa que la ubicació actual, de manera que el mapa que 
apareix no proporcionarà molt en termes d'adreces. Però això no és una cosa que 
qualsevol pugui fer, després dels moviments dels usuaris (per exemple, camina al 
concert), la ubicació actual i la ubicació recordada divergeixen. 
Posa a prova la teva app. Descarrega la nova versió de l'aplicació per 
al telèfon i prova de nou. En fer clic al BRegLocActual, és la dada de 
la configuració actual la copiada a la configuració recordada?
TEMA 7 8/15 
Mostrant l'adreça de la ubicació recordada 
Quan l'usuari fa clic al BMostrarMapa, desitja que l'aplicació obriga Google Maps 
amb les adreces des de la ubicació actual de l'usuari a la ubicació recordada (en 
aquest cas, on està estacionat el cotxe). 
El component ActivityStarter pot obrir qualsevol aplicació d'Android, incloent Google 
Maps. Cal establir algunes dades de configuració per utilitzar-lo, sinó per obrir una 
mena navegador o un mapa, les dades que necessiti especificar és bastant senzill. 
Per obrir un mapa, la propietat clau per configurar és la propietat 
ActivityStarter.DataUri. Podeu establir la propietat en qualsevol URL on pots entrar 
directament en un navegador. Si vols explorar això, obriu http://maps.google.com al 
teu navegador i preguntar pel camí entre, per exemple, San Francisco i Oakland. 
Quan apareixen, feu clic al botó d'enllaç a la part superior dreta del mapa i comprovi 
la URL que apareix. Aquest és el tipus d'URL que necessita per construir en la seva 
aplicació. 
La diferència per a la seva aplicació és que les direccions del mapa que crearem 
serà a partir d'un conjunt específic de coordenades de navegació a un altre (no una 
ciutat a una altra). La direcció URL ha d'estar en la forma següent: 
http://maps.google.com/maps?saddr=37.82557,-122.47898&daddr=37.81079,-122.47710 
Per aquesta aplicació, cal construir la URL i establir els paràmetres de la seua adreça 
d'origen (saddr) i l'adreça de destinació (daddr) de forma dinàmica. Abans en els 
temes anteriors has posat el text junt amb make text. Farem això aquí també, la 
connexió de les dades del GPS per les ubicacions recordades i actual. Vas a posar la 
URL que es genera com la propietat ActivityStarter.DataUri, i després cridar 
ActivityStarter.StartActivity. La Taula 7-5 enumera tots els blocs que necessites per 
això.
TEMA 7 9/15 
Com funcionen els blocs 
Quan l'usuari fa clic al BMostrarMapa, el controlador d'esdeveniments crea un URL 
per veure un mapa i crida ActivityStarter per iniciar l'aplicació Maps i carregar el 
mapa, com es mostra a la Figura 7-4. make text s'utilitza per construir la URL per 
enviar a l'aplicació Mapes. 
L'URL resultant consisteix en el domini Maps (http://maps.google.com/maps) 
juntament amb dos paràmetres URL, saddr i daddr, que especifiquen l'origen i 
destinació de les direccions. Per aquesta aplicació, el saddr s'ajusta a la latitud i 
longitud de la ubicació actual, i el daddr s'ajusta a la latitud i longitud de la ubicació 
emmagatzemada per al cotxe. 
Taula 7-5. Blocs per gravar i visualitzar la ubicació actual 
Tipus de Bloc Calaix Objectiu 
BMostrarMapa.Click BMostrarMapa S'activa quan l'usuari faci clic a "Com arribar". 
set ActivityStarter.DataUri to ActivityStarter Establir la direcció del mapa que voleu que aparegui. 
make text Text Construir un URL des de diverses parts. 
text("http://maps.google.com/ 
Text La part fixa de la direcció, la direcció d'origen. 
maps?saddr=") 
EtLatitud.Text EtLatitud La latitud actual. 
text (",") Text Poseu una coma entre la latitud i valors de longitud. 
EtLongitud.Text EtLongitud La longitud actual. 
text ("&daddr=") Text El segon paràmetre de la URL, l'adreça de destinació. 
EtLatitudRecordada.Text EtLatitudRecordada La latitud recordada. 
text (",") Text Poseu una coma entre els valors de latitud i longitud. 
EtLongitudRecordada.Text EtLongitudRecordada La longitud recordada. 
ActivityStarter.StartActivity ActivityStarter Open Maps. 
Figura 7-4. Generar URL que s'usarà per a l'aplicació Mapes 
Posa a prova la teva app. Descarregueu la nova versió de l'aplicació 
per al telèfon i prova de nou. Quan una lectura entra, feu clic al 
BRegLocActual i després fer una passejada. En fer clic al 
BMostrarMapa, és el mapa que mostra com tornar sobre els seus 
passos? Després de mirar el mapa, feu clic al botó de nou un parell de vegades. 
Retorna a la seua aplicació?
TEMA 7 10/15 
Emmagatzematge de la ubicació recordada 
permanentment 
Així que ara tens una aplicació totalment funcional que recorda una ubicació d'inici i 
dibuixa un mapa de tornada a aquest lloc d'on és l'usuari. Però si l'usuari "recorda" 
una ubicació i després es tanca l'aplicació, les dades recordades no estaran 
disponibles quan es torna a obrir. Realment, desitja que l'usuari sigui capaç de 
registrar la ubicació del seu cotxe, tancar l'aplicació i vagi a algun esdeveniment, i 
després reinicieu l'aplicació per obtenir adreces a la ubicació registrada. 
Si ja estàs pensant en tornar a l'aplicació “Cap missatge mentre condueix” (tema 4), 
estàs en el bon camí, hem de emmagatzemar les dades de forma constant en una 
base de dades utilitzant TinyDB. Anem a utilitzar un esquema similar al que es va 
utilitzar en aquesta aplicació: 
1. Quan l'usuari fa clic al BRegLocActual, emmagatzema les dades d'ubicació per 
a la base de dades. 
2. Quan l'aplicació s'inicia, carrega les dades d'ubicació de la base de dades en 
una variable o propietat. 
Anem a començar per modificar el controlador d'esdeveniments BRegLocActual.Click 
perquè emmagatzemi les dades recordades. Per emmagatzemar la latitud, longitud i 
direcció, tindrà tres trucades a TinyDB.StoreValue. Taula 7-6 enumera els blocs 
addicionals que necessitarà. 
Taula 7-6. Blocs per gravar i visualitzar la ubicació actual 
Tipus de Bloc Calaix Objectiu 
TinyDB1.StoreValue (3) TinyDB Emmagatzemar les dades a la base de dades del dispositiu. 
text ("address") Text Connecteu aquesta a la ranura de l'etiqueta de 
TinyDB1.StoreValue. 
LocationSensor.CurrentAddress LocationSensor L'adreça per emmagatzemar persistentment, connectar-lo a la 
ranura de valor TinyDB1.StoreValue. 
text ("lat") Text Connecteu aquesta a la ranura de l'etiqueta de la segona 
TinyDB1.StoreValue. 
LocationSensor.CurrentLatitude LocationSensor La llibertat per emmagatzemar persistentment, connectar-lo a 
la ranura de valor de la segona TinyDB1.StoreValue. 
text ("long") Text Connecteu aquesta a la ranura de l'etiqueta de la tercera 
TinyDB1. StoreValue. 
LocationSensor.CurrentLongitude LocationSensor La longitud per emmagatzemar persistentment, connectar-lo a 
la ranura de valor de la tercera TinyDB1.StoreValue.
TEMA 7 11/15 
Com funcionen els blocs 
Com es mostra a la Figura 7-5, TinyDB1.StoreValue còpia les dades d'ubicació de la 
propietat LocationSensor a la base de dades. Com pots recordar de “Cap missatge 
mentre condueix”, la funció StoreValue té dos arguments, l'etiqueta i el valor. 
L'etiqueta identifica les dades que desitja emmagatzemar, i el valor és la dada real 
que desitja salvar; en aquest cas, la dada LocationSensor. 
Figura 7-5. L'emmagatzematge de les dades de localització recordades en una base de dades
TEMA 7 12/15 
Recuperar la ubicació recordat quan l'aplicació 
s'inicia 
Les dades s'emmagatzemen en una base de dades perquè pugui recordar-les més 
tard. En aquesta aplicació, si un usuari guarda un lloc i després es tanca l'aplicació, 
vol recordar que la informació de la base de dades i mostrar-hi quan es rellança 
l'aplicació. 
Com es va discutir en temes anteriors, l'esdeveniment s'activa quan Screen.Initialize 
llança la seva aplicació. Recuperació de dades des d'una base de dades és una cosa 
molt comú de fer en l'inici, i és exactament el que volem fer per aquesta aplicació. 
Anem a utilitzar la funció TinyDB.GetValue per recuperar les dades 
emmagatzemades del GPS. Perquè necessites per recuperar la direcció 
emmagatzemada, latitud i longitud, tindràs tres cridades a GetValue. Igual que amb 
“Cap missatge mentre condueix”, hauràs de comprovar si efectivament hi ha dades 
allà (si és el primer cop que es va posar en marxa la seva aplicació, TinyDB.GetValue 
retornarà una cadena buida). 
Com repte, a veure si es pot crear aquests blocs i després comparar la seva creació 
als blocs mostrats a la Figura 7-6. 
Figura 7-6. Afegeix la ubicació recordada d'una base de dades perquè estigui disponible quan l'aplicació es tanca i 
torna a obrir
TEMA 7 13/15 
Com funcionen els blocs 
Per entendre aquests blocs, es pot imaginar un usuari obre l'aplicació per primera 
vegada, i obrir-lo més tard després de gravar prèviament les dades de localització. 
La primera vegada que l'usuari obre l'aplicació, no hi haurà cap dada de localització 
a la base de dades per carregar, de manera que no es configurarà les etiquetes 
"recordades" o habilitar el BMostrarMapa. En els llançaments successius, si no hi ha 
dades emmagatzemades, carregarà les dades d'ubicació prèviament guardada a la 
base de dades. 
Els primers blocs criden la TinyDB1.GetValue amb una etiqueta de "direcció", que és 
una de les etiquetes que s'utilitzen quan s'emmagatzemen les dades de localització 
anterior. El valor recuperat es col·loca a la variable tempAddress, on es comprova 
per veure si està buit o conté dades. 
El bloc if és necessari perquè TinyDB retorna un text buit si no hi ha dades d'una 
determinada etiqueta. No hi ha cap dada de la primera vegada que es llança 
l'aplicació i no serà fins que l'usuari fa clic al BRegLocActual. Com que la variable 
tempAddress té ara el valor retornat, els blocs comproven. Si la longitud de 
tempAddress és major que 0, l'aplicació sap que TinyDB retornarà alguna cosa, i el 
valor recuperat es col·loca en EtAdrecaRecordada. 
L'aplicació també sap que si una adreça s'ha guardat, té una latitud i longitud. Per 
tant, aquests valors també es recuperen utilitzant TinyDB.GetValue. Finalment, si les 
dades han estat efectivament recuperades, la BMostrarMapa està habilitat. 
Posa a prova la teva app. Descarregueu la nova versió de l'aplicació 
per al telèfon i prova de nou. Fes clic al BRegLocActual i assegura't que 
les lectures es registren. A continuació, tancar l'aplicació i torna a obrir-lo. 
¿Les dades recordades aparèixen?
TEMA 7 14/15 
L'aplicació completa: Android, on és el meu cotxe? 
La figura 7-7 mostra els blocs finals per a l'aplicació completa "Android, on és el meu 
cotxe?" 
Figura 7-7. Els blocs de "Android, on és el meu cotxe?" 
Variacions 
Aquestes són algunes de les variacions que pot experimentar: 
• Crear "Android, On són tots?", una aplicació que permet a un grup de 
persones rastrejar el parador dels altres. Si està fent senderisme o al parc, 
aquesta aplicació podria ajudar a estalviar temps i, possiblement, fins i tot 
salvar-li la vida. Les dades per a aquesta aplicació és compartida, de manera 
que haurà d'utilitzar una base de dades web i el component TinyWebDB en 
lloc de TinyDB. 
• Crear una aplicació “molletes de pa” que rastreja el seu parador mitjançant el 
registre de cada canvi d'ubicació d'una llista. Només ha de gravar una nova 
ruta de navegació si la localització ha canviat en una quantitat determinada, o 
una certa quantitat de temps ha transcorregut, perquè fins i tot un lleuger 
moviment pot generar una lectura d'ubicació nova. Haurà de guardar les 
ubicacions registrades en una llista.
TEMA 7 15/15 
Resum 
Aquestes són algunes de les idees que hem cobert en aquest tutorial: 
• El component LocationSensor pot informar l'usuari de latitud, longitud i 
direcció actual. El seu esdeveniment LocationChanged s'activa quan el sensor 
rep la seva primera lectura, i quan canvia la lectura (el dispositiu s'ha mogut). 
• El component ActivityStarter pot llançar qualsevol aplicació, incloent Google 
Maps. Per Maps, s'estableix la propietat DataUri a la URL del mapa que desitgi 
mostrar. Per mostrar direccions entre les coordenades GPS, la direcció serà al 
següent format, però et reemplaci les dades d'exemple que es mostren aquí 
amb real coordenades GPS: 
http://maps.google.com/maps/?saddr=0.1,0.1&daddr=0.2,0.2 
• make text s'usa per armar (concatenar) partides separades del text en un 
objecte de text. Permet concatenar dades dinàmiques amb text estàtic. Amb 
la URL Maps, les coordenades de GPS són les dades dinàmiques. 
• TinyDB li permet emmagatzemar dades de manera constant a la base de 
dades del telèfon. Considerant que les dades d'una variable o propietat es 
perd quan es tanca una aplicació, les dades emmagatzemades a la base de 
dades es poden carregar cada vegada que s'obre l'aplicació.

Mais conteúdo relacionado

Semelhante a T7 on

Semelhante a T7 on (8)

T2 paint pot
T2 paint potT2 paint pot
T2 paint pot
 
Apps amb component GEO
Apps amb component GEOApps amb component GEO
Apps amb component GEO
 
MItjans Interactius_practica
MItjans Interactius_practicaMItjans Interactius_practica
MItjans Interactius_practica
 
T1 hola gateta
T1 hola gatetaT1 hola gateta
T1 hola gateta
 
Aplicacions Interactives multiplataforma_pac1
Aplicacions Interactives multiplataforma_pac1Aplicacions Interactives multiplataforma_pac1
Aplicacions Interactives multiplataforma_pac1
 
Fonaments i evolució multimèdia_PAC3_UOC
Fonaments i evolució multimèdia_PAC3_UOCFonaments i evolució multimèdia_PAC3_UOC
Fonaments i evolució multimèdia_PAC3_UOC
 
T4 cap missatge
T4 cap missatgeT4 cap missatge
T4 cap missatge
 
Apps recomanades nadal 16-17
Apps recomanades nadal 16-17Apps recomanades nadal 16-17
Apps recomanades nadal 16-17
 

Mais de tecnovicent

Unidad 3 herramientas básicas en l liure_x_navegación por internet
Unidad 3 herramientas básicas en l liure_x_navegación por internetUnidad 3 herramientas básicas en l liure_x_navegación por internet
Unidad 3 herramientas básicas en l liure_x_navegación por internettecnovicent
 
Unidad 6 herramientas de configuración y administración básica de lliure x
Unidad 6 herramientas de configuración y administración básica de lliure xUnidad 6 herramientas de configuración y administración básica de lliure x
Unidad 6 herramientas de configuración y administración básica de lliure xtecnovicent
 
Unidad 5 aplicaciones educativas en lliure x y búsqueda de recursos en la web
Unidad 5  aplicaciones educativas en lliure x y búsqueda de recursos en la webUnidad 5  aplicaciones educativas en lliure x y búsqueda de recursos en la web
Unidad 5 aplicaciones educativas en lliure x y búsqueda de recursos en la webtecnovicent
 
Unidad 4 herramientas básicas en l liure_x_multimedia
Unidad 4  herramientas básicas en l liure_x_multimediaUnidad 4  herramientas básicas en l liure_x_multimedia
Unidad 4 herramientas básicas en l liure_x_multimediatecnovicent
 
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...tecnovicent
 
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...tecnovicent
 
Unidad 2 organización de la información y del trabajo en lliure x
Unidad 2 organización de la información y del trabajo en lliure xUnidad 2 organización de la información y del trabajo en lliure x
Unidad 2 organización de la información y del trabajo en lliure xtecnovicent
 
Unidad 1 primeros pasos con lliure x
Unidad 1 primeros pasos con lliure xUnidad 1 primeros pasos con lliure x
Unidad 1 primeros pasos con lliure xtecnovicent
 
T3 talp barrejat
T3 talp barrejatT3 talp barrejat
T3 talp barrejattecnovicent
 

Mais de tecnovicent (20)

Exercici word
Exercici wordExercici word
Exercici word
 
Unidad 3 herramientas básicas en l liure_x_navegación por internet
Unidad 3 herramientas básicas en l liure_x_navegación por internetUnidad 3 herramientas básicas en l liure_x_navegación por internet
Unidad 3 herramientas básicas en l liure_x_navegación por internet
 
Manual Firefox
Manual FirefoxManual Firefox
Manual Firefox
 
Manual Writer
Manual WriterManual Writer
Manual Writer
 
Manual Math
Manual MathManual Math
Manual Math
 
Manual Impress
Manual ImpressManual Impress
Manual Impress
 
Manual Calc
Manual CalcManual Calc
Manual Calc
 
Unidad 6 herramientas de configuración y administración básica de lliure x
Unidad 6 herramientas de configuración y administración básica de lliure xUnidad 6 herramientas de configuración y administración básica de lliure x
Unidad 6 herramientas de configuración y administración básica de lliure x
 
Unidad 5 aplicaciones educativas en lliure x y búsqueda de recursos en la web
Unidad 5  aplicaciones educativas en lliure x y búsqueda de recursos en la webUnidad 5  aplicaciones educativas en lliure x y búsqueda de recursos en la web
Unidad 5 aplicaciones educativas en lliure x y búsqueda de recursos en la web
 
Unidad 4 herramientas básicas en l liure_x_multimedia
Unidad 4  herramientas básicas en l liure_x_multimediaUnidad 4  herramientas básicas en l liure_x_multimedia
Unidad 4 herramientas básicas en l liure_x_multimedia
 
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
 
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
Unidad 3 herramientas básicas en l liure_x_navegación por internet y creación...
 
Unidad 2 organización de la información y del trabajo en lliure x
Unidad 2 organización de la información y del trabajo en lliure xUnidad 2 organización de la información y del trabajo en lliure x
Unidad 2 organización de la información y del trabajo en lliure x
 
Unidad 1 primeros pasos con lliure x
Unidad 1 primeros pasos con lliure xUnidad 1 primeros pasos con lliure x
Unidad 1 primeros pasos con lliure x
 
T10 questionari
T10 questionariT10 questionari
T10 questionari
 
T9 xilofon 1
T9 xilofon 1T9 xilofon 1
T9 xilofon 1
 
T9 xilofon
T9 xilofonT9 xilofon
T9 xilofon
 
T8 concurs
T8 concursT8 concurs
T8 concurs
 
T5 marieta
T5 marietaT5 marieta
T5 marieta
 
T3 talp barrejat
T3 talp barrejatT3 talp barrejat
T3 talp barrejat
 

T7 on

  • 1. TEMA 7 1/15 Android, on és el meu cotxe? Has aparcat tan a prop de l'estadi com ha sigut possible, però quan el concert acaba, no tens ni idea d'on està el teu cotxe. Els teus amics són igual de despistats. Afortunadament, no has perdut el teu telèfon Android, que mai oblida res, i et recorda que tens la nova aplicació, "Android, on és el meu cotxe?". Amb aquesta aplicació, feu clic a un botó quan estacioni el seu cotxe, i el Android utilitza el sensor de localització per registrar les coordenades i adreça del GPS del cotxe. Més tard, quan torni a obrir l'aplicació, aquesta li dóna les adreces des d'on es troba actualment i li recordada la situació. Problema resolt! El que aprendràs Aquesta aplicació cobreix els següents conceptes: • Determinació de la ubicació del dispositiu Android mitjançant el component LocationSensor. • Enregistrament de dades en una base de dades directament al dispositiu mitjançant TinyDB. • Utilització del component ActivityStarter per obrir Google Maps des de la teua aplicació i mostra les instruccions d'un lloc a un altre. Introducció Connectar-se a la pàgina web de App Inventor i començar un nou projecte. El nom de "AndroidOn" (els noms dels projectes no poden tenir espais) i també s'estableix el títol de la pantalla de "Android, on és el meu cotxe?". Obre l'Editor de Blocs i connectar al telèfon.
  • 2. TEMA 7 2/15 Disseny dels components La interfície d'usuari "Android, on és el meu cotxe?" consta d'etiquetes per a mostrar les seves ubicacions actuals i recordar-les, i botons per gravar un lloc i mostrar les instruccions en en mateix lloc. Necessitaràs algunes etiquetes que només mostren text estàtic, per exemple, EtGPS proporcionarà el text "GPS:" que apareix en la interfície d'usuari. Altres etiquetes, com ara EtLatitud, mostren les dades de la ubicació del sensor. Per aquestes etiquetes, se li proporciona un valor per defecte, (0,0), que canviarà a mesura que adquireix la informació d'ubicació GPS. També tindrà tres components no visibles: un LocationSensor per obtenir la ubicació actual, un TinyDB per emmagatzemar persistentment llocs, i un ActivityStarter per al llançament de Google Maps per obtenir adreces, entre les ubicacions actuals i emmagatzemats. Pots construir els components de la instantània del Dissenyador de components a la Figura 7-1. Figura 7-1. El "Android, on és el meu cotxe?" Aplicació al Dissenyador de components Pots construir la interfície d'usuari que es mostra a la Figura 7-1 arrossegant els components a la Taula 7-1.
  • 3. TEMA 7 3/15 Taula 7-1. Tots els components de l'aplicació Tipus de Component Paleta Nom assignat Objectiu Label Basic EtUbicacioActual Mostra la capçalera "La teua ubicació actual" HorizontalArrangement Screen Arrangement CurrentAddrArrangement Organitzar la informació d'adreça direcció Label Basic EtAdreca Visualitzar el text de "Adreça:" Label Basic EtAdrecaActual Mostra dades dinàmiques: l'adreça actual HorizontalArrangement Screen Arrangement CurrentGPSArrangement Organitzar la informació GPS Label Basic EtGPS Visualitzar el text de "GPS:" Label Basic EtLatitud Mostra dades dinàmiques: la latitud Label Basic EtComa Mostra “,” Label Basic EtLongitud Mostra dades dinàmiques: la longitud actual Button Basic BRegLocActual Feu clic per registrar la ubicació actual HorizontalArrangement Screen Arrangement RememberAddrArrangement Organitzar info per a recordar l'adreça Label Basic EtLlocRecordat Mostra el text "Lloc recordat". Label Basic EtAdrecaRecordada Mostra dades dinàmiques: l'adreça recordada HorizontalArrangement Screen Arrangement RememberGPSArrangement Organitzar la informació recordada GPS Label Basic EtGPSText Mostra el text “GPS” Label Basic EtLatitudRecordada Mostra dades dinàmiques: la latitud recordada Label Basic EtComa2 Mostrrar “,”. Label Basic EtLongitudRecordada Mostra dades dinàmiques: la longitud recordada Button Basic BMostrarMapa Feu clic per mostrar el mapa LocationSensor Sensors LocationSensor1 Sense GPS info. TinyDB Basic TinyDB1 Deseu la ubicació recordada persistentment ActivityStarter Other stuff ActivityStarter1 Inicieu Mapes Establir les propietats dels components de la següent manera: • Indiqueu la propietat Text de les etiquetes amb text fix com s'especifica a la Taula 7-1. • Indiqueu la propietat Text de les etiquetes de dades dinàmiques a GPS "0,0". • Indiqueu la propietat Text de les etiquetes per adreces dinàmiques a "desconegut". • Desactiveu la propietat Enabled del BRegLocActual i BMostrarMapa. • Estableixi les propietats ActivityStarter perquè ActivityStarter.StartActivity obrirà Google Maps. (Les propietats del ActivityStarter només són parcialment visibles a la interfície d'usuari que es mostra a la Figura 7-1.) Taula 7-2 descriu com han de ser especificats, es pot deixar en blanc qualsevol de les propietats que no figuren en la taula.
  • 4. TEMA 7 4/15 Taula 7-2. Propietats ActivityStarter per al llançament de Google Maps Propietat Valor Action android.intent.action.VIEW ActivityClass com.google.android.maps.MapsActivity ActivityPackage com.google.android.apps.maps Nota. El component ActivityStarter permet a la teua aplicació obrir qualsevol aplicació d'Android instal·lat al dispositiu. Les propietats indicades en la taula 7-2 es poden utilitzar paraula per paraula per obrir Mapes, obrir altres aplicacions, consulteu la documentació d'App Inventor en http://appinventor.mit.edu/explore/content/using-activity-starter.html Afegir comportaments als Components Necessitarà els següents comportaments per aquesta aplicació: • Quan el LocationSensor obté una lectura, posar les dades de localització actuals en les etiquetes corresponents de la interfície d'usuari. Farà que l'usuari sàpia que el sensor ha llegit un lloc i està llest per recordar-ho. • Quan l'usuari fa clic al BRegLocActual, copieu les dades de localització actuals a les etiquetes per a la ubicació recordada. També necessitaràs per emmagatzemar les dades d'ubicació i recordar-les si l'usuari tanca i rellança l'aplicació. • Quan l'usuari fa clic al BMostrarMapa, llançar Google Maps perquè mostri adreces a la ubicació recordada. • Quan l'aplicació es va rellançar, carregui la ubicació recordada de la base de dades a l'aplicació.
  • 5. TEMA 7 5/15 Visualització de la ubicació actual L'esdeveniment LocationSensor.LocationChanged es produeix no només quan canvia la ubicació del dispositiu, sinó també quan el primer sensor rep una lectura. De vegades, aquesta primera lectura durarà uns segons i, de vegades no obtindràs una lectura en absolut si les línies de visió als satèl·lits GPS estan bloquejats (i depenent de la configuració del dispositiu). Quan aconsegueixes una lectura d'ubicació, l'aplicació de col·locar les dades en les etiquetes apropiades. La Taula 7-3 enumera tots els blocs que necessites per a fer això. Taula 7-3. Blocs per aconseguir un lloc de lectura i mostrar-la en la interfície d'usuari de l'aplicació Tipus de Bloc Calaix Objectiu LocationSensor1.LocationChanged LocationSensor Aquest és el controlador d'esdeveniments que s'activa quan el telèfon rep una nova lectura del GPS. set EtAdrecaActual.Text to EtAdrecaActual Col·loqui les noves dades en l'etiqueta de la direcció actual. LocationSensor1.CurrentAddress LocationSensor Aquesta propietat li dóna una adreça de carrer. set EtLatitud.Text to EtLatitud Col·loqui la latitud en l'etiqueta corresponent. value latitude My Definitions Connecta set EtLatitud.Text to. set EtLongitud.Text to EtLongitud Col·loqui la longitud en l'etiqueta corresponent. value longitude My Definitions Connecta set EtLongitud.Text to. set BRegLocActual.Enabled to BRegLocActual Recordeu que la lectura de la ubicació actual. true Logic Connecta set BRegLocActual.Enabled to. Com funcionen els blocs Com es pot veure a la Figura 7-2, latitud i longitud són els arguments de l'esdeveniment LocationChanged, de manera que les referències a agafar són els del calaix My Definitions. CurrentAddress no és un argument, sinó una propietat del LocationSensor, així que ho agafo del calaix de LocationSensor. El LocationSensor fa algun treball addicional cridant a Google Maps per obtenir una adreça que correspon a la ubicació GPS. Aquest controlador d'esdeveniments també habilita al BRegLocActual. Hem inicialitzat com deshabilitat (sense marcar) al Dissenyador de components perquè no hi ha res perquè l'usuari recordi fins que el sensor rep una lectura, de manera que ara anem a programar aquest comportament.
  • 6. TEMA 7 6/15 Figura 7-2. Ús de LocationSensor per a llegir la ubicació actual Posa a prova la teva app. Les proves en viu (proves de la seva aplicació en un telèfon connectat al seu ordinador) no funcionen per detectar la localització d'aplicacions. Ha d'empaquetar i descarregar l'aplicació al seu telèfon mitjançant l'opció " Package for Phone" → " Download to Connected Phone" al Dissenyador de components. Algunes dades del GPS ha d'aparèixer i el BRegLocActual ha d'estar habilitat. Si no obté una lectura, comproveu el Android per Location&Security i tracteu de sortir al carrer. Enregistrament de la ubicació actual Quan l'usuari fa clic al BRegLocActual, les dades de localització més actuals s'han de col·locar en les etiquetes per mostrar les dades recordades. La Taula 7-4 mostra els blocs que necessitarà per aquesta funcionalitat. Taula 7-4. Blocs per gravar i visualitzar la ubicació actual Tipus de Bloc Calaix Objectiu BRegLocActual.Click BRegLocActual S'activa quan l'usuari fa clic "Recorda" set EtAdrecaRecordada.Text to EtAdrecaRecordada Col·loqui les dades del sensor de direcció en l'etiqueta de la direcció recordat LocationSensor1.CurrentAddress LocationSensor Aquesta propietat li dóna una adreça de carrer. set EtLatitudRecordada.Text to EtLatitudRecordada Col·loqui la latitud detectada a l'etiqueta "recordada" LocationSensor.Latitude LocationSensor Connecta set EtLatitudRecordada.Text to set EtLongitudRecordada.Text to EtLongitudRecordada Col·loqui la longitud detectada a l'etiqueta "recordada". LocationSensor.Longitude My Definitions Connecta set EtLongitudRecordada.Text to set BMostrarMapa.Enabled to BMostrarMapa Mapa del lloc recordat true logic Connecta set BMostrarMapa.Enabled to
  • 7. TEMA 7 7/15 Com funcionen els blocs Quan l'usuari fa clic al BRegLocActual, la lectura actual dels sensors de posició es posa a les etiquetes “recordada”, com es mostra a la Figura 7-3. Figura 7-3. La col·locació de la informació de la ubicació actual de les etiquetes “recordada” Es donarà compte també que la BMostrarMapa està habilitada. Això pot ser complicat, perquè si l'usuari fa clic al BMostrarMapa immediatament, la ubicació recordada serà la mateixa que la ubicació actual, de manera que el mapa que apareix no proporcionarà molt en termes d'adreces. Però això no és una cosa que qualsevol pugui fer, després dels moviments dels usuaris (per exemple, camina al concert), la ubicació actual i la ubicació recordada divergeixen. Posa a prova la teva app. Descarrega la nova versió de l'aplicació per al telèfon i prova de nou. En fer clic al BRegLocActual, és la dada de la configuració actual la copiada a la configuració recordada?
  • 8. TEMA 7 8/15 Mostrant l'adreça de la ubicació recordada Quan l'usuari fa clic al BMostrarMapa, desitja que l'aplicació obriga Google Maps amb les adreces des de la ubicació actual de l'usuari a la ubicació recordada (en aquest cas, on està estacionat el cotxe). El component ActivityStarter pot obrir qualsevol aplicació d'Android, incloent Google Maps. Cal establir algunes dades de configuració per utilitzar-lo, sinó per obrir una mena navegador o un mapa, les dades que necessiti especificar és bastant senzill. Per obrir un mapa, la propietat clau per configurar és la propietat ActivityStarter.DataUri. Podeu establir la propietat en qualsevol URL on pots entrar directament en un navegador. Si vols explorar això, obriu http://maps.google.com al teu navegador i preguntar pel camí entre, per exemple, San Francisco i Oakland. Quan apareixen, feu clic al botó d'enllaç a la part superior dreta del mapa i comprovi la URL que apareix. Aquest és el tipus d'URL que necessita per construir en la seva aplicació. La diferència per a la seva aplicació és que les direccions del mapa que crearem serà a partir d'un conjunt específic de coordenades de navegació a un altre (no una ciutat a una altra). La direcció URL ha d'estar en la forma següent: http://maps.google.com/maps?saddr=37.82557,-122.47898&daddr=37.81079,-122.47710 Per aquesta aplicació, cal construir la URL i establir els paràmetres de la seua adreça d'origen (saddr) i l'adreça de destinació (daddr) de forma dinàmica. Abans en els temes anteriors has posat el text junt amb make text. Farem això aquí també, la connexió de les dades del GPS per les ubicacions recordades i actual. Vas a posar la URL que es genera com la propietat ActivityStarter.DataUri, i després cridar ActivityStarter.StartActivity. La Taula 7-5 enumera tots els blocs que necessites per això.
  • 9. TEMA 7 9/15 Com funcionen els blocs Quan l'usuari fa clic al BMostrarMapa, el controlador d'esdeveniments crea un URL per veure un mapa i crida ActivityStarter per iniciar l'aplicació Maps i carregar el mapa, com es mostra a la Figura 7-4. make text s'utilitza per construir la URL per enviar a l'aplicació Mapes. L'URL resultant consisteix en el domini Maps (http://maps.google.com/maps) juntament amb dos paràmetres URL, saddr i daddr, que especifiquen l'origen i destinació de les direccions. Per aquesta aplicació, el saddr s'ajusta a la latitud i longitud de la ubicació actual, i el daddr s'ajusta a la latitud i longitud de la ubicació emmagatzemada per al cotxe. Taula 7-5. Blocs per gravar i visualitzar la ubicació actual Tipus de Bloc Calaix Objectiu BMostrarMapa.Click BMostrarMapa S'activa quan l'usuari faci clic a "Com arribar". set ActivityStarter.DataUri to ActivityStarter Establir la direcció del mapa que voleu que aparegui. make text Text Construir un URL des de diverses parts. text("http://maps.google.com/ Text La part fixa de la direcció, la direcció d'origen. maps?saddr=") EtLatitud.Text EtLatitud La latitud actual. text (",") Text Poseu una coma entre la latitud i valors de longitud. EtLongitud.Text EtLongitud La longitud actual. text ("&daddr=") Text El segon paràmetre de la URL, l'adreça de destinació. EtLatitudRecordada.Text EtLatitudRecordada La latitud recordada. text (",") Text Poseu una coma entre els valors de latitud i longitud. EtLongitudRecordada.Text EtLongitudRecordada La longitud recordada. ActivityStarter.StartActivity ActivityStarter Open Maps. Figura 7-4. Generar URL que s'usarà per a l'aplicació Mapes Posa a prova la teva app. Descarregueu la nova versió de l'aplicació per al telèfon i prova de nou. Quan una lectura entra, feu clic al BRegLocActual i després fer una passejada. En fer clic al BMostrarMapa, és el mapa que mostra com tornar sobre els seus passos? Després de mirar el mapa, feu clic al botó de nou un parell de vegades. Retorna a la seua aplicació?
  • 10. TEMA 7 10/15 Emmagatzematge de la ubicació recordada permanentment Així que ara tens una aplicació totalment funcional que recorda una ubicació d'inici i dibuixa un mapa de tornada a aquest lloc d'on és l'usuari. Però si l'usuari "recorda" una ubicació i després es tanca l'aplicació, les dades recordades no estaran disponibles quan es torna a obrir. Realment, desitja que l'usuari sigui capaç de registrar la ubicació del seu cotxe, tancar l'aplicació i vagi a algun esdeveniment, i després reinicieu l'aplicació per obtenir adreces a la ubicació registrada. Si ja estàs pensant en tornar a l'aplicació “Cap missatge mentre condueix” (tema 4), estàs en el bon camí, hem de emmagatzemar les dades de forma constant en una base de dades utilitzant TinyDB. Anem a utilitzar un esquema similar al que es va utilitzar en aquesta aplicació: 1. Quan l'usuari fa clic al BRegLocActual, emmagatzema les dades d'ubicació per a la base de dades. 2. Quan l'aplicació s'inicia, carrega les dades d'ubicació de la base de dades en una variable o propietat. Anem a començar per modificar el controlador d'esdeveniments BRegLocActual.Click perquè emmagatzemi les dades recordades. Per emmagatzemar la latitud, longitud i direcció, tindrà tres trucades a TinyDB.StoreValue. Taula 7-6 enumera els blocs addicionals que necessitarà. Taula 7-6. Blocs per gravar i visualitzar la ubicació actual Tipus de Bloc Calaix Objectiu TinyDB1.StoreValue (3) TinyDB Emmagatzemar les dades a la base de dades del dispositiu. text ("address") Text Connecteu aquesta a la ranura de l'etiqueta de TinyDB1.StoreValue. LocationSensor.CurrentAddress LocationSensor L'adreça per emmagatzemar persistentment, connectar-lo a la ranura de valor TinyDB1.StoreValue. text ("lat") Text Connecteu aquesta a la ranura de l'etiqueta de la segona TinyDB1.StoreValue. LocationSensor.CurrentLatitude LocationSensor La llibertat per emmagatzemar persistentment, connectar-lo a la ranura de valor de la segona TinyDB1.StoreValue. text ("long") Text Connecteu aquesta a la ranura de l'etiqueta de la tercera TinyDB1. StoreValue. LocationSensor.CurrentLongitude LocationSensor La longitud per emmagatzemar persistentment, connectar-lo a la ranura de valor de la tercera TinyDB1.StoreValue.
  • 11. TEMA 7 11/15 Com funcionen els blocs Com es mostra a la Figura 7-5, TinyDB1.StoreValue còpia les dades d'ubicació de la propietat LocationSensor a la base de dades. Com pots recordar de “Cap missatge mentre condueix”, la funció StoreValue té dos arguments, l'etiqueta i el valor. L'etiqueta identifica les dades que desitja emmagatzemar, i el valor és la dada real que desitja salvar; en aquest cas, la dada LocationSensor. Figura 7-5. L'emmagatzematge de les dades de localització recordades en una base de dades
  • 12. TEMA 7 12/15 Recuperar la ubicació recordat quan l'aplicació s'inicia Les dades s'emmagatzemen en una base de dades perquè pugui recordar-les més tard. En aquesta aplicació, si un usuari guarda un lloc i després es tanca l'aplicació, vol recordar que la informació de la base de dades i mostrar-hi quan es rellança l'aplicació. Com es va discutir en temes anteriors, l'esdeveniment s'activa quan Screen.Initialize llança la seva aplicació. Recuperació de dades des d'una base de dades és una cosa molt comú de fer en l'inici, i és exactament el que volem fer per aquesta aplicació. Anem a utilitzar la funció TinyDB.GetValue per recuperar les dades emmagatzemades del GPS. Perquè necessites per recuperar la direcció emmagatzemada, latitud i longitud, tindràs tres cridades a GetValue. Igual que amb “Cap missatge mentre condueix”, hauràs de comprovar si efectivament hi ha dades allà (si és el primer cop que es va posar en marxa la seva aplicació, TinyDB.GetValue retornarà una cadena buida). Com repte, a veure si es pot crear aquests blocs i després comparar la seva creació als blocs mostrats a la Figura 7-6. Figura 7-6. Afegeix la ubicació recordada d'una base de dades perquè estigui disponible quan l'aplicació es tanca i torna a obrir
  • 13. TEMA 7 13/15 Com funcionen els blocs Per entendre aquests blocs, es pot imaginar un usuari obre l'aplicació per primera vegada, i obrir-lo més tard després de gravar prèviament les dades de localització. La primera vegada que l'usuari obre l'aplicació, no hi haurà cap dada de localització a la base de dades per carregar, de manera que no es configurarà les etiquetes "recordades" o habilitar el BMostrarMapa. En els llançaments successius, si no hi ha dades emmagatzemades, carregarà les dades d'ubicació prèviament guardada a la base de dades. Els primers blocs criden la TinyDB1.GetValue amb una etiqueta de "direcció", que és una de les etiquetes que s'utilitzen quan s'emmagatzemen les dades de localització anterior. El valor recuperat es col·loca a la variable tempAddress, on es comprova per veure si està buit o conté dades. El bloc if és necessari perquè TinyDB retorna un text buit si no hi ha dades d'una determinada etiqueta. No hi ha cap dada de la primera vegada que es llança l'aplicació i no serà fins que l'usuari fa clic al BRegLocActual. Com que la variable tempAddress té ara el valor retornat, els blocs comproven. Si la longitud de tempAddress és major que 0, l'aplicació sap que TinyDB retornarà alguna cosa, i el valor recuperat es col·loca en EtAdrecaRecordada. L'aplicació també sap que si una adreça s'ha guardat, té una latitud i longitud. Per tant, aquests valors també es recuperen utilitzant TinyDB.GetValue. Finalment, si les dades han estat efectivament recuperades, la BMostrarMapa està habilitat. Posa a prova la teva app. Descarregueu la nova versió de l'aplicació per al telèfon i prova de nou. Fes clic al BRegLocActual i assegura't que les lectures es registren. A continuació, tancar l'aplicació i torna a obrir-lo. ¿Les dades recordades aparèixen?
  • 14. TEMA 7 14/15 L'aplicació completa: Android, on és el meu cotxe? La figura 7-7 mostra els blocs finals per a l'aplicació completa "Android, on és el meu cotxe?" Figura 7-7. Els blocs de "Android, on és el meu cotxe?" Variacions Aquestes són algunes de les variacions que pot experimentar: • Crear "Android, On són tots?", una aplicació que permet a un grup de persones rastrejar el parador dels altres. Si està fent senderisme o al parc, aquesta aplicació podria ajudar a estalviar temps i, possiblement, fins i tot salvar-li la vida. Les dades per a aquesta aplicació és compartida, de manera que haurà d'utilitzar una base de dades web i el component TinyWebDB en lloc de TinyDB. • Crear una aplicació “molletes de pa” que rastreja el seu parador mitjançant el registre de cada canvi d'ubicació d'una llista. Només ha de gravar una nova ruta de navegació si la localització ha canviat en una quantitat determinada, o una certa quantitat de temps ha transcorregut, perquè fins i tot un lleuger moviment pot generar una lectura d'ubicació nova. Haurà de guardar les ubicacions registrades en una llista.
  • 15. TEMA 7 15/15 Resum Aquestes són algunes de les idees que hem cobert en aquest tutorial: • El component LocationSensor pot informar l'usuari de latitud, longitud i direcció actual. El seu esdeveniment LocationChanged s'activa quan el sensor rep la seva primera lectura, i quan canvia la lectura (el dispositiu s'ha mogut). • El component ActivityStarter pot llançar qualsevol aplicació, incloent Google Maps. Per Maps, s'estableix la propietat DataUri a la URL del mapa que desitgi mostrar. Per mostrar direccions entre les coordenades GPS, la direcció serà al següent format, però et reemplaci les dades d'exemple que es mostren aquí amb real coordenades GPS: http://maps.google.com/maps/?saddr=0.1,0.1&daddr=0.2,0.2 • make text s'usa per armar (concatenar) partides separades del text en un objecte de text. Permet concatenar dades dinàmiques amb text estàtic. Amb la URL Maps, les coordenades de GPS són les dades dinàmiques. • TinyDB li permet emmagatzemar dades de manera constant a la base de dades del telèfon. Considerant que les dades d'una variable o propietat es perd quan es tanca una aplicació, les dades emmagatzemades a la base de dades es poden carregar cada vegada que s'obre l'aplicació.