1 de 5. Este tutorial introduce los siguientes conceptos de App Inventor:

Este tutorial demuestra como una aplicación puede responder automáticamente a los mensajes de texto. Crearás una aplicación que devuelve una respuesta

5 downloads 101 Views 501KB Size

Story Transcript

Este tutorial demuestra como una aplicación puede responder automáticamente a los mensajes de texto. Crearás una aplicación que devuelve una respuesta cuando se recibe un mensaje de texto. La idea para la aplicación procede del estudiante Daniel Finnegan de la Universidad de San Francisco. Para realizar este tutorial se supone que ya estas familiarizado con los conceptos básicos de App Inventor -- el uso del Diseñador de componentes para construir una interfaz de usuario, y el uso del Editor de bloques para especificar controladores de evento. Intenta realizar alguno de los tutoriales basicos antes de continuar.

Conéctate al sitio web de App Inventor y comienza un nuevo proyecto. Nómbralo NoTextWhileDriving, y también el Title (título) de la pantalla a NoTextWhileDriving. Abre el editor de bloques y conéctalo al teléfono.

Diseñarás la aplicación para que envíe una respuesta para cualquier mensaje recibido. También permitirás al usuario personalizar la respuesta enviada. Este tutorial introduce los siguientes conceptos de App Inventor: El componente Texting para enviar textos y procesar los textos recibidos. El componente base de datos TinyDB para guardar el mensaje personalizado incluso cuando se cierra la aplicación.

La interfaz de usuario para NoTextWhileDriving es simple: tiene una caja de texto para el mensaje de respuesta y un botón para enviar los cambios en el mensaje. También necesitarás un componente Texting y un componente TinyDB, los cuales aparecerán en el área de componentes "no visuales". Mas abajo hay una tabla con instrucciones detalladas para el diseño de los componentes, pero puedes también construirla a partir la la siguiente imagen de como deberían quedar:

Los componentes que se muestran a continuación son los usados para crear la pantalla del diseñador mostrada mas arriba. Arrastra cada componente desde la Paleta dentro del Viewer y nómbralos como se especifica a continuación: Tipo de componente

Grupo de la paleta

Como lo llamarás

Propósito del componente

Label

Basic

PromptLabel

Informa al usuario sobre el funcionamiento de la aplicación

1 de 5

TextBox

Basic

MessageTextbox

El usuario introducirá su respuesta personalizada aquí

Button

Basic

SubmitResponseButton

El usuario hace clic aquí para enviar la respuesta a la base de datos

Texting

Social

Texting1

El componente que procesará los textos

TinyDB

Basic

TinyDB1

El componente que almacenará la respuesta en la base de datos

Ajusta las propiedades de los componentes del siguiente modo: Cambia la propiedad Text de PromptLabel a "The text below will be sent in response to all texts while this app is running." (El texto a continuación se enviará como respuesta a todos los mensajes mientras la aplicación esté funcionando) Cambia la propiedad Text de MessageTextbox a "I'm driving right now, I'll contact you shortly". (Estoy conduciendo, te llamaré en breve) Cambia la propiedad Text de SubmitResponseButton a "Modify Response". (Modificar la respuesta)

NoTextWhileDriving tiene los siguientes comportamientos: 1. Cuando se recibe un mensaje, el texto introducido en MessageTextbox se envía como mensaje de texto en respuesta al remitente. 2. Cuando el usuario modifica el mensaje personalizado en MessageTextbox y hace clic en SubmitResponseButton, el nuevo mensaje se guarda de forma persistente en la base de datos del teléfono. 3. Cuando se inicia la aplicación, el mensaje personalizado se carga desde la base de datos a MessageTextbox.

Cuando se recibe un mensaje en el teléfono, el evento Texting.MessageReceived es iniciado. Tu aplicación debe manejar este evento ajustando las propiedades PhoneNumber y Message del componente Texting apropiadamente y enviar texto de respuesta. Necesitarás los siguientes bloques: Tipo de bloque

Cajón

Propósito

Texting1.MessageReceived

Texting1

el controlador de evento que se activa cuando se recibe un mensaje de texto

set Texting1.PhoneNumber to

Texting1

Ajusta la propiedad PhoneNumber antes de enviar.

value number

My Definitions

este es el número de teléfono de la persona que envió el mensaje

set Texting1.Message to

Texting1

ajusta la propiedad Message antes de enviar

MessageText.Text

MessageText

Es el mensaje que el usuario ha introducido.

Texting1.SendMessage

Texting

Envía el mensaje.

Los bloques deben quedar así:

Cuando el teléfono recibe cualquier mensaje, el evento Texting1.MessageReceived es activado. El número de teléfono del remitente está en el argumento number, y el mensaje del remitente en el argumento messageText. En respuesta, la aplicación envía un mensaje de texto al remitente. Para enviar un mensaje, la aplicación ajusta las dos propiedades clave del componente Texting: la propiedad PhoneNumber y la propiedad Message. Texting.PhoneNumber se ajusta al número del remitente, y Texting.Message se ajusta al mensaje de MessagetextBox-- este puede ser, "I'm driving right now, I'll contact you shortly.", (Estoy conduciendo, te llamaré en breve) por defecto, o el usuario también podrá modificarlo. Una vez que estas propiedades están ajustadas, se llama a Texting1.SendMessage para enviar el mensaje de respuesta.

Prueba el comportamiento. Necesitaras un segundo teléfono para probar este comportamiento. Desde el segundo teléfono, envía un mensaje de texto al teléfono que está ejecutando la aplicación. ¿Recibe el segundo teléfono el mensaje de respuesta? Si esto funciona, prueba a modificar el mensaje de respuesta y enviar otro mensaje desde el segundo teléfono. ¿Se ha enviado la nueva respuesta?

