TEMA 4 1/18
Cap missatge de text mentre es condueix
Aquest tema explica el procés del
desenvolupament de Cap missatge de text mentre
es condueix, una aplicació que autorespòn als
missatges de text que rep mentre està conduint.
És un excel·lent exemple de com App Inventor
proporciona accés a algunes de les grans
característiques del telèfon Android, incloent el
processament de text SMS, gestió de base de
dades, text a veu, i el sensor d'ubicació.
L'aplicació que es mostra a la Figura 4-1, respon
automàticament (i de mans lliures) a qualsevol text amb un missatge del tipus "estic
conduint ara mateix, et contestaré en breu."
L'usuari pot canviar la resposta per diferents situacions. Per exemple, si vas a una
reunió o una pel·lícula en lloc de conduir, la resposta pot ser modificada en
conseqüència.
Fins i tot si saps que l'aplicació autorespòn, el sorollet dels textos entrants poden
matar-te amb curiositat. Aleshores l'aplicació llegeix el text en veu alta.
El missatge de resposta pot contenir la seva ubicació actual. Si la seva parella està a
casa preparant el sopar, ell o ella probablement li agradaria saber quant de temps
més durarà el seu viatge, sense posar en perill en haver de contestar el text.
Figure 4-1. L'aplicació de Cap missatge de text mentre es condueix
2.
TEMA 4 2/18
El que aprendràs
Aquesta és una aplicació més complexa que les dels temes anteriors, de manera
que haurà de construir una peça de funcionalitat al mateix temps, començant amb
el missatge de resposta automàtica. Aprendràs sobre:
• El component Texting per enviar missatges de text i processament de textos
rebuts.
• Un formulari d'entrada per enviar el missatge de resposta personalitzat.
• El component de base de dades TinyDB per guardar el missatge personalitzat
fins i tot després que l'aplicació es tanca.
• L'esdeveniment Screen.Initialize per carregar la resposta personalitzada quan
l'aplicació s'inicia.
• El component Text-to-Speech per llegir en veu alta els textos.
• El component LocationSensor per informar de la ubicació actual del
conductor.
Introducció
Perquè aquesta aplicació funcioni, cal un mòdul de text a veu, Text-To-Speech
Extended, al telèfon. Aquest mòdul està inclòs en Android versió 2 o superior.
Quan el mòdul Text-To-Speech està instal·lat, obriu-lo per comprovar les seves
característiques. Quan s'obre, trieu l'idioma per defecte que es desitgi. A
continuació, seleccioneu "Listen to Preview". Si no se sent res, assegureu-vos que el
volum del telèfon està activat. També pot canviar la manera com la veu sona en
canviar el valor de la propietat del motor TTS predeterminada.
Després d'haver configurat el mòdul Text-To-Speech al teu gust, connectar-se al lloc
web App Inventor i començar un nou projecte. El nom de
"CapMissatgeMentreCodueix" (els noms dels projectes no pot tenir espais) i establir
el títol de la pantalla de "Cap missatge de text mentre es condueix". Obriu l'Editor
de Blocs i connectar al telèfon.
3.
TEMA 4 3/18
Disseny dels components
La interfície d'usuari de l'aplicació és relativament simple: té una etiqueta que
mostra la resposta automatitzada, una casella de text i un botó per enviar un canvi.
També hauràs de arrossegar un component Texting, un component TinyDB, un
component TextToSpeech i un component LocationSensor, tot això es s'afegirà a la
zona "Non-visible components". Pots veure com això es veurà en la instantània del
Dissenyador de components que es mostra a la Figura 4-2.
Figura 4-2. L'aplicació de No missatges de text mentre es condueix en el Dissenyador de components
Pots construir la interfície d'usuari que es mostra a la Figura 4-2 arrossegant els
components enumerats en la Taula 4-1.
Establir les propietats dels components de la següent manera:
• Establir el text de EtInfo a "El següent text serà enviat de resposta a tots els
Textos SMS rebuts mentre aquesta aplicació està en marxa. "
• Establir el text de EtResposta a "Estic conduint ara mateix, em posaré en
contacte amb tu en breu." Comproveu la seva propietat boldness.
• Establir el text de TBResposta a "". (Això deixa en blanc el quadre de text per
a l'entrada de l'usuari.)
• Ajusteu el Hint (Consell) de TBResposta a "Introduïu text de resposta nova."
• Establir el text de BModificarResposta a "Modificar la resposta."
4.
TEMA 4 4/18
Afegir comportaments als Components
Anem a començar per programar el comportament de resposta automàtica de text
bàsic, i després, successivament, afegirem més funcionalitat.
Taula 4-1. Tots els components per a l'aplicació Cap missatge de text mentre es condueix
Component Grup Nom assignat Objectiu
Label Basic EtInfo Deixeu que l'usuari sàpiga com funciona l'aplicació.
Label Basic EtResposta La resposta, que serà enviada de tornada al remitent
del text original.
TextBox Basic TBResposta L'usuari haurà d'introduir la resposta aquí.
Button Basic BModificarResposta L'usuari fa clic ací per enviar la resposta.
Texting Social Texting1 Processar els textos.
TinyDB Basic TinyDB1 Emmagatzemar la resposta a la base de dades.
TextToSpeech Other stuff TextToSpeech1 Llegir en veu alta els textos.
LocationSensor Sensors LocationSensor1 Saber on està el telèfon.
5.
TEMA 4 5/18
Programació d'una resposta automàtica
Per al comportament de resposta automàtica, podràs utilitzar el component Texting
d'App Inventor. Pots pensar en aquest component com una personeta dins del
telèfon que sap llegir i escriure textos. Per a la lectura de textos, el component
proporciona un bloc d'esdeveniments Texting.MessageReceived. Pots arrossegar
aquest bloc cap a fora i col·locar blocs en el seu interior per mostrar el que ha de
succeir quan un text és rebut. En el cas d'aquesta aplicació, volem enviar
automàticament una còpia d'un text escrit prèviament de resposta.
Per programar el text de la resposta, se li col·loca un bloc Texting1.SendMessage
dins del bloc Texting1.MessageReceived. Texting1.SendMessage realment envia el
text, de manera que primer haurà d'indicar al component quin missatge enviar, i a
qui enviar-lo, abans de cridar a Texting1.SendMessage. La Taula 4-2 enumera tots
els blocs que necessites per aquest comportament d'autoresposta, i la Figura 4-3
mostra com s'ha de buscar en l'Editor de blocs.
Taula 4-2. Els blocs per a l'enviament d'una resposta automàtica
Tipus de Bloc Calaix Objectiu
Texting1.MessageReceived Texting El controlador d'esdeveniments que s'activa quan el telèfon
rep un text.
set Texting1.PhoneNumber to Texting Indiqueu la propietat PhoneNumber abans d'enviar.
value number My Definitions El número de telèfon de la persona a qui se li envia el text.
set Texting1.Message to Texting Indiqueu la propietat Message abans d'enviar missatges.
EtResposta.Text EtResposta El missatge que l'usuari ha introduït.
Texting1.SendMessage Texting Envieu el missatge.
Figura 4-3. En resposta a un text entrant
6.
TEMA 4 6/18
Com funcionen els blocs
Quan el telèfon rep un missatge de text, l'esdeveniment Texting1.MessageReceived
es dispara. Com es mostra a la Figura 4-3, el número de telèfon del remitent està en
l'argument number, i el missatge rebut és l'argument MessageText. Per a la
resposta automàtica, l'aplicació ha d'enviar un missatge de text al remitent. Per
enviar el text, primer ha de configurar les dues propietats fonamentals del
component de missatges de text: PhoneNumber i Message.Texting. PhoneNumber
s'estableix al número del remitent i Texting.Message s'estableix en el text que va
escriure en EtResposta: "estic conduint ara mateix, et contestaré en breu". Quan
s'estableix, l'aplicació crida a Texting.SendMessage per enviar realment la resposta.
Estaràs preguntant-te sobre els quadres de color groc que tenim en l'Editor de Blocs.
Aquests són comentaris, i es poden afegir fent clic en el botó dret en un bloc i
seleccionant Afegir comentari. Un cop afegit un comentari, pot mostrar o amagar
fent clic al signe d'interrogació negre que apareix. No ha de afegir comentaris al
app, simplement hem inclòs aquí per ajudar a descriure cada bloc i el que fa.
La majoria de la gent fa servir els comentaris per documentar la manera com esta
construïda la seva aplicació o comentaris per a explicar com funciona el programa,
però no faran que l'aplicació es comporta de manera diferent. Els comentaris són
important, com vas fer l'aplicació i si la vols modificar més tard, i per a altres
persones que puguin personalitzar-la. L'única cosa que tots estan d'acord sobre el
programari és que canvia i es transforma sovint. Per això, comentar el codi és molt
important en l'enginyeria de programari, i especialment amb el programari de codi
obert com App Inventor.
Posa a prova la teva app. Necessitaràs un segon telèfon per provar
aquest comportament. Des del segon telèfon, enviar un text al telèfon
que executa l'aplicació. El segon telèfon rebra el text de la resposta?
7.
TEMA 4 7/18
Introducció d'una resposta personalitzada
A continuació, anem a afegir blocs de manera que l'usuari pot introduir la seva
resposta personalitzada. En el Dissenyador de components, ha afegit un component
TextBox denominat TBResposta, que és on l'usuari introduirà la resposta
personalitzada. Quan l'usuari fa clic al BModificarResposta, ha de copiar l'entrada
(TBResposta) al EtResposta, que s'utilitza per respondre als textos. La Taula 4-3
enumera els blocs que necessites per transferir una resposta que acaba d'introduir
en el EtResposta.
Taula 4-3. Blocs per mostrar la resposta personalitzada
Tipus de Bloc Calaix Propòssit
BModificarResposta BModificarResposta L'usuari fa clic en aquest botó per enviar un nou missatge
de resposta.
set EtResposta.Text to EtResposta Moure el valor d'entrada recent i l'origen.
TBResposta.Text TBResposta L'usuari ha introduit la nova resposta aquí.
Com funcionen els blocs
Penseu en com funciona una forma d'entrada típica: primer entra alguna cosa en un
quadre de text i, a continuació, feu clic a un botó d'enviar per indicar al sistema per
processar-la. El formulari d'entrada per a aquesta aplicació no és diferent. La figura
4-4 mostra com els blocs es programen de manera que quan l'usuari fa clic al
BModificarResposta, l'esdeveniment BModificarResposta.Click es dispara.
Figura 4-4. Ajust de la resposta a l'entrada d'usuari
El controlador d'esdeveniments en aquest cas còpia (o sets, en termes de
programació) el que l'usuari ha introduït en TBResposta al EtResposta. Recordem
que EtResposta conté el missatge que s'enviarà a la resposta automàtica, de
manera que has de col·locar el missatge personalitzat que acaba d'introduir allà.
Posa a prova la teva app. Escriviu una resposta personalitzada i
presentar-la, i aleshores utilitzar el segon telèfon per enviar un altre
text al telèfon que executa l'aplicació. Ha enviat la resposta
personalitzada?
8.
TEMA 4 8/18
Emmagatzematge de la resposta personalitzat en
una base de dades
Has construït una gran aplicació ja, amb una condició: si l'usuari introdueix una
resposta personalitzada i, a continuació, tanca l'aplicació i rellança ella, la resposta
personalitzat no apareixen (en canvi, l'opció per defecte ho farà). Aquest
comportament no és el que els usuaris esperen, voldran veure la resposta
personalitzada quan es reiniciï l'aplicació. Perquè això passi, cal emmagatzemar
aquesta resposta personalitzada persistentment.
Es podria pensar que les dades ficades a la propietat EtResposta.Text estan
tècnicament "emmagatzemades", però el problema és que les dades
emmagatzemades en les propietats del component són dades transitòries. Dades
transitòries són com la teua memòria a curt termini, i el telèfon "oblida" tan prompte
com una aplicació es tanca. Si desitges que la teua aplicació recorde alguna cosa
persistent, cal passar de memòria a curt termini (una propietat del component o
variable) a la memòria a llarg termini (base de dades).
Per emmagatzemar dades de manera constant, s'utilitzarà el component TinyDB,
que emmagatzema les dades en una base de dades del dispositiu Android. TinyDB
proporciona dues funcions: StoreValue i GetValue. La primera permet l'aplicació per
emmagatzemar informació a la base de dades del dispositiu, mentre que el segon
permet extraure la informació de l'aplicació que ja ha estat emmagatzemat.
Per a moltes de les aplicacions, utilitzarà el següent esquema:
1. Emmagatzemar les dades de la base de dades cada vegada que l'usuari envia
un nou valor.
2. Quan l'aplicació s'inicia, carrega les dades de la base de dades en una
variable o propietat.
Anem a començar per modificar el controlador d'esdeveniments
BModificarResposta.Click perquè emmagatzeme les dades de forma constant, usant
els blocs que figuren a la Taula 4-4.
Taula 4-4. Blocs per emmagatzemar la resposta personalitzada amb TinyDB
Tipus de Bloc Calaix Propòssit
TinyDB1.StoreValue TinyDB1 Deseu el missatge personalitzat a la base de dades del telèfon.
text ("EtResposta") Text Feu-la servir com l'etiqueta per a les dades.
EtResposta.Text EtResposta El missatge de resposta ja és aquí.
9.
TEMA 4 9/18
Com funcionen els blocs
Aquesta aplicació utilitza TinyDB per a prendre el text que acaba de posar en
EtResposta i emmagatzemar a la base de dades. Com es mostra a la Figura 4-5,
quan hagi de guardar alguna cosa a la base de dades, es proporciona una etiqueta
amb ella, en aquest cas, l'etiqueta és "EtResposta". Penseu en l'etiqueta com el nom
del lloc de les dades en la base de dades, que identifica de forma exclusiva les
dades que s'emmagatzemen. Com veurem en la següent secció, farem servir la
mateixa etiqueta ("EtResposta") en carregar les dades de nou a la base de dades.
Figura 4-5. Emmagatzematge de la resposta personalitzada persistentment
10.
TEMA 4 10/18
Recuperació de la resposta personalitzat quan
l'aplicació obre
La raó per a l'emmagatzematge de la resposta personalitzada a la base de dades és
el que es pot tornar a carregar en l'aplicació a la següent vegada que l'usuari l'obre.
App Inventor proporciona un bloc d'esdeveniment especial que s'activa quan
l'aplicació s'obre: Screen1.Initialize (si van completar TalpBarrejat al tema 3, ja ha
vist això). Si arrossega el bloc d'esdeveniments i col·loca els blocs en aquest, els
blocs s'executaran just quan l'aplicació s'inicia.
Per aquesta aplicació, el controlador d'esdeveniments Screen1.Initialize ha de
comprovar per veure si una resposta personalitzada s'ha posat a la base de dades.
Si és així, la resposta personalitzada ha de ser carregada en l'ús de la funció
TinyDB.GetValue. Els blocs que necessites per això es mostra a la Taula 4-5.
Taula 4-5. Blocs per carregar les dades de nou en tant l'aplicació s'obre
Tipus de Bloc Calaix Objectiu
def variable ("resposta") Definition (No s'oblide: no
és el mateix que el calaix
de My Definitions)
Una variable temporal per emmagatzemar les dades
recuperades.
text ("") Text El valor inicial de la variable pot ser qualsevol cosa.
Screen1.Initialize Screen1 Això es produeix quan l'aplicació s'inicia.
set global resposta to My Definitions Estableixi aquesta variable en el valor recuperat de la base
de dades.
TinyDB1.GetValue TinyDB1 Obtenir el text de resposta emmagatzemat a la base de
dades.
text ("EtResposta") Text Connectar-lo a la ranura de l'etiqueta de TinyDB.GetValue,
assegurant-se que el text és el mateix que l'utilitzat en valor
TinyDB.Store anterior.
if Control Pregunti si el valor recuperat té una mica de text
> Math Comprovar si la longitud del valor recuperat és major que 0.
length text Text Comprovar si la longitud del valor recuperat és major que 0.
global resposta My Definitions Aquesta variable conté el valor recuperat de
TinyDB1.GetValue.
number (0) Math Compareu això amb la longitud de la resposta.
set EtResposta.Text to EtResposta Si hem recuperat alguna cosa, poseu-la en EtResposta.
global resposta My Definitions Aquesta variable conté el valor recuperat de
TinyDB1.GetValue.
11.
TEMA 4 11/18
Com funcionen els blocs
Els blocs es mostra a la Figura 4-6. Per entendre'ls, cal preveure un usuari que obre
l'aplicació per primera vegada, entrant en una resposta personalitzada, i obrir
l'aplicació altres vegades posteriorment. La primera vegada que l'usuari obre
l'aplicació, no hi haurà cap resposta personalitzada a la base de dades per carregar,
de manera que desitja deixar la resposta per defecte al EtResposta. En els
llançaments successius, que vol carregar la resposta personalitzada prèviament
emmagatzemada a la base de dades i el col·loca al EtResposta.
Figura 4-6. Càrrega de la resposta personalitzada de la base de dades durant la inicialització aplicació
Quan l'aplicació s'inicia, l'esdeveniment Screen1.Initialize es dispara. L'aplicació
crida a la TinyDB1.GetValue amb una etiqueta de "EtResposta", la mateixa etiqueta
que va usar quan s'emmagatzema l'entrada de l'usuari de resposta personalitzada
abans. El valor recuperat es col·loca en la resposta variable de manera que es pot
comprovar abans que es col·loqui com el EtResposta. Pots pensar en per què
t'agradaria comprovar el que rep de la base de dades abans de mostrar com el
missatge personalitzat per a l'usuari?
TinyDB torna text buit si no hi ha dades d'una etiqueta en particular a la base de
dades. No hi haurà dades el primer cop que es llança l'aplicació, el que serà el cas
fins que l'usuari introdueix una resposta personalitzada. Com que la variable de
resposta té ara el valor retornat, es pot utilitzar el bloc per comprovar si la longitud
del que ha estat rebut de la base de dades és més gran que 0. Si la longitud del
valor contingut en resposta és més gran que 0, l'aplicació sap que TinyDB va fer
alguna cosa a canvi, i el valor recuperat es pot col·locar en la EtResposta. Si la
longitud no és més gran que 0, l'aplicació sap que no hi ha resposta
emmagatzemada prèviament, de manera que no modifica el EtResposta (deixant la
resposta per defecte).
Posa a prova la teva app. No es pot provar aquest comportament a
través de les proves en viu, ja que la base de dades es buida cada
vegada que "Connect to Device" per reiniciar l'aplicació.
En el seu lloc, seleccioneu “Package for Phone”→ Show Barcode i, a continuació,
descarrega l'aplicació al teu telèfon mitjançant l'escaneig del codi de barres. Una
vegada que l'aplicació està instal·lada, introduïu un missatge de resposta al nou
TBResposta i feu clic al BModificarResposta. A continuació, tancar l'aplicació i torni a
iniciar-lo. El seu missatge personalitzat apareix?
12.
TEMA 4 12/18
Llegint en veu alta els textos entrants
En aquesta secció, podràs modificar l'aplicació perquè quan rebi un text, un número
de telèfon del remitent, juntament amb el missatge, es llig en veu alta. La idea és
que quan vas en cotxe i escoltes un soroll d'un missatge de text entrar, Pots tenir la
temptació de revisar el text, encara que coneix l'aplicació que envia una resposta
automàtica. Amb text-to-speech, es pot sentir els textos entrants i mantindre les
mans al volant.
Els dispositius Android proporcionen capacitats de text-to-speech (text a veu) i App
Inventor proporciona un component, TextToSpeech, que llegirà tot text que li donis.
(Tingueu en compte que aquí "text" s'entén en el sentit general de la paraula, una
seqüència de lletres, dígits i puntuació; no un text SMS.)
A la "Introducció" d'aquesta aplicació, li demana que descarregui un mòdul de ext-to-
speech des del Android Market. Si no ho va fer llavors, hauràs de fer-ho ara. Quan
el mòdul està instal·lat i configurat com desitja, pot utilitzar el component
TextToSpeech dins App Inventor.
El component TextToSpeech és molt fàcil d'utilitzar: només cal cridar a la seva
funció de parla i connecti el text que desitgi parlat en la seva ranura missatge. Per
exemple, la funció que es mostra a la Figura 4-7 deia: "Hola Món".
Figura 4-7. Blocs per parlar "Hola Món" en veu alta
Per a l'aplicació Cap missatge de text mentre condueix, hauràs de donar un
missatge més complicat que se'ls parli, que inclou tant el text rebut i el número de
telèfon de la persona que el va enviar. En lloc de connectar un objecte de text
estàtic com el bloc de text "Hola Món", se li connecta un bloc make text. Una funció
molt útil, fer que el text li permet combinar peces separades de text (o els números i
altres caràcters) en un objecte de text únic.
Hauràs de fer la crida a TextToSpeech.Speak al controlador d'esdeveniments
Texting.MessageReceived programat anteriorment. Els blocs programats prèviament
controlen aquest esdeveniment establint les propietats PhoneNumber i Missatge del
component de missatges de text de manera adequada i després enviar el text de la
resposta. Vas a estendre aquest controlador d'esdeveniments mitjançant l'addició
dels elements que figuren a la Taula 4-6.
Taula 4-6. Blocs per parlar en veu alta el text entrant
Tipus de Bloc Calaix Objectiu
TextToSpeech1.Speak TextToSpeech1 Digueu el missatge rebut en veu alta.
make text Text Construir les paraules que es parlen.
text ("SMS text received from") Text Les primeres paraules parlades.
value number My Definitions El nombre del qual es va rebre el text original.
text (".The message is") Text Posi un període després que el número de telèfon i dir després:
"El missatge és".
value messageText My Definitions El missatge original rebut.
13.
TEMA 4 13/18
Com funcionen els blocs
Després que s'envia la resposta, la funció TextToSpeech1.Speak es cridada, tal com
es mostra a la part inferior de la Figura 4-8. Pots connectar qualsevol objecte de text
a la ranura missatge de la funció TextToSpeech1.Speak. En aquest cas, make text
s'utilitza per construir les paraules que se'ls parli, que concatena (o afegeix), amb el
text "text SMS rebut" i el número de telèfon des del qual es va rebre el missatge
(value number), més el text ". El missatge és, " i finalment el missatge rebut (value
MessageText). Per tant, si el text "hola" va ser enviat des del número "111-2222", el
telèfon podria dir, "va rebre text SMS 111-2222. El missatge és hola ".
Figura 4-8. Llegint en veu alta el text entrant
Posa a prova la teva app. Necessitaràs un segon telèfon per provar
l'aplicació. Des del segon telèfon, enviar un text al telèfon que executa
l'aplicació. El telèfon que executa l'aplicació llegeixi el text en veu
alta? Encara envia una resposta automàtica?
14.
TEMA 4 14/18
Afegir informació d'ubicació a la resposta
Aplicacions com Place de Facebook i Latitude de Google utilitzen informació GPS per
ajudar a la gent a fer un seguiment de la seua ubicació. Hi ha greus problemes de
privacitat amb aplicacions d'aquest tipus, entre altres raons perquè el seguiment de
localització de la gent pot semblar un "Gran Germà" en el que l'aparell d'un govern
totalitari pot configurar per rastrejar el parador dels seus ciutadans. No obstant això,
les aplicacions que utilitzen la informació d'ubicació pot ser molt útil si pensem en
un nen perdut, o excursionistes que s'han perdut.
En l'aplicació Cap missatge mentre es condueix, el seguiment de la ubicació es pot
utilitzar per transmetre una mica més informació en resposta als textos entrants. En
comptes de "estic conduint", el missatge de resposta pot ser alguna cosa com "estic
conduint i estic en el carrer Sant Joan de Xàtiva." Per algú esperant l'arribada d'un
amic o membre de la família, aquesta informació addicional pot ser útil .
App Inventor proporciona el component LocationSensor per la interfície amb el GPS
del telèfon (o sistema de posicionament geogràfic). A més de latitud i longitud, el
LocationSensor també poden accedir a Google Maps per proporcionar l'adreça actual
del conductor.
És important assenyalar que LocationSensor no sempre té una lectura. Per això, cal
anar amb compte en utilitzar el component correctament. En concret, la seva
aplicació ha de respondre al controlador d'esdeveniments
LocationSensor.LocationChanged. Un esdeveniment LocationChanged es produeix
quan el sensor de localització del telèfon rep una primera lectura, i quan el telèfon
es mou per generar una nova lectura. Ús dels blocs indicats a la Taula 4-7, el nostre
esquema respondrà a l'esdeveniment LocationChanged col·locant l'adreça actual en
una variable que anem a nomenar UltimLloc. Més tard, anem a canviar el missatge
de resposta per incorporar l'adreça que obtenim d'aquesta variable.
Taula 4-7. Blocs per configurar el sensor de localització
Tipus de Bloc Calaix Objectiu
def variable ("UltimLloc") Definitions Creeu una variable per contenir l'adreça última lectura.
text ("Desconeguda") Text Establir el valor predeterminat en cas sensor del telèfon no
està funcionant.
LocationSensor1.LocationChanged LocationSensor1Això es va desencadenar a la lectura primera ubicació i cada
canvi d'ubicació.
set global UltimLloc to My Definitions Establiu aquesta variable que s'utilitzarà posteriorment.
LocationSensor1.CurrentAddress LocationSensor1Aquesta és una adreça del carrer com "Carrer Willard 2222,
Atlanta, Geòrgia."
15.
TEMA 4 15/18
Com funcionen els blocs
L'esdeveniment LocationSensor1.LocationChanged es dispara la primera vegada que
el sensor rep una lectura d'ubicació i quan el dispositiu es mou de manera que una
nova lectura es genera. Com que es molt probable que voleu enviar una adreça com
a part del missatge de resposta, la Figura 4-9 mostra com la funció
LocationSensor1.CurrentAddress es cridada per obtenir aquesta informació i
emmagatzemar-la en la variable UltimLloc. Entre bastidors, aquesta funció fa una
crida a Google Maps (a través d'una API) per determinar l'adreça de carrer més
propera per la latitud i longitud que el sensor llegeix.
Figura 4-9. Enregistrament de la ubicació del telèfon en una variable cada vegada que es detecta la ubicació GPS
Recordeu que amb aquests blocs, només hem fet la meitat de la feina. L'aplicació
encara ha d'incorporar la informació de localització en el text de resposta
automàtica, que serà enviat de tornada al remitent. Anem a fer-ho la propera
vegada.
Enviament de la ubicació com a part de la resposta
Usant la variable UltimLloc, pot modificar el controlador d'esdeveniments
Texting1.MessageReceived per afegir informació d'ubicació a la resposta. La Taula
4-8 enumera els components que necessita per això.
Taula 4-8. Blocs per mostrar informació d'ubicació en la resposta automàtica
Tipus de Bloc Calaix Objectiu
make text Text Si hi ha una lectura d'ubicació, construir un objecte de
text compost.
EtResposta.Text MessageTextBox Aquest és el missatge (personalitzat) al quadre de text.
text ("La meva última
Text Això es parlarà després que el missatge personalitzat
localització és:")
(noteu l'espai inicial).
global UltimLloc LocationSensor Aquesta és una adreça com "C/Sant Joan 2, Agres,
Espanya"
16.
TEMA 4 16/18
Com funcionen els blocs
Aquest comportament es treballa en concert amb l'esdeveniment i la variable
LocationSensor1.LocationChanged UltimLloc. Com es pot veure a la figura 4-10, en
lloc de directament enviar un missatge amb el text en EtResposta.Text, la primera
aplicació genera un missatge usant make text. Combina el text de resposta en
EtResposta.Text amb el text "La meva última ubicació coneguda és:" seguit de la
variable UltimLloc.
Figura 4-10. Incloent informació d'ubicació en el text de resposta
El valor per defecte de UltimLloc és "Desconeguda", de manera que si el sensor de
localització encara no ha generat una lectura, la segona part del missatge de
resposta conté el text "La meva última ubicació coneguda és: Desconeguda" Si hi ha
hagut una lectura , la segona part de la resposta serà una cosa així com "la meva
última ubicació coneguda és: C/Sant Joan 2, Agres, Espanya"
Posa a prova la teva app. Des del segon telèfon, enviar un text al telèfon que
executa l'aplicació. El segon telèfon rep el text de resposta amb la
informació de localització? Si no ho fa, assegureu-vos que ha tornat GPS
en la configuració de la ubicació del telèfon del primer.
17.
TEMA 4 17/18
L'aplicació completa: Cap missatge de text mentre
es condueix
La figura 4-11 mostra la configuració del bloc final per Cap missatge de text mentre
es condueix.
Figura 4-11. L'aplicació Cap missatge de text mentre es condueix completa
18.
TEMA 4 18/18
Variacions
Quan ja hages acabat l'aplicació, és possible que vulgues explorar algunes
variacions. Per exemple:
• Escriviu una versió que permet a l'usuari definir respostes personalitzades per
a determinats números de telèfon entrant. Hauràs d'afegir condicionals (if)
blocs que comprovin aquests nombres.
• Escriure una versió que envia respostes personalitzades en funció de si
l'usuari està dins de certs límits de latitud / longitud. Per tant, si l'aplicació
determina que estàs a l'habitació 222, enviarà de tornada "Joan està a
l'habitació 222 i no pot escriure un missatge ara mateix."
• Escriviu una versió que fa sonar una alarma quan un text es rep d'un nombre
en una llista "notify".
Resum
Aquests són alguns dels conceptes que hem tractat en aquest tutorial:
• El component Texting es pot utilitzar per a ambdós missatges de text, s'envia
i processa els que reben. Abans de cridar a Texting.SendMessage, ha
d'establir les propietats PhoneNumber i Message del component Texting. Per
respondre a un text entrant, el programa ho controla amb
Texting.MessageReceived.
• El component TinyDB s'utilitza per emmagatzemar informació persistent al
telèfon de la base de dades de manera que les dades poden ser recarregada
cada vegada que s'obre l'aplicació.
• El component TextToSpeech pren qualsevol objecte de text i llig en veu alta.
• make text s'utilitza per reconstruir (o concatenar) parts separades del text en
un objecte de text.
• El component LocationSensor pot informar de la latitud, longitud i direcció
actual del telèfon. Per assegurar que es té una lectura, ha d'accedir a les
seves dades al controlador d'esdeveniments
LocationSensor.LocationChanged, que s'activa la primera vegada que es
realitza una lectura i en qualsevol canvi posterior.