T7 on

15
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.

Transcript of T7 on

Page 1: T7 on

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.

Page 2: T7 on

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.

Page 3: T7 on

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.

Page 4: T7 on

TEMA 7 4/15

Taula 7-2. Propietats ActivityStarter per al llançament de Google MapsPropietat 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ó.

Page 5: T7 on

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.

Page 6: T7 on

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ó actualTipus 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

Page 7: T7 on

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?

Page 8: T7 on

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ò.

Page 9: T7 on

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ó actualTipus 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/maps?saddr=")

Text La part fixa de la direcció, la direcció d'origen.

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ó?

Page 10: T7 on

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ó actualTipus 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.

Page 11: T7 on

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

Page 12: T7 on

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

Page 13: T7 on

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?

Page 14: T7 on

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.

Page 15: T7 on

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ó.