Hasta ahora la aplicación funciona, pero si la cierras y la vuelves a abrir el mensaje que has personalizado se habrá perdido. Para hacer las cosas de un modo mas conveniente, almacena la respuesta personalizada que el usuario ha introducido en una base de datos usando el componente TinyDB. TinyDB te proporciona dos bloque: StoreValue y GetValue. De esta forma te permite almacenar y etiquetar una pieza de información, que mas tarde podrás recuperar.

2 de 5

Necesitarás los siguientes bloques para almacenar la respuesta almacenada: Tipo de bloque

Cajón

Propósito

SubmitResponseButton.Click

SubmitResponseButton

El usuario hace clic en este botón para guardar el mensaje de respuesta

TinyDB1.StoreValue

TinyDB1

almacena el mensaje de respuesta en la base de datos del teléfono

text ("responseMessage")

Text

es usado como etiqueta para los datos

MessageTextbox.Text

MessageTextbox

el mensaje de respuesta introducido por el usuario está aquí

Los bloques deben quedar así:

Cuando el usuario hace clic en SubmitResponseButton, la aplicación almacena la respuesta introducida en la base de datos. El texto "responseMessage" es usado como etiqueta para identificar específicamente la información -- mas tarde usarás esa etiqueta para recuperar el mensaje desde la base de datos.

Programa el controlador de evento Screen1.Initialize para que la respuesta personalizada que se ha almacenado sea recuperada desde la base de datos y colocada en MessageTextbox. Comprueba los datos recuperados para asegurarte que contienen "algo" -- después de todo, la primera vez que se use la aplicación, la base de datos no tendrá ningún mensaje guardado. Si hay un mensaje guardado, colócalo en MessageTextbox para que el usuario pueda verlo y que pueda ser usado para responder a los mensajes entrantes. Necesitarás los siguientes bloques: Tipo de bloque

Cajón

Propósito

def variable ("response")

Definitions

Una variable temporal para almacenar los datos recuperados

text (vacio)

Text

El valor inicial de la variable puede ser cualquier cosa

Screen1.Initialize

Screen1

Este es activado cuando se inicia la aplicación

set response to

My Definitions

cambiaras la variable al valor recuperado de la base de datos

TinyDB1.GetValue

TinyDB1

toma la respuesta de texto almacenada en la base de datos

text ("responseMessage")

Text

colócalo en la ranura tag de GetValue, asegurate de que el texto es el mismo que se usó en StoreValue above

if test

Control

para preguntar si el valor recuperado contiene algún texto

> block

Math

comprueba si la longitud del valor recuperado es > (mayor que) 0

length text

Text

comprueba si la longitud del valor recuperado es mayor que 0

global response

My Definitions

esta variable mantiene el valor devuelto desde GetValue

number (0)

Math

para comparar con la longitud de la respuesta

set MessageTextbox.Text to MessageTextbox si recuperamos algo, lo coloca en MessageTextbox global response

My Definitions

esta variable mantiene el valor devuelto desde GetValue

Los bloques deben quedar así:

Cuando se inicia la aplicación, el evento Screen1.Initialize es activado. La aplicación llama a la base de datos TinyDB1.GetValue con la etiqueta (tag) "responseMessage"-- la misma etiqueta usada cuando almacenaste la entrada del usuario anteriormente. El valor resultante se coloca en la variable de respuesta (response). La variable de respuesta se usa para que el valor devuelto por la base de datos pueda ser comprobado. Si tiene una longitud de 0, entonces no hay una entrada en

3 de 5

la base de datos con la etiqueta "responseMessage"-- algo que ocurrirá la primera vez que se use esta aplicación. Pero si el mensaje es mayor que 0, la aplicación sabe que una respuesta ha sido almacenada anteriormente, y el valor devuelto puede ser colocado en MessageTextBox lo cual podrá ver el usuario y será usado como respuesta en los mensajes enviados.

Prueba la aplicación. Introduce una nueva respuesta en MessageTextbox y haz clic en SubmitResponseButton. Entonces reinicia la aplicación haciendo clic en el botón Restart App en el Editor de bloques. Esto hará que la aplicación se reinicie tal como lo haría cuando el usuario cierra y vuelve a abrir la aplicación mas tarde. ¿Aparece el mensaje personalizado que has introducido?

Una vez que tengas la aplicación No Text While Driving funcionando, puede que quieras explorar algunas variaciones. Por ejemplo. Crea una versión que lea en voz alta los mensajes recibidos. Necesitará usar el componente TextToSpeech. Crea una versión que permita al usuario crear mensajes personalizados para números en particular. Crea una versión que envíe respuestas personalizadas basándose en la localización del usuario (por ejemplo, Estoy en unan iglesia...)

Estas son algunas de las ideas examinadas en este tutorial: El componente Texting puede ser usado tanto para enviar mensajes como para procesar los que se reciben. El componente TinyDB se usa para almacenar información de modo persistente, en la base de datos del teléfono, para que esté disponible cada vez que se inicie la aplicación.

Escanea el siguiente código Qr con tu teléfono para instalar y ejecutar la aplicación de ejemplo.

Si te ha gustado trabajar con este ejemplo en App Inventor, descarga el código fuente a tu computadora, despues abre App Inventor, ve a la página My Projects, y elige More Actions | Upload Source.

Google agradece al Profesor David Wolber, Profesor de Ciencias de la Computación en la Universidad de San Francisco, el desarrollo de este tutorial.

4 de 5

Este trabajo está bajo una licencia Creative Commons Attribution-NonCommercial 3.0 Unported License. El trabajo original de Google se ha modificado El trabajo modificado se ha traducido del ingles al español por Pepe Corcín Acerca de | Privacidad | Condiciones

5 de 5

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.