AppInventor de Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Sms y Localización GPS ¿ Qué aprenderé ?............................................................... ?...................................................................................... ..................................................................3 ...........................................3 Empezamos.......................... Empezamos................................................. .............................................. .............................................. .............................................. ............................................3 .....................3 Diseñar los omponentes...................... omponentes............................................. .............................................. .............................................. ..................................... ......................4 ........4 De!inir el omportamiento de los omponentes............................................ omponentes............................................................................. .................................." ." #rogramar una respuesta autom$tia............................. autom$tia.................................................... .............................................. ......................................." ................" #%&E'A((((........................................ #%&E'A((((............................................................... .............................................. .............................................. ...................................................) ............................) Esri*ir una respuesta personalizada............................... personalizada...................................................... ................................................... .................................... ........++ #%&E'A((((........................................ #%&E'A((((............................................................... .............................................. .............................................. ...................................................+ ............................+ Guardar la respuesta personalizada en una *ase de datos.................................. datos...........................................................+ .........................+ %euperar la respuesta personalizada personalizada ada ,ez -ue se a*ra la apliain.................................. / #%&E'A((((........................................ #%&E'A((((............................................................... .............................................. .............................................. ................................................. ..........................03 03 1eer en ,oz alta los mensa2es rei*idos...... r ei*idos............................. .............................................. ....................................................... ................................03 03 #%&E'A((((........................................ #%&E'A((((............................................................... .............................................. .............................................. ................................................. ..........................04 04 Agregar a la respuesta in!ormain so*re la u*iain del telé!ono.......................... telé!ono........................................ ..............04 04 nluir nuestra posiin en el mensa2e de respuesta.............................. respuesta..................................................... ....................................0" .............0" #%&E'A((((........................................ #%&E'A((((............................................................... .............................................. .............................................. ................................................. ..........................0) 0) ariaiones............................ ariaiones................................................... .............................................. .............................................. .................................................... ........................................ ...........0+ 0+ En este apítulo ,eremos la apliain No escribas mientras conduzcas5 apaz de responder autom$tiamente a los mensa2es de te6to -ue rei*a tu telé!ono m,il mientras ondues. El reador de este programa !ue un estudiante de in!orm$tia 7 lo desarroll utilizando AppInventor. Es pareido a uno reado por State Farm Insurance -ue alanz mu8a !ama.
Demuestra la !ailidad -ue tiene Appn,entor para aeder a algunas propiedades de los telé!onos Android5 Android5 omo la generain de mensa2es de te6to 9:;:<5 la gestin de las *ases de datos5 la apaidad para leer en ,oz alta un te6to 7 el sensor de u*iain.
iente Destruels ;oreno
#$gina 0
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
En Estados &nidos5 el =+> de los aidentes de tr$!io esta*an pro,oados por ondutores -ue 8a*la*an por su telé!ono m,il en el año =0. ;$s de =. tu,ieron lugar mientras el -ue onduía esta*a esri*iendo un mensa2e de te6to. #reisamente5 por esto5 mu8os países 8an pro8i*ido el uso de m,iles uando se est$ al ,olante. #uedes ,er el te6to ompleto desde a-uí. Daniel @innegan5 un alumno -ue asistía en el año =0 a un urso de programain de AppInventor tu,o una idea
para soluionar el pro*lema de los ondutores 7 los telé!onos m,iles.
Cre un apliain apaz de responder autom$tiamente ual-uier mensa2e de te6to. En,ía un mensa2e al remitente del tipo “I'm driving right now, I'll contact you shortly” . Después de plantear la idea iniial5 pens en una serie de me2oras •
Los usuarios pueden modificar las respuestas de la aplicación para adaptarla a diferentes situaciones por e2emplo5 si estas en el ine ,iendo una pelíula o enando on
los amigos5 podr$s personalizar la ontestain.
•
La aplicación lee el texto en voz alta Aun-ue sepas -ue responder$ autom$tiamente al
remitente5 es mu7 posi*le -ue la uriosidad 8aga -ue o2as el m,il.
•
:e puede incluir tu ubicación en la respuesta :i el remitente te est$ esperando para enar5 -uerr$ sa*er u$nto tiempo tardar$s en llegar. #odemos in!ormarle de nuestra u*iain sin neesidad de oger el telé!ono. 1a apliain se enargar$ de todo.
iente Destruels ;oreno
#$gina =
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Algunas semanas m$s tarde5 después de pu*liarse la apliain en en el sitio Be* de AppInventor5 State Farm Insurance re una
en Android llamada On the Move5 u7o
!unionamiento es mu7 pareido a No escribas mientras conduzcas . Curioso 5 ¿ no te paree ?.
¿ Qué aprenderé ? 1a apliain de este apítulo es m$s omple2a -ue las ,istas 8asta a8ora. #or eso5 iremos onstru7endo sus !unionalidades de una en una. amos a empezar on el sistema responsa*le de generar las respuestas autom$tias. En la reain de este *lo-ue ,eremos los siguientes puntos
•
•
•
El omponente Texting se utiliza para en,iar te6tos 7 proesar los mensa2es rei*idos. &saremos un !ormulario de entrada para en,iar mensa2es personalizados. El omponente Tiny! se emplea para guardar el mensa2e -ue 8a reado el usuario 7 onser,arlo despes de -ue se ierre la apliain.
•
El e,ento "creen#Initialize es neesario para a*rir la respuesta personalizada uando se iniia la apliain.
•
El omponente Text$to$"peech se enarga de leer los mensa2es en ,oz alta.
•
El omponente Location"ensor es el responsa*le de in!ormar so*re la u*iain del ondutor.
Empezamos #ara -ue esta apliain !unione de*eremos de tra*a2ar on Text$to$"peech %xtended. :e trata de un mdulo apaz de on,ertir un te6to en pala*ras. Est$ inluido en la ,ersin = 97 posteriores< del sistema operati,o Android. :i tu telé!ono umple esto no 8a7 nada de lo -ue preouparse.
iente Destruels ;oreno
#$gina 3
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Diseñar los componentes
1a inter!az de usuario de la apliain es mu7 senilla tiene una eti-ueta -ue muestra la respuesta autom$tia5 un uadro de te6to 7 un *otn para modi!iar di8o mensa2e. am*ién se neesitar$ arrastrar 8asta el $rea de tra*a2o un omponente Texting5 uno Tiny!5 otro TextTo"peech 75 por ltimo5 uno Location"ensor. odos ellos apareer$n en el $rea Non$&isible components 9omponentes no ,isi*les<.
#ara onstruir la inter!az se de*er$ tra*a2ar on los siguientes omponentes
Tipo de
'rupo de
componente
(alette
Label
!asic
Label
!asic
TextBox
!asic
Button
!asic
Texting
"ocial
TinyB
!asic
TextToS!eech
Other
)ómo lo llamaremos
*inalidad
n!ormaion
#ermite -ue el usuario sepa mo !uniona
%espuesta ue,aF%espuesta
la apliain. Es la respuesta -ue se en,iar$ al remitente. A-uí esri*ir$ el usuario un mensa2e
En,iar
personalizado. El usuario utilizar$ este *otn para en,iar
e6ting0 in7D' e6to:pee80
la respuesta. #roesa el te6to. Guarda la respuesta en la *ase de datos. 1ee el te6to en ,oz alta.
1oation:ensor0
denti!ia la u*iain del telé!ono.
stuff
LocationSensor "ensors
&tiliza los siguientes puntos para de!inir las propiedades de los omponentes
•
Esri*e el te6to “"l texto #ue se encuentra aba$o se enviar% como res!uesta al S&S recibido cuando la a!licacin est( abierta)” en la propiedad Text de Informacion.
•
Esri*e el te6to “"stoy conduciendo, en breve me !ondr( en contacto contigo)” en la propiedad Text de +espuesta.
iente Destruels ;oreno
#$gina 4
Apuntes de Android – AppInventor de Google •
Capítulo 4 – No escribas mientras conduzcas
De2a en *lano el ,alor del ampo Text de Nueva,+espuesta. Así5 el ampo de te6to donde el usuario esri*ir$ su mensa2e apareer$ sin ontenido.
•
Esri*e el te6to “"scribe una nueva res!uesta)” en la propiedad -int de Nueva,+espuesta.
•
Esri*e el te6to “&odi*icar res!uesta)” en la propiedad Text de %nviar.
•
Arrastra desde "ocial el elemento Texting#
•
Arrastra desde !asic el elemento Tiny!
•
Arrastra desde Other"tuff el elemento TextTo"peech#
•
Arrastra desde "ensors el elemento Location"ensor# De momento 8a*r$s o*tenido la siguiente pantalla
iente Destruels ;oreno
#$gina
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Guarda el pro7eto on el nom*re Noescribasmientrasconduzcas en tu #C5 se generar$ un !i8ero .Noescribasmientrasconduzcas#ap/0 Definir el comportamiento de los componentes
Empezaremos programando el omportamiento del sistema de respuesta autom$tia. Después5 iremos añadiendo m$s !unionalidades. Programar una respuesta automática #ara programar la respuesta autom$tia reurriremos al omponente Texting de AppInventor# #ara leer
los mensa2es este omponente uenta on un *lo-ue
Texting#Message+eceived.
A*re el !loc/s %ditor 7 arrastra este *lo-ue 8asta el $rea de tra*a2o.
#ara programar el te6to de respuesta oloaremos el *lo-ue Texting1#"endMessage dentro de Texting#Message+eceived.
Texting1#"endMessage se enargar$ de en,iar el te6to5 así -ue lo primero ser$ indiarle -ué
de*e en,iar 7 -uién ser$ el destinatario. Esto lo 8aremos antes de llamar a Texting1#"endMessage.
1a siguiente ta*la muestra todos los *lo-ues -ue neesitamos para de!inir el omportamiento del ontestador autom$tio
Tipo de blo2ue
e6ting0.;essage%eei,ed
)a3ón
Texting
:et e6ting0.#8oneum*er to Texting
*inalidad
Controlador de e,entos -ue se lanzar$ uando el telé!ono rei*a un mensa2e de te6to. De!ine la propiedad #8oneum*er antes de 8aer el en,ío.
iente Destruels ;oreno
#$gina "
Apuntes de Android – AppInventor de Google Tipo de blo2ue
,alue num*er :et e6ting0.;essage to
Capítulo 4 – No escribas mientras conduzcas
)a3ón
*inalidad
My efinitions
El nmero de telé!ono del remitente -ue nos
Texting
en,i el mensa2e. De!ine la propiedad ;essage antes de 8aer el
+espuesta.e6t
+espuesta
e6ting0.:end;essage
Texting
en,ío. El mensa2e de te6to -ue 8a esrito el usuario En,ía el mensa2e.
Cuando el telé!ono rei*e un mensa2e de te6to5 se lanzar$ el e,ento Texting1#Message+eceived. El n+mero de tel(*ono del remitente es el argumento number 7 el
mensa$e recibido es el messageText. #ara -ue la
apliain pueda responder autom$tiamente5
de*er$ en,iar un mensa2e de te6to al remitente. #ara -ue se pueda mandar5 empezaremos por de!inir dos propiedades de Texting (honeNumber 7 Message#Texting. A la primera se le asigna el n4mero de tel5fono del remitente 7 a la
segunda el te6to -ue 8a7amos esrito en +espuesta 9H
Esto7 onduiendo5 en *re,e me pondré en ontato ontigo. I<. Cuando se 8a7an de!inido5 la apliain llamar$ a Texting#"endMessage para -ue proeda on el en,ío de la respuesta. Guarda primero el pro7eto on el nom*re Noescribasmientrasconduzcas65 se generar$ el !i8ero Noescribasmientrasconduzcas6#ap/ -ue es el -ue de*es opiar a tu telé!ono 7 pro*arlo .#ara pro*ar este omportamiento neesitar$s un segundo telé!ono. :i no tienes ninguno5 puedes registrarte en 'oogle &oice 9-ue paree slo !uniona en Estados &nidos< o en un ser,iio similar. 1uego5 manda mensa2es de te6to desde a-uí a tu telé!ono m,il.
PRUEBA!!!! iente Destruels ;oreno
#$gina )
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Escribir una respuesta personalizada En el omponente Text!ox -ue añadimos al prinipio de la apliain 7 -ue llamamos Nueva,+espuesta5 esri*iremos la
respuesta personalizada de nuestra ontestain. Cuando to-ues
el *otn %nviar opiaremos el te6to -ue 8as esrito 9estar$ en Nueva,+espuesta< en +espuesta5 -ue ontendr$ el mensa2e -ue en,iar$ nuestro ontestador autom$tiamente.
Guarda primero el pro7eto on el nom*re Noescribasmientrasconduzcas7 , se generar$ el !i8ero .Noescribasmientrasconduzcas7#ap/0 -ue es el -ue de*es opiar a tu telé!ono 7 pro*arlo si no te !uniona orretamente a8ora.
PRUEBA!!!!
Guardar la respuesta personalizada en una base de datos :i el usuario ierra el programa5 uando ,uel,a a a*rirlo la ontestain se 8a*r$ perdido 7 se emplear$ la opin predeterminada5 para e,itar esto 8emos de guardar las respuestas en un elemento on memoria a largo plazo la base de datos del tel(*ono) #ara almaenar un dato !ersistentemente de*emos utilizar el omponente Tiny!. :er$ el enargado de guardar la in!ormain en la *ase de datos del dispositi,o Android. Tiny! tiene dos !uniones "tore&alue 7 'et&alue. 1a primera permite guardar in!ormain en la *ase de datos del dispositi,o 7 la segunda reuperarla desde la *ase de datos en una ,aria*le o una propiedad. Empezaremos modi!iando el ontrolador de e,entos %nviar#)lic/ para -ue guarde la in!ormain de !orma persistente. #ara ello usaremos los *lo-ues de la ta*la de a*a2o.
iente Destruels ;oreno
#$gina +
Apuntes de Android – AppInventor de Google
Tipo de blo2ue
in7D'0.:torealue e6t 9H;ensa2e%espuestaI< +espuesta.e6t
Capítulo 4 – No escribas mientras conduzcas
)a3ón
*inalidad
Tiny!1
Almaena el mensa2e personalizado en la *ase
Text
de datos del telé!ono. :e utiliza para eti-uetar la in!ormain. A8ora el mensa2e de respuesta est$ a-uí.
+espuesta
Esta apliain emplea Tiny! para reuperar el te6to ontenido en +espuesta 7 almaenarlo en la *ase de datos. Cuando almaenamos algo en la *ase de datos tenemos -ue asignarle una eti-ueta para identi!iarlo.
En este aso es Mensa3e+espuesta. Es un identi!iador nio -ue se asigna a la in!ormain almaenada. Como ,eremos en la pr6ima sein5 siempre utilizaremos la misma eti-ueta 9Mensa3e+espuesta< para a*rir los datos en la *ase. Recuperar la respuesta personalizada cada vez que se abra la aplicación Como 7a ,imos en el apítulo 35 uando se a*ra la apliain AppInventor e2euta todos los *lo-ues -ue se enuentren dentro de "creen1#Initialize5 por lo -ue de*eremos ompro*ar en ese momento si tenemos alguna respuesta personalizada en la *ase de datos. En aso a!irmati,o5 la a*rir$ mediante la !unin Tiny!#'et&alue . 1a siguiente ta*la muestra todos los *lo-ues -ue se neesitar$n para reuperar la respuesta personalizada de la *ase de datos e inorporarla uando se a*ra la apliain. iente Destruels ;oreno
#$gina /
Apuntes de Android – AppInventor de Google
Tipo de blo2ue
de! ,aria*le 9HresponderI<
Capítulo 4 – No escribas mientras conduzcas
)a3ón
*inalidad
efinition
&na ,aria*le temporal donde se guardar$ la
e6t 9HI<
Text
in!ormain. niialmente la ,aria*le puede tener ual-uier
:reen0.nitialize :et glo*al response to
,alor. "creen1 Este e,ento se lanza al a*rir la apliain. My efinitions A esta ,aria*le le asignaremos el ,alor
in7D'0.Getalue e6t 9H;ensa2e%espuestaI<
Tiny!1
reuperado d ella *ase de datos. %eupera el te6to de la respuesta -ue est$
Text
almaenado en la *ase de datos. Asigna este ,alor a la eti-ueta de in7D'.Getalue5 asegur$ndose de -ue el te6to es el mismo -ue se utiliz anteriormente en
)ontrol
in7D'.:torealue. #regunta si el ,alor -ue se 8a reuperado
Math
ontiene algn te6to. Comprue*a si la longitud del ,alor reuperado
1engt8 te6t
Text
es ma7or -ue . Comprue*a si la longitud del ,alor reuperado
glo*al response
es ma7or -ue . My efinitions Esta ,aria*le ontendr$ el ,alor reuperado de
! J
um*er 9< :et +espuesta.e6t to
Math
in7D'0.Getalue. Compara este ,alor on la longitud de la
+espuesta
respuesta. :i 8emos reuperado algo se oloar$ en +espuesta.
glo*al %esponder
My efinitions
Esta ,aria*le ontiene el ,alor reuperado de in7D'0.Getalue.
iente Destruels ;oreno
#$gina 0
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
1a primera ,ez -ue el usuario a*re la apliain no 8a*r$ ninguna respuesta personalizada guardada en la *ase de datos5 por lo -ue de*eremos usar la predeterminada almaenada en +espuesta. Como ,a a
ser modi!iada5 las pr6imas ,ees -ue a*ra la apliain de*eremos
reuperarla de la *ase de datos 7 oloarla en +espuesta. Cuando se a*ra la apliain5 se lanzar$ el e,ento "creen1#Initialize 9arrastra el *lo-ue Initialize desde "creen1 -ue se enuentra en My !loc/s<.
:e llamar$ a Tiny!1#'et&alue mediante la eti-ueta de Mensa3e+espuesta es deir5 la misma -ue se emple uando se guard la respuesta personalizada del usuario en la *ase de datos. El ,alor -ue se reupere de a-uí se oloar$ en la ,aria*le +esponder. Así5 la apliain podr$ ,eri!iarla antes de oloarla en +espuesta. 1o primero ser$ de!inir la ,aria*le +esponder -ue ,amos a utilizar5 para ello arrastra desde !uilt$in en la sein efinition el
*lo-ue def variable as5 am*ia el nom*re def !or Responder.
Arrastra el *lo-ue set global +esponder to dentro de :reen0.Initialize. Conatena en esa ranura del set glo*al a la llamada call Tiny!1#'et&alue tag 7 ,uel,e a onatenar el te6to text Mensa3e+espuesta de la siguiente manera es a !uilt$In5 sein text 7 arrastra el *lo-ue text text5 am*ia el nom*re text por Mensa3e+espuesta.
Añade después de la ranura as otro *lo-ue de text llamado text. A8ora en My efinitions de My bloc/s 7a nos aparee la nue,a ,aria*le +espuesta -ue nos aa*amos de rear.
iente Destruels ;oreno
#$gina 00
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
A8ora 8emos de ompro*ar si el ,alor reuperado de Tiny! es un te6to ,aío o no5 es deir5 8a7 algn ,alor o no por-ue es la primera ,ez -ue a*rimos la apliain 7 no 8a7 ninguna respuesta personalizada guardada en la *ase de datos. #ara ello preguntaremos si la longitud del te6to reuperado es ma7or -ue 7 oloaremos el ,alor reuperado dentro de +espuesta5 sino no modi!iaremos el ,alor de +espuesta 7 se tra*a2ar$ on la respuesta predeterminada. #ara ello arrastramos el *lo-ue If test then$do de la sein control de !uilt$In5 dentro de Initialize 2usto de*a2o de set glo*al response -ue teníamos. Arrastramos el blo2ue mayor 9 H8I < de la sein Math de !uilt$In en la ranura testK Añadimos el *lo-ue call length text de la sein text de built$In en la parte iz2uierda de la omparain del .80. L onatenamos en su ranura la ,aria*le global response de My efinitions. En la parte dere8a del ma7or5 reamos un H 9I omo 8emos di8o anteriormente para sa*er si la longitud de lo reuperado en la *ase de datos es ma7or -ue 5 es deir5 8a7 algo en la *ase de datos. Como 8emos di8o si esto suede oloamos le ,alor reuperado de la *ase de datos -ue a8ora tenemos en la ,aria*le response en +espuesta5 para ello arrastro a la altura del then$do del if: el *lo-ue set +espuesta#Text to 7 le onateno global response de ;7 De!initions. Gr$!iamente nos -ueda lo siguiente
iente Destruels ;oreno
#$gina 0=
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Guarda primero el pro7eto on el nom*re Noescribasmientrasconduzcas;5 se generar$ el !i8ero .Noescribasmientrasconduzcas;#ap/0 -ue es el -ue de*es opiar a tu telé!ono. Esta prue*a no la ,amos a realizar5 nos reeremos -ue !uniona....:igamos....
PRUEBA!!!!
Leer en voz alta los mensajes recibidos En esta sein modi!iaremos la apliain para -ue5 uando rei*amos un mensa2e5 el telé!ono lea en ,oz alta el nmero del remitente 7 el ontenido. 1a idea es -ue5 uando estemos al ,olante 7 oigamos -ue se 8a rei*ido un mensa2e5 aun-ue sepamos -ue 8a7 una apliain en mar8a -ue se enargar$ de ontestar autom$tiamente al remitente5 e,itemos la tentain de oger el telé!ono para ,er -uién nos esri*e 7 -ué nos uenta. Graias a text$to$speech5 esu8aremos el mensa2e rei*ido sin soltar el ,olante. Crearemos una llamada a TextTo"peech#"pea/ 9leer$ en ,oz alta el mensa2e rei*ido< desde el ontrolador de e,entos Texting#Message+eceived -ue programamos on anterioridad. Es deir5 arrastra el *lo-ue call TextTo"peech# "pea/ message dentro 7 al !inal del *lo-ue Message+eceived 7a reado.
El *lo-ue call ma/e text 9del a2n text< onstruir$ las pala*ras -ue se leer$n en ,oz alta 7 lo onatenamos a la salida de "pea/ . #ara rearlo se unen las siguientes adenas de te6to H+ecibido "M" de I5 el nmero de telé!ono desde donde se en,i 9 value number<5 el texto 9H. El mensa2e es5 H< 75 por ltimo5 el ontenido del a,iso rei*ido 9 value messageText<. Arrastramos el *lo-ue call ma/e text a la ranura del :peaM. Despes arrastramos un *lo-ue text text a la salida de la ranura del call ma/e text -ue aa*amos de añadir. Cam*iamos el ampo text del *lo-ue text para personalizarlo a H +ecibido "M" deI. :eguimos onstru7endo el ma/e text 7 añadimos a8ora el nmero de telé!ono on value number desde My efinitions. :eguimos on el texto .# %l mensa3e es:0 7 terminamos on el ontenido del a,iso rei*ido value messageText.
iente Destruels ;oreno
#$gina 03
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Guarda primero el pro7eto on el nom*re Noescribasmientrasconduzcas< se generar$ el !i8ero .Noescribasmientrasconduzcas<#ap/0 -ue es el -ue de*es opiar a tu telé!ono 7 pro*arlo si no te !uniona orretamente a8ora a tra,és de otro telé!ono.
PRUEBA!!!!
Agregar a la respuesta inormación sobre la ubicación del tel!ono En la apliain podemos utilizar los datos so*re la u*iain del telé!ono para proporionar algo m$s de in!ormain en la respuesta -ue en,iamos autom$tiamente desde nuestro terminal. AppIinventor uenta on el
omponente Location"ensor5 apaz de interatuar on el sistema G#:
del telé!ono. Adem$s de reuperar in!ormain so*re la latitud 7 la longitud de la posiin donde est$ el terminal5 tam*ién puede onsultar el ontenido de oogle &a!s para indiar el nom*re de la alle. 1a apliain de*ería de responder al ontrolador de e,entos Location"ensor#Location)hanged. Antes inluso de -ue el telé!ono sea apaz de
leer el ,alor de
la posiin del sensor5 7a 8a*remos am*iado de u*iain 9 Location-hanged < 7 el telé!ono tendr$ -ue intentar esta*leer la nue,a posiin5 guardando la direin atual dentro de una ,aria*le llamada =ltimalocalizacionconocida. ;$s tarde5 modi!iaremos el mensa2e de respuesta para inluir la direin -ue o*tendremos de esta ,aria*le.
iente Destruels ;oreno
#$gina 04
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
1os *lo-ues neesarios para on!igurar el sensor de u*iain son Tipo de blo2ue
de! ,aria*le
)a3ón
efinition
*inalidad
Crea una ,aria*le donde guardaremos la
9H<imaloalizaiononoidaI<
direin o*tenida en la ltima letura del
e6t 9HDesonoidoI<
sensor de u*iain. Esta*lee un ,alor predeterminado para el
Text
aso de -ue no esté !unionando el sensor de u*iain del telé!ono. 1oation:ensor0.1oationC8anged Location"ensor1 Este elemento se lanzar$ on la primera letura de la posiin del telé!ono 7 ada ,ez -ue se am*ie la u*iain. #repara esta ,aria*le para utilizarla m$s
:et glo*al
My efinitions
<imaloalizaiononoida to 1oation:ensor0.CurrentAddress
tarde. Location"ensor1 Es la direin postal en la -ue nos enontramos.
1a ,aria*le ser$
7 el *lo-ue asoiado uando am*ie la posiin del G#: es
An tenemos -ue 8aer -ue la apliain inorpore la in!ormain so*re nuestra posiin en el mensa2e -ue en,iar$ autom$tiamente al remitente. iente Destruels ;oreno
#$gina 0
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
"ncluir nuestra posición en el mensaje de respuesta Graias a H =ltimalocalizacionconocidaI5 podemos modi!iar el ontrolador de e,entos Texting1#Message+eceived para añadir in!ormain so*re
nuestra posiin al mensa2e de
respuesta. &tilizaremos los siguientes *lo-ues
Tipo de blo2ue
maMe te6t
)a3ón
Text
*inalidad
:i 8a7 datos so*re la posiin del terminal5 se onstruir$ un o*2eto de
+espuesta.e6t
e6t 9H ;i ltima u*iain
te6to. MesasageText!ox Nste es el mensa2e 9personalizado< del Text
uadro de te6to. Este te6to se ad2untar$ al !inal del
onoida esI<
mensa2e personalizado. Empieza on
glo*al <imaloalizaiononoida
un espaio en *lano. Nsta es la direin postal.
Location"ensor
Este omportamiento est$ relaionado on el e,ento Location"ensor1#Location)hanged 7 on la ,aria*le =ltimalocalizacionconocida. En ,ez de en,iar un mensa2e -ue ontenga el te6to almaenado en +espuesta#Text 5 la apliain empezar$ por onstruir5 en su lugar5 un te6to mediante ma/e text. Com*ina el de la respuesta guardado en +espuesta#Text on HMi 4ltima ubicación conocida es> I5 seguida de la ,aria*le =ltimalocalizacionconocida.
El ,alor predeterminado de =ltimalocalizacionconocida es esconocido. Así pues5 si el sensor de la posiin an no 8a generado ninguna letura5 la segunda parte del mensa2e mostrar$ el te6to HMi 4ltima ubicación conocida es> desconocidoI. #ero5 si 8a 8a*ido una letura5 mostrar$ la direin postal.
iente Destruels ;oreno
#$gina 0"
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
Dentro del Texting1#+eceived am*ia el +espuesta#Text por un ma/e text omo en la !igura siguiente
Guarda primero el pro7eto on el nom*re Noescribasmientrasconduzcas?: se generar$ el !i8ero .Noescribasmientrasconduzcas?#ap/0-ue es el -ue de*es opiar a tu telé!ono 7 pro*arlo.
PRUEBA!!!!
iente Destruels ;oreno
#$gina 0)
Apuntes de Android – AppInventor de Google
Capítulo 4 – No escribas mientras conduzcas
1a apliain !inalizada
Variaciones •
Esri*e una ,ersin -ue permita -ue el usuario de!ina una serie de mensa2es personalizados para iertos nmeros de telé!ono. De*er$s utilizar los *lo-ues ondiionales 9i!< para -ue omprue*en los nmeros del remitente.
•
Esri*e una ,ersin -ue en,íe respuestas personalizadas *as$ndose en la posiin del remitente. Así pues5 si la apliain determina -ue te enuentras en la 8a*itain === de un 8otel 7 su remitente se 8alla en otro uarto del mismo 8otel5 puedes en,iar un mensa2e -ue diga HEn este momento5 Oa,ier se enuentra en la 8a*itain ===.I.
•
Esri*e una ,ersin -ue emita una alarma uando el nmero del remitente se u*i-ue dentro de una lista de noti!iain.
iente Destruels ;oreno
#$gina 0+