App Inventor y las API


En este pot, vamos a echar un vistazo más amplio a las aplicaciones que la información del origen de la Web.Vamos a empezar por la creación de una aplicación que le pide a un sitio web para generar un gráfico de barras (imagen) de las puntuaciones de un jugador del juego de la pantalla. Luego hablaremos de cómo TinyWebDB se puede utilizar para acceder a cualquier tipo de datos (no sólo imágenes) desde la Web, y le proporcionaremos una muestra que tiene acceso a los datos del stock de Yahoo! Finanzas. Por último, vamos a discutir cómo se puede crear sus propias fuentes de información web que pueden ser utilizados por la aplicación Inventor apps.

 

La web y el mundo de los móviles hay diferentes: sitios web y aplicaciones de contenido el remix de varias fuentes de datos, y la mayoría de los sitios están diseñados con la interoperabilidad en mente. Un ejemplo ilustrativo de un mashup web es Housing Maps ( http://www.housingmaps.com ), en la foto , que toma información de alquiler de apartamentos de Craigslist ( http://www.craigslist.org ) y los trata  con la API de Google Maps.

 

Mashups como Housing Maps son posibles porque los servicios como Google Maps proporcionan tanto un sitio web y una correspondiente API de servicios web . Nosotros, los humanos visitamos http://maps. google.com / en un navegador, pero aplicaciones como Mapas Viviendas comunicamos máquina a máquina con la API de Google Maps. Mashups procesan los datos, se combinan con los datos de otros sitios (por ejemplo, Craigslist), y luego lo presentan de maneras nuevas e interesantes.

Casi todos los sitios web popular ahora ofrece esta alternativa, el acceso de máquina a máquina. El programa proporciona los datos se denomina un servicio web y el protocolo de cómo un cliente de aplicación debe comunicarse con el servicio se denomina interfaz de programación de aplicaciones o API. En la práctica, el término API se utiliza para hacer referencia al servicio web también.

El servicio Web de Amazon (AWS) fue uno de los primeros servicios de Internet, como Amazon se dio cuenta de que la apertura de sus datos para su uso por parte de entidades de terceros eventualmente conducir a más libros a la venta.Cuando Facebook lanzó su API en el 2007, muchas personas alzaron sus cejas. Datos de Facebook no es el libro de los anuncios, por lo que ¿por qué debería dejar que otras aplicaciones “robar” los datos y potencialmente atraer a muchos usuarios fuera del sitio de Facebook (y su publicidad!). Pero su apertura condujo Facebook para convertirse en una plataforma en lugar de sólo un sitio-lo que significa que otros programas, como FarmVille, podrían aprovechar y explotar Facebook de funcionalidad-y ​​nadie puede discutir con su éxito en la actualidad. En el momento en Twitter puso en marcha en 2009, el acceso de la API era una expectativa, no una novedad, y Twitter actuó en consecuencia. Ahora bien, como se muestra abajo, la mayoría de los sitios web ofrecen tanto una API y una interfaz humano.

Así que la Web es una cosa que nosotros los seres humanos-un promedio de colección de sitios para visitar. Para los programadores, es la base de datos más grande y más diversa del mundo de la información. La comunicación de máquina a máquina ahora está lista para superar a la comunicación hombre-máquina en la Web!

Hablando con APIs web que generan Imágenes

Nota: La API de gráficos de Google ahora esta obsoleto. Usted todavía puede utilizarlo y este ejemplo, pero puede que no estar ahí para siempre. Sin embargo, esta muestra sigue siendo instructivo para su explicación de las URL y los parámetros

La mayoría de las API aceptan solicitudes en la forma de una URL y devolver los datos,(normalmente en formatos estándar como XML o Extensible Markup Language, y JSON, JavaScript Object Notation(para estas API, debe utilizar el TinyWebDB componente para comunicarse)

Algunas API, sin embargo, no devuelven datos; devuelven una imagen. En esta sección, vamos a discutir cómo se puede comunicar con estas API de generación de imágenes con el fin de ampliar las capacidades de la interfaz de usuario de App Inventor.

La API de gráficos de Google es un servicio de este tipo. Su aplicación puede enviar algunos datos dentro de una URL, y enviará de vuelta una carta que se puede mostrar en su aplicación. El servicio crea muchos tipos de gráficos, incluyendo gráficos de barras, gráficos circulares, mapas y diagramas de Venn. El API Chart es un gran ejemplo de un servicio web interoperables cuyo propósito es mejorar las capacidades de los otros sitios. Desde App Inventor no ofrece mucho en términos de componentes de visualización, la posibilidad de aprovechar un servicio como el API gráfico es crucial.

Lo primero que debe hacer es entender el formato de la URL debe enviar a la API. Si usted va al sitio del API Gráfico de Google ( http://code.google.com/apis/ ), podrás ver la información general se muestra mas abajo.

 

El sitio incluye una documentación completa y un asistente para crear gráficos de forma interactiva y explorar cómo construir las URLs. El asistente es especialmente útil, ya que se puede utilizar un formulario para especificar el tipo de gráfico que desee y luego examinar la dirección URL que genera el asistente de ingeniería inversa lo que usted desea enviarlo a sus datos específicos.

Seguir adelante y jugar con el sitio web y el asistente y crear algunas cartas, y luego echar un vistazo a los detalles de las direcciones URL utilizadas para construirlas.

Por ejemplo, si se introduce la dirección URL siguiente en un navegador:

http://chart.apis.google.com/chart?cht=bvg&chxt=y&chbh=a&chs=300×225&chco=A2C180&chtt=Vertical+bar+chart&chd=t:10,50,60,80,40,60,30

obtendrá el gráfico que se muestra a continuacion.

 

Para entender la URL bastante complicado de aspecto especificada anteriormente, es necesario entender cómo funcionan las direcciones URL. En su experiencia de navegación, te habrás dado cuenta URLs con signos de interrogación (?) Y los símbolos de unión (&). El? carácter especifica que el primer parámetro de la petición de URL está llegando. El carácter y luego separa cada parámetro siguiente. Cada parámetro tiene un nombre, un signo igual y un valor. Así que la URL de ejemplo está llamando a la API gráfico ( http://chart.apis.google.com/chart ) con los parámetros indicados en la  siguiente tabla.

 

Al modificar los parámetros, puede generar varios gráficos. Para obtener más información sobre los tipos de gráficos que se pueden crear, revisar la documentación de la API en https://developers.google.com/chart/

Ajuste de la image.picture propiedad a un API Gráfico

Ahora usted sabe cómo escribir la muestra Gráfico URL de la API en un navegador web para ver la tabla que se genera. Para obtener una tabla para aparecer en una aplicación, usted tendrá que ajustar la imagen característica de una imagen componente a la misma URL. Para explorar esto, haga lo siguiente:

  1. Crear una nueva aplicación con un título de la pantalla de “Gráfico Muestra App”.
  2. Añadir una imagen componente con un ancho de “padre de relleno” y la altura de 300.
  3. Ajuste el image.picture propiedad a la URL de la muestra ( .? http://chart.apis.google com / carta cht = bvg y chxt = y & = a & chs = 300×225 y CHCO = A2C180 y CHTT = Vert ical + bar + gráfica y chd = t: 10,50, 60,80,40,60,30 ).No se puede establecer la propiedad en el Diseñador de componentes, ya que sólo le permite cargar un archivo. Pero se puede establecer en el Editor de bloques, como se muestra en la Figura 24-5, por lo que añadir unScreen.Initialize controlador de eventos y establecer el image.picture propiedad hay (tenga en cuenta que no se puede copiar y pegar en algunas máquinas, por lo que ‘ll tiene que escribir la URL completa).

 

Cuando se inicia la aplicación, se establece la imagen a un gráfico de regresar de la URL Chart API

 

Usted debe ver la imagen anterior en su teléfono o emulador.

La construcción de una URL Chart API dinámicamente

El ejemplo anterior muestra cómo se puede obtener un gráfico generado en su aplicación, sino que utiliza una dirección URL con datos fijos (10,50,60,80,40,60,30). Generalmente, usted mostrará dinámicas datos en el gráfico-es decir, los datos almacenados en las variables. Por ejemplo, en una aplicación de juego, es posible mostrar las puntuaciones anteriores del usuario, que se almacenan en una variable Partituras .

Para crear un gráfico de tal dinámica, debe construir la URL de la API para gráficos y cargar los datos variables en ella. En el URL de la muestra, los datos del gráfico se fija y se especifican en el parámetro chd ( chd representa los datos del gráfico):

chd = t: 10,50,60,80,40,60,30

Para construir su puntuación de tabla de forma dinámica, usted comenzará con la parte fija, chd = t :, y luego paso a través de la lista de puntuaciones, la concatenación de cada puntuación en el texto (junto con una coma). La imagen de abajo  muestra una solución completa.

 

Vamos a examinar los bloques más de cerca, porque hay mucho que hacer aquí, muchos de los cuales hemos cubierto en los capítulos anteriores. Para entender este tipo de código, es importante prever algunos datos reales. Así que vamos a suponer que el usuario ha jugado tres partidos en esta aplicación y que las variables Partituras tiene tres artículos: 11, 22 y 15.

Los bloquesdefinir una variable chdParam para almacenar la parte de la URL que contendrá los chd datos. La primera fila de bloques inicializa el texto de la chdParam de la lista de marcadores .

Después se llevan a cabo estos bloques, chdParam contendrá chd = t: 11 , 11 como es el primer valor de la Partituras lista.

El siguiente conjunto de bloques, que se muestra abajo, añade el resto de las puntuaciones a la chdParam .

 

Utilizamos un tiempo global en este ejemplo, en lugar de un foreach debido foreach sólo le permite hacer lo mismo a cada elemento. Aquí, queremos insertar comas antes de que el segundo elemento y todos los elementos que vienen después de ella (pero no el primero). Con tiempo , podemos poner el primer elementoy luego de bucle a partir del segundo artículo, siempre insertando una coma antes de la partida (asegúrese de no colocar un espacio después).

Un índice se utiliza para realizar un seguimiento de dónde estamos en el Partituras lista. En cada iteración, hacer el texto agrega una coma y el siguiente elemento de Partituras . Después de realizar estos bloques, el chdParamcontendrá chd = t: 11,22,15 . Hemos construido el parámetro chd dinámicamente! (Y también hemos construido de manera que si se añaden más puntos más allá de estos primeros tres, seguirá siendo el trabajo.)

Último trabajo Los bloques “es concatenar el chd parámetro con el resto de la URL Chart API, como se muestra a continuación:

 

Los bloques de establecer el ScoreChartImage.Picture propiedad a esta dirección URL completa: ? http://chart .apis.google.com / carta cht = bvg y chxt = y & CHBH = a & chs = 300×225 y CHCO = A2C180 y CHTT = Juego + Resultados & chd = t: 11,22,15 . S

Se podría añadir una pantalla como a cualquier juego o aplicación mediante la adición de bloques similares a este ejemplo. También puede hablar con otras API que generan las imágenes y llevar a los en su aplicación también. La clave es que App Inventor proporciona una conexión útil a la Web a través de la imagen de los componentes.

Hablando con las API de datos Web

Nota: App Inventor ahora tiene un componente web que facilita el acceso a los datos de las API más fácil. Puede seguir utilizando el esquema TinyWebDB se describe a continuación, pero también echa un vistazo a esta muestra que utiliza el componente Web.

La API de gráficos de Google es una API web que responde a las solicitudes de devolución de una imagen. Más comúnmente, las API devolverán datos que una aplicación puede procesar y utilizar sin embargo que quiere. El “Amazonas en la Librería” de la aplicación en el capítulo 13, por ejemplo, devuelve los datos en forma de una lista de libros, con cada libro que incluye un título, actual precio más bajo, y el ISBN.

 

Para hablar con una API desde una aplicación App Inventor, que no es necesario para construir una URL, como lo hicimos con el ejemplo Chart AP:en su lugar, se consulta la API al igual que lo haría una base de datos web  sólo enviar su solicitud como la etiqueta a la TinyWebDB.GetValue bloque. El TinyWebDB componente se encarga de generar realmente el URL que usted envía a la API.

TinyWebDB no proporciona acceso a todas las API, incluso aquellos que devuelven un formato de datos estándar como RSS. TinyWebDB sólo puede hablar con los servicios web para la que un inventor “contenedor” servicio App, con un protocolo en particular, se ha creado. Afortunadamente, algunos de estos servicios se han creado ya, y más tardará en llegar. Usted puede encontrar algunos de estos en http://appinventorapi.com .

Exploración de la interfaz web de una API

En esta sección, usted aprenderá cómo utilizar TinyWebDB para traer los datos de precios de acciones desde el Inventor compatible API App en http://yahoostocks.appspot.com . Si usted va al sitio, verá la interfaz web (humana) del servicio representado a continuación.

 

Pruebe a escribir “IBM” o algún otro símbolo de la acción en la casilla Tag. La página web devuelve información actual como una lista, con cada elemento que representa una parte diferente de la información, como se describe en la lista numérica más abajo en la página.

Tenga en cuenta que esta interfaz web no se entiende como una nueva e interesante manera de encontrar información; su único objetivo es permitir a los programadores para explorar la API para comunicarse con el servicio Web subyacente de máquina a máquina.

Acceso a la API a través de TinyWebDB

El primer paso para crear una aplicación que se comunica con el servicio web anterior es arrastrar un TinyWebDB componente en el Diseñador de componentes. Sólo hay una propiedad asociada con TinyWebDB , su ServiceURL , que se muestra abajo Por defecto, está ajustado a una base de datos web por defecto, http://appinvtinywebdb.appspot.com . Dado que queremos acceder a su lugar el Yahoo! Stocks API, establezca esta propiedad enhttp://yahoostocks.appspot.com , el mismo URL que ha introducido en la barra de direcciones del navegador antes de ver la interfaz de la página web.

 

El siguiente paso es hacer una TinyWebDB.GetValue llamada a datos de la solicitud desde el sitio. Usted puede hacer esto en respuesta al usuario entrar en un símbolo de valor y haciendo clic en el botón Enviar en la interfaz de usuario de su aplicación, o usted puede hacerlo en el Screen.Initialize evento para traer a la información sobre una acción correcta en particular cuando se abre la aplicación. En cualquier caso, cuando se llama a GetValue , debe establecer la etiqueta a un símbolo de la acción, como se ilustra abajo, tal como lo hizo en la página web http:// yahoostocks.appspot.com .

 

 

TinyWebDB  asume  una comunicación  asíncrona : su aplicación solicita los datos con TinyWebDB.GetValue y luego va sobre su negocio. Usted debe proporcionar un controlador de eventos por separado, TinyWebDB.GotValue , para programar los pasos que la aplicación debe tomar cuando los datos realmente regresa desde el servicio web. De nuestro examen de la interfaz humana de http://yahoostocks.appspot.com , nos enteramos de que los datos devueltos desde GetValue es una lista, con particulares elementos de la lista que representan diferentes datos sobre la población.

Una aplicación cliente puede utilizar algunos o todos los datos que el servicio ofrece. Por ejemplo, si sólo quería mostrar el precio actual y su cambio desde la apertura de la jornada, es posible configurar los bloques como se muestra ahora:.

 

Si marca la especificación de la API en http://yahoostocks.appspot.com , verás que el segundo elemento de la lista devuelta es de hecho el precio actual y el quinto punto es el cambio ya que las reservas comenzaron a cotizar ese día.Esta aplicación simplemente extrae los elementos de lo que es devuelto por la API, y los muestra en la etiqueta PriceLabel y ChangeLabel . La imagen  siguinte ofrece una instantánea de la aplicación en acción.

 

Creación de sus propias APIs-Compliant Inventor de la aplicación

TinyWebDB es el puente de un Inventor aplicación App para la Web. Permite que en la aplicación Inventor los programadores hablen con los servicios web con el simple protocolo de etiqueta-valor inherente al GetValue función. Usted envía una etiqueta en particular como el parámetro, así como una lista o un objeto de texto se devuelve como el valor. De esta manera, el Inventor programador App está protegido de la programación difícil requerida para analizar (comprender y extraer los datos de) formatos de datos estándar como XML o JSON.

La desventaja es que la aplicación de Inventor aplicaciones pueden hablar sólo a los servicios web que siguen el protocolo esperado por TinyWebDB  que espera que los datos se devuelvan en una forma muy específica, y la API tiene para ofrecer a sus datos en consecuencia. App Inventor no tiene un componente de acceso a un servicio web que devuelve arbitraria formatos de datos estándar, como XML o JSON. Si no hay una-Inventor compatible API App ya  disponible, una persona con la capacidad de escribir un programa web debe crearlo.

En el pasado, las API de construcción fue difícil, ya que no sólo necesita entender los protocolos de programación y web, pero también se necesitan para configurar un servidor para alojar su servicio web y una base de datos para almacenar los datos. Ahora es mucho más fácil, ya que puede aprovechar las herramientas de computación en la nube como Google App Engine y Elastic Compute Cloud de Amazon para implementar de inmediato el servicio que usted cree. Estas plataformas no sólo alojar su servicio web, pero que también va a permitir que miles de usuarios acceder a él antes de cobrar un solo centavo. Como se puede imaginar, estos sitios son una gran bendición para la innovación.

Personalización de Código Plantilla

Escribir su propio API puede parecer desalentador, pero la buena noticia es que usted no tiene que empezar de cero. Usted puede aprovechar algo de código de plantilla siempre que lo hace especialmente fácil crear APIs-Inventor de la aplicación compatible. El código está escrito en el lenguaje de programación Python y utiliza App Engine de Google. La plantilla proporciona código repetitivo para obtener los datos en la forma que las necesidades de App Inventor, y una función, obtiene_valor , que se puede personalizar.

Puede descargar el código de la plantilla y las instrucciones para implementarlo en los servidores de Google App Engine en http://appinventorapi.com/using-tinywebdb-to-talk-to-an-api/ . Usted puede notar que el enlace te lleva a la misma appinventorapi. com sitio que se puede utilizar  para crear una base de datos web a medida. La construcción de una API es similar, sólo que en lugar de simplemente almacenar y recuperar datos, se le llama a otro servicio para acceder a los datos que necesita.

Para crear su propia API web, podrás descargar la plantilla, modificar unos pocos lugares clave en el código, y luego subirlo a App Engine. En cuestión de minutos, usted tendrá su propia API que se puede llamar utilizando TinyWebDB en una App Inventor App.

Aquí está el código particular de la plantilla que tendrá que personalizar (no se preocupe por el texto que viene después del símbolo #, al igual que los comentarios en App Inventor, sólo describe lo que el código se está haciendo):


	def get_Value (auto, etiqueta):    
		# Para este ejemplo sencillo, apenas volvemos hola: tag, que se envía en la etiqueta por el cliente    
		value = "hola" + tag 
		value = "\" "+ valor +" \ ""
		# Añade comillas si el valor es tiene varias palabras    
		si self.request.get ('fmt') == "html":         
		  WriteToWeb (auto, etiqueta, valor)    
		más:         
		  WriteToPhone (auto, etiqueta, valor) 

Este código es para una función (mismo que un procedimiento en el App Inventor) llamado obtiene_valor , y es de hecho el código que se invoca cuando su aplicación llama a una API con la TinyWebDB.GetValue función. tag es unparámetro de la función y corresponde a la etiquetar envía en el GetValue llamada.

El código en negrita es la parte que va a cambiar. Por defecto, simplemente toma la etiqueta enviado con la solicitud y la envía de vuelta “hola etiqueta.” (En otras palabras, si se llama a este código con la etiqueta “joe”, devuelve “hola joe”).Lo hace mediante la variable de valor , que se envía a la WriteToWeb función si la solicitud proviene de la Web, o WriteToPhone si la solicitud proviene de un teléfono.

Nota. Incluso si nunca has mirado Python u otro código de programación, usted puede encontrar el ejemplo anterior poco legible de su experiencia con App Inventor. La línea “def obtiene_valor …” define un procedimiento, las líneas “value =” … están preparando el “valor” variable para algo, y el “si ..” declaraciones debería parecer familiar. Los conceptos fundamentales son los mismos, es sólo de texto en lugar de los bloques.

Para personalizar la plantilla, reemplace el código en negrita con cualquier cálculo que desee, siempre y cuando ese código coloca algo en la variable valor . A menudo, su API hará una llamada a otra API (esto se llama “ajuste” de una llamada, más específicamente, su obtiene_valor función hará que la llamada a otra API).

Muchas API son complicados, con cientos de funciones y los regímenes de autorización de usuario complejas. Otros, sin embargo, son bastante simples, y usted puede incluso encontrar ejemplos de código para acceder a ellos en la Web, como se verá en la siguiente sección.

Invocar  la API de Finanzas Yahoo!

El Yahoo! Stocks API para App Inventor puede  utilizarse  mediante la modificación del código de la plantilla anterior con código que se encuentra a través de una simple búsqueda en Internet. Puesto que el objetivo estaba terminando el Yahoo! Stocks API para el uso de la aplicación Inventor, el desarrollador (Wolber) hizo una búsqueda en Internet de “Stocks Python API de Yahoo”. Desde el .gummy-stuff.org/Yahoo-data.htm http://www sitio, se encontró con que una URL en el formulario :http://download.finance.yahoo.com/d/quotes.csv?f=sl1d1t1c1ohgv&e=.cs v & s = IBM

Estpo eberia devolve un archivo de texto con una sola cadena separada por comas de los datos. La URL anterior devuelve la cadena de texto:

“IBM”, 140.85 “10/15/2010”, “15:00”, -0.65,142.10,142.10,140.60,4974553

Luego encontró algo de código Python para acceder a la API de Yahoo! Acciones en http://www .goldb.org / ystockquote.html. Con un poco de corte rápido y pegar y un poco de edición, el App Inventor wrapper API fue creado mediante la modificación de la plantilla de la siguiente manera:


	def get_Value (auto, etiqueta):    
	  # Necesidad de generar una cadena o una lista y enviarla a WriteToPhone / WriteToWeb    
	  # Cuerdas varias palabras deben tener comillas delante y detrás    
	  # Por ejemplo,    
	  # Value = "\" "+ valor +" \ ""    
	  # Llamar a la API de Yahoo Finance y obtener un identificador para el archivo que se devuelve    
	  quoteFile=urllib.urlopen("http://download.finance.yahoo.com/d/quotes.csv?f=sl1d1t1c1ohgv&e=.csv&s="+tag)    
	  line = quoteFile.readline () # sólo hay una línea de    
	  splitlist = linea.split (",") # divide los datos en una lista    
	  # Los datos tiene comillas alrededor de los objetos, por lo que los elimina    
	  i = 0       
	  mientras i <len (splitlist):        
	    item = splitlist [i]        
	    splitlist [i] = item.strip ('"') # elimina" en torno a las cadenas
	    i = i 1    
	  valor = splitlist    
	  si self.request.get ('fmt') == "html":         
	    WriteToWeb (auto, etiqueta, valor)    
	  más:         
	    WriteToPhone (auto, etiqueta, valor) 

El código en negrita llama a la API de Yahoo! dentro del urllib.urlopen llamada a la función (esto es una manera de llamar a las API del lenguaje Python). La URL tiene un parámetro, f , que especifica el tipo de datos de almacenamiento que desea (este parámetro es algo así como los parámetros crípticos requeridos por el API de gráficos de Google). Los datos devueltos por Yahoo! se pone entonces en la variable de la línea . El resto del código se divide los elementos a una lista, quita las comillas alrededor de cada artículo, y envía el resultado al solicitante (ya sea la interfaz web o una aplicación Inventor App).

 

Fuente  aqui

Anuncios

Nuevas funciones APP Inventor


En este post , vamos a tratar  nuevas funciones novedosas    incorporadas en  Mit App Inventor 2, como son la funcion File que puede utilizar para almacenar y recuperar archivos,  FusiontablesControl que  permite almacenar, compartir, consultar y visualizar tablas de datos, TiniDb   que es un  componente no visible que almacena los datos de una aplicación y por ultimo  TiniWebDb ,componente no visible que se comunica con un servicio Web para almacenar y recuperar información del que ya hemos hablado aqui

File

Componente no visible para almacenar y recuperar archivos. Utilice este componente para escribir o leer archivos de su dispositivo. El comportamiento por defecto es para escribir archivos en el directorio de datos privada asociada a su aplicación. El Companion es especial entubado para escribir archivos en / sdcard / AppInventor / datos para facilitar la depuración. Si la ruta del archivo comienza con una barra (/), a continuación, se crea el archivo relativo a / sdcard.

Por ejemplo se escribe un fichero en / miArchivo.txt escribirá el archivo en / sdcard / miArchivo.txt.

Propiedades

ninguno

Eventos

GotText (texto texto)
Evento que indica que el contenido del archivo se han leído.

Métodos

AppendToFile (texto texto, nombre de archivo de texto)
Anexa texto al final de un almacenamiento de archivos, crear el archivo si no existe. Véase el texto de ayuda en virtud de SaveFile para obtener información acerca de dónde se escriben los archivos.
Eliminar (nombre de archivo de texto)
Elimina un archivo de almacenamiento. Prefijar el nombre de archivo con / para borrar un archivo específico en la tarjeta SD, por ejemplo / miArchivo.txt. se eliminará el archivo / sdcard / miArchivo.txt. Si el archivo no comienza por /, entonces se eliminará el archivo que se encuentra en los programas de almacenamiento privado. Inicio del expediente de / / es un error porque los archivos de activos no se pueden borrar.
ReadFrom (fileName texto)
Lee texto de un archivo en el almacenamiento. Prefijar el nombre de archivo con / para leer desde un archivo específico en la tarjeta SD. por ejemplo / miArchivo.txt leerá el archivo / sdcard / miArchivo.txt. Para leer los bienes envasados ​​con una aplicación (también funciona para el Companion) iniciar el nombre de archivo con / / (dos barras). Si un nombre de archivo no comienza con una barra, que se leerá de la aplicaciones de almacenamiento privado (para las aplicaciones empaquetadas) y desde / sdcard / AppInventor / datos para el Companion.
SaveFile (texto texto, nombre de archivo de texto)
Guarda el texto en un archivo. Si el nombre del archivo comienza con una barra (/) el archivo se escribe en la sdcard. Por ejemplo escribiendo a / miArchivo.txt escribirá el archivo en / sdcard / miArchivo.txt. Si el nombre de archivo no comienza con una barra, que se escribirá en el directorio de datos privada de programas en los que no se podrá acceder a otros programas en el teléfono. Hay una excepción especial para el compañero de AI en las que estos archivos se escriben en / sdcard / AppInventor / datos para facilitar la depuración. Tenga en cuenta que este bloque se sobrescribirá un archivo si ya existe. Si desea agregar contenido a un archivo, utilice el bloque de datos anexados.

FusiontablesControl

 

Google Fusion Tables le permite almacenar, compartir, consultar y visualizar tablas de datos; este componente que permite la consulta, crear y modificar estas tablas, utilizando la API V1.0 Fusion Tables .

Para utilizar el componente, definir una consulta, llame SendQuery para ejecutar la consulta y GotResult le entregará el resultado cuando esté listo.

Tenga en cuenta que usted no tiene que preocuparse acerca de la consulta codificación UTF-. Pero usted tiene que asegurarse de que la consulta sigue la sintaxis que se describe en el manual de referencia , lo que significa que cosas como la capitalización de los nombres de los asuntos columnas, y que las comillas simples deben ser utilizados alrededor de los nombres de columna si hay espacios en las mismas.

Los resultados de la consulta generalmente se devuelven en valores separados por comas (CSV) , y se pueden convertir a la lista de formato usando la “lista de la tabla csv” o “lista de csv fila” bloques.

Uso del componente FusiontablesControl

Obtener una clave de API

Para utilizar el componente FusiontablesControl que necesita para adquirir una clave Google Aplicaciones de interfaz de programación (API), una Google API Key . Para obtener una clave de API, siga estas instrucciones:

  1. Vaya a la consola de las API de Google y acceder si es necesario.
  2. Seleccione el Servicios de elemento en el menú de la izquierda.
  3. Elija el Fusion Tables servicio de la lista proporcionada y vuelva a encenderlo.
  4. Volver al menú principal y seleccionar el acceso API artículo.

Su clave de API estará en la parte inferior de dicho panel en la sección llamada “Acceso simple API”. Usted proporcionará la clave como el valor de la ApiKeypropiedad en todas sus aplicaciones Fusiontables.

Creación de Fusion Tables

Es probable que desee crear sus propias tablas dinámicas a experimentar con lo que usted está desarrollando sus aplicaciones. Esto es tan fácil como crear un documento de Google, si usted está familiarizado con el proceso. Estos son los pasos:

  1. En la web, acceder a su cuenta de Gmail o cualquier otro servicio de Google (por ejemplo, Drive, YouTube).
  2. Seleccione la información> Aún más menú y desplácese hasta la parte inferior de la página de los servicios de Google, donde se encuentra el Fusion Tables servicio.
  3. Es posible que desee ver algunos de los ejemplos y trabajar a través de un tutorial para aprender lo básico.
  4. Haga clic en el Ver mis cuadros botón (arriba a la derecha de la página). Esto le llevará a su propia página.
  5. Usted debe ver una lista de sus propios cuadros o tablas que se han compartido con usted (posiblemente ninguno).
  6. Utilice el Crear botón para crear una nueva tabla. Dale un poco de nombres de columna. Y guardarlo.
  7. Haga clic en el Compartir botón (arriba a la derecha) para modificar los permisos de la tabla.

Creación de una aplicación Fusiontables

Al arrastrar el FusiontablesControl componente en el Diseñador, no se olvide de establecer su ApiKey propiedad, que está inicialmente en blanco. Le recomendamos que copie esta información de su consola API de Google y péguelo en el campo de la propiedad.

Propiedades

ApiKey : texto (sólo lectura)
Copie y pegue la clave de API de Google en esta propiedad.Para el desarrollo de aplicaciones que utilizan Fusiontables, debe obtener una clave de API de Google. Para obtener una clave, siga estas instrucciones.

  1. Vaya a la consola de las API de Google y acceder si es necesario.
  2. Seleccione el Servicios de elemento en el menú de la izquierda.
  3. Elija el Fusiontables servicio de la lista proporcionada y vuelva a encenderlo.
  4. Volver al menú principal y seleccionar el acceso API artículo.

Su clave de API estará cerca de la parte inferior de dicho panel en la sección llamada “Acceso simple API”.

Query : texto (sólo lectura)
La consulta para enviar a la API de Google Fusion Tables.Para formatos de consulta legales y ejemplos, consulte la Fusión Tablas API V1.0 manual de referencia.Tenga en cuenta que usted no tiene que preocuparse por que codifica para la consulta, pero usted tiene que asegurarse de que se sigue la sintaxis descrita en el manual de referencia, lo que significa que cosas como la capitalización de los nombres de los asuntos columnas, y que las comillas simples deben ser utilizados alrededor de los nombres de columna que contienen.

Eventos

GotResult (resultado de texto)
Indica que la consulta Fusion Tables haya finalizado el proceso, con un resultado. El resultado de la consulta en general, se devuelve en formato CSV, y se puede convertir a la lista de formato usando la “lista de la tabla csv” o “lista de csv fila” bloques.

Métodos

SendQuery ()
Enviar la consulta al servidor de Fusion Tables.
ForgetLogin ()
Descarta nombre de cuenta del usuario, lo que obligó a volver a autenticarse al acceder a una tabla Fusion.

TinyDB

TinyDB es un componente no visible que almacena los datos de una aplicación.

Aplicaciones creadas con App Inventor se inicializan cada vez que se ejecuta: si la aplicación establece el valor de una variable y el usuario sale de la aplicación, el valor de esa variable no será recordado la próxima vez que la aplicación se ejecute. Por el contrario, TinyDB es un persistente almacén de datos de la aplicación, es decir, los datos almacenados allí estarán disponibles cada vez que la aplicación se ejecute. Un ejemplo podría ser un juego que guarda la puntuación más alta y recupera cada vez que el juego se juega.

Los elementos de datos son cadenas almacenadas en las etiquetas . Para guardar un elemento de datos, se especifica la etiqueta debe ser almacenado bajo.Posteriormente, puede recuperar los datos que se almacena en una etiqueta determinada.

Sólo hay un almacén de datos por aplicación. Incluso si usted tiene múltiples componentes TinyDB, van a utilizar el mismo almacén de datos. Para conseguir el efecto de tiendas independientes, utilizar diferentes claves. Además, cada aplicación tiene su propio almacén de datos. No se puede utilizar TinyDB para pasar los datos entre dos aplicaciones diferentes en el teléfono, aunque usted puede utilizar para TinyDB comparte datos entre las diferentes pantallas de una aplicación multi-pantalla.

Cuando está desarrollando aplicaciones utilizando el Companion AI, todas las aplicaciones que utilizan ese compañero compartirán la misma TinyDB. Ese intercambio desaparecerá una vez que las aplicaciones se empaquetan. Pero, durante el desarrollo, se debe tener cuidado para despejar el TinyDB cada vez que comience a trabajar en una nueva aplicación.

 

Propiedades

ninguno

Eventos

ninguno

Métodos

ClearAll ()
Borrar toda la memoria de datos
ClearTag (etiqueta de texto)
Borre la entrada con la etiqueta dada
cualquier GetTags ()
Devuelve una lista de todas las etiquetas en el almacén de datos
cualquier GetValue (etiqueta de texto, cualquier valueIfTagNotThere)
Recuperar el valor almacenado en la etiqueta dada. Si no hay tal etiqueta, a continuación, volver valueIfTagNotThere.
StoreValue (etiqueta de texto, cualquier valueToStore)
Almacenar el valor dado bajo la etiqueta dada. El almacenamiento continúa en el teléfono cuando se reinicia la aplicación.

TinyWebDB

Componente no visible que se comunica con un servicio Web para almacenar y recuperar información.

Consulte Creación de un servicio TinyWebDB personalizada.

Propiedades

ServiceURL

Eventos

GotValue (texto tagFromWebDB, cualquier valueFromWebDB)
Indica que una petición del servidor GetValue ha tenido éxito.
ValueStored ()
Evento que indica que una solicitud del servidor StoreValue ha tenido éxito.
WebServiceError (mensaje de texto)
Indica que la comunicación con el servicio Web de un error es

Métodos

GetValue (etiqueta de texto)
GetValue pide el servicio web para obtener el valor almacenado en la etiqueta dada. Corresponde al servicio web lo que se devuelve si no hay un valor almacenado en la etiqueta. Este componente sólo acepta lo que sea devuelto.
StoreValue (etiqueta de texto, cualquier valueToStore)
Pide al servicio Web para almacenar el valor dado bajo la etiqueta dada
Fuente aqui

Leer datos JSON desde App Inventor


App Inventor tiene un componente llamado Web que le da la funcionalidad de enviar y recuperar datos de un servidor o de un sitio web a través de solicitudes GET y POST   de modo que e ste componente puede decodificar tanto datos formateados en los formatos  JSON y HTML .

Vamos a mostrar  como funciona una aplicación llamada iRead que le pedirá al usuario que escriba el nombre completo o parcial de libros y consulte la base de datos de libros utilizando  el API de Google  Book  API  recuperando la información sobre el libro más relevante.

Para ello vamos a analizar el título y el autor del libro,  obtener la URL de la imagen de la portada del libro, y, finalmente, la dirección URL del libro que puede ser lanzado a través de un navegador.

En MIT App Inventor , lo primero es  construir su interfaz de usuario (UI) en la ventana del diseñador: ahi  se renombran nombres predeterminados de los componentes que  App Inventor proporciona.   Si usted está teniendo dificultades para el diseño de la interfaz de usuario, descargue el archivo de origen (iRead.aia) desde  la pagina de Descargas  y  eche un vistazo.   Lo que importa es que usted tenga todos los componentes esenciales
¿Ha tratado de ejecutar una solicitud de consulta sobre el Books API de google todavía?   Haga clic en el enlace de abajo para ver la respuesta del API.
Esto le dara una respuesta que es similar a esta:
Nuestra preocupación no es la información sobre el libro actual (Con el tiempo puede que no obtenga la misma información sobre el libro usando la misma consulta), nuestras preocupaciones son las fichas que vamos a necesitar para identificar y analizar los datos específicos.   Eche un vistazo a las fichas como  >que termina con una coma y una nueva línea, “autores”:  que termina con],  etc
Ahora vamos a empezar a definir las acciones e interacciones en el editor de bloques.
   Hemos definido tres variables globales
  • googleBookSearchURL – Ahí es donde almacenamos la dirección URL de la API de búsqueda de libros.
  • TempData  – Vamos a usarlo para guardar los datos temporales.
  • bookURL  – Ahí es donde vamos a analizar y almacenar la dirección URL (token “InfoLink”) de la información sobre el libro devuelto por la API.
Cuando un usuario introduce un nombre de libro y pulsa el botón Buscar, llamamos procedimiento GetBookInfo donde simplemente construimos nuestra URL con el texto introducido por el usuario y codificada para su uso como una URL, y, finalmente, alimentamos a la propiedad Url del componente Web.   Queremos conseguir una sola información sobre el libro (API puede devolver muchos);   así que utilizamos maxResults = 1.   Si no usamos la proyección = Lite, nos encontraremos con un montón de otra información que nosotros no vamos a utilizar en esta aplicaciónl.   Al final llamamos Web.get para ejecutar nuestra consulta.
¿Cómo sabemos cuando el servidor devuelve una respuesta a nuestra consulta?   Bueno, usamos bloque GotText del componente Web para esto.   Siempre que nuestra aplicación reciba algo, el bloque GotText se activará automáticamente para nosotros para validar y procesar los datos.   Vamos a analizar la respuesta JSON de la API que recibimos.  
       Sólo podemos proceder si responseCode es 200 lo que significa nuestra consulta no falló en el camino.   Tenemos otro procedimiento llamado ParseBookResult que realmente analiza la respuesta.   En el procedimiento ParseBookResult, dividimos el contenido de la respuesta utilizando la etiqueta inicial y la etiqueta final.   Por ejemplo, para analizar el título del libro, tenemos que saber el principio y los códigos de finalización de un título.   Si usted ha notado en la consulta, devuelve-
     “Title”:  “Harry Potter y la cámara de los secretos”,
   "autores": [ 
       "JK Rowling" 
      ],

Por lo que sabemos, comienza con “title”: y termina con una coma seguida de una nueva línea. Es por eso que hemos utilizado esas etiquetas cuando llamamos ParseBookResult de procedimiento GotText arriba. En nuestro ejemplo de datos en bruto, el valor es “potter Harry y la cámara de los secretos”. Entonces desciframos el valor JSON llamando JsonTextDecode de Web. Y finalmente descifrar los caracteres HTML llamando HtmlTextDecode. Llamamos HtmlTextDecode para reemplazar caracteres HTML ilegibles con caracteres legibles. Por ejemplo el signo “&” si tenemos este , y queremos mostrarlo y en lugar de &amp;.

Cuando pulsa a un usuario en el botón Leer, simplemente lanza el navegador con la URL del libro.      Para el lanzamiento de un navegador, utilizamos el componente ActivityStarter . Establecemos primero la acción, establecemos la URL que recuperamos y despues llamamos a la startActivity de componente ActivityStarter para iniciar el navegador con la URL especificada. Si nuestro bookURL no contiene una dirección URL válida, simplemente informa a los usuarios.



Análisis de Resultados Múltiples

¿Qué pasa si usted desea analizar múltiples resultados? Bueno, en ese caso se define un maxResults más alto cuando se consulte Ahi  , definimos maxResults al valor tres lo que significa que queremos tres resultados. Si el API de Google no puede encontrar tres ocurrencias para nuestra consulta de libros, en ese caso no estaríamos recibiendo tres resultados obviamente,p ero si encuentrar tres o más para nuestra consulta, vamos a recibir sólo tres. Para fines de demostración, sólo en esta parte solo vamos a analizar los títulos. Tal vez usted ya lo adivinó, necesitaríamos para cada bloque hacer el trabajo. Hemos creado un procedimiento llamado GetAllTitles que tiene tres argumentos – apiResponse, de inicio, y fin. Como puede ver, pasamos a responseContent, inicio y fin como lo hicimos antes para analizar un solo título. GetAllTitles utiliza una para cada bucle y pasar todos los títulos y lo mismo para el análisis, exactamente como lo hicimos antes. Antes no teníamos un bucle, ya que tenía sólo un título para analizar y ahora tenemos un bucle porque tenemos muchos a analizar. Tenga en cuenta que el procedimiento GetAllTitles almacena el resultado después de analizar cada título a una variable global llamada allTitles y lo devuelve. Se utilizó un componente Label denominado OtherTitlesLabel para mostrar el resultado devuelto por el procedimiento GetAllTitles.

Por ultimo puede descargar el archivo de código fuente de esta aplicación (iRead2.aia)  y la anterior (iRead.aia  )  desde la página de Descargas del autor .
 


Fuente   aqui   

Crear una base de datos Web (Python 2.7)


Estas instrucciones son para la creación de una base de datos utilizando TinyWebDB Python2.7 y Google App Engine( este último el servicio PaaS de Google) .
Dado que  Python 2.5 está obsoleto en App Engine, estas instrucciones  que se basan en Python 2.7  y  el código de ejemplo son la mejor manera de empezar
TinyWebDB es un componente de App Inventor que le permite acceder a la web desde una aplicación para Android. Usted puede utilizar TinyWebDB para acceder a una fuente de datos (API) o para almacenar los datos de la aplicación de forma persistente en una base de datos web.
Estas notas le indican cómo hacer el último creado una base de datos web, y ponerlo en la nube utilizando el servicio App Engine gratuito de Google.
Con el código de ejemplo proporcionado aquí, usted puede configurar una base de datos web que se aloje  en los servidores de Google en cuestión de minutos, y usted no necesita ser un programador para hacerlo.
Tenga en cuenta que la aplicación App  Inventor también proporciona un componente TinyDB accediendo a datos directamente en el teléfono siendo fácil de usar. TinyWebDB sólo es necesario si los datos necesitan ser compartidos entre los teléfonos y aplicaciones (por ejemplo, aplicaciones sociales, juegos multi-jugador).
Por defecto, los TinyWebDB almacena componentes de datos en un servicio de prueba proporcionado por la aplicación Inventor, http://appinvtinywebdb.appspot.com/ . Este servicio es útil para las pruebas, pero es compartido por todos los usuarios de App Inventor, y tiene un límite de 1.000 entradas. Si usted utiliza, sus datos serán sobrescritos con el tiempo.
Para un ambiente realo, tendrá que crear un servicio web personalizado que no se comparta con otras aplicaciones y programadores de App Inventor. Usted no tiene que ser un programador para hacerlo, sólo tiene que seguir las instrucciones a continuación y usted tendrá su propio servicio en cuestión de minutos.

Para crear su propio servicio Web, siga estas instrucciones:

  • Descargue App Engine para Python en http://code.google.com/appengine/ .Asegúrese que descargue el SDK de App Engine para Python. Después de instalarlo, ejecute el GoogleAppEngineLauncher haciendo clic en su icono.
  • Descargue esta muestra de código de base de datos web . Se trata de un archivo zip que contiene el código fuente de su servicio de base de datos web a medida
  • Descomprimir el archivo zip descargado. Se creará una carpeta con el nombre appinventordb. Usted puede cambiar el nombre si lo desea.
  • En el GoogleAppEngineLauncher, seleccione Archivo | Agregar aplicación existente. Vaya a establecer la ruta a la carpeta appinventordb simplemente que  ha descomprimido. Luego haga clic en el botón Ejecutar. Esto lanzará un servicio web de prueba que se ejecuta en el equipo local.
  • Este código está configurado para funcionar con App Engine usando Python 2.7, así que tendrá que tener instalado  Python 2.7 en el equipo y asegúrarese de que App Engine está configurado para usarlo (en App Engine Lanzador, seleccione Preferencias y luego poner en el camino la ruta hacia Python2.7)
  • Puede probar el servicio abriendo un navegador e  ingresando  “localhost: 8080” como la dirección URL (el número de puerto puede ser algo diferente de 8080, comprobar los registros). Verá la interfaz de la página web para su servicio web.El objetivo final de este servicio es  comunicarse con una aplicación móvil creada con App Inventor. Pero el servicio proporciona una interfaz de página Web para el servicio para ayudar a los programadores con la depuración. Puede invocar las operaciones get y post a mano, ver las entradas existentes, así como eliminar entradas individuales
  • Su aplicación no está aún en la web, y por lo tanto aún no puede acceder a una aplicación App Inventor. Para llegar allí, tiene que subirlo a los servidores de Google App Engine.
  • En  GoogleAppEngineLauncher, seleccione Panel. Ingrese su información de cuenta de Google y usted será llevado a un panel de control de App Engine.
  • Elija Crear una aplicación. Tendrá que especificar  identificador único global para su aplicacion. Recuerde que el identificador de aplicación, ya que lo necesitará más adelante. Proporcione un nombre a su aplicación y haga clic en Crear solicitud a presentar. Si el identificador es único, ahora tendra una nueva aplicación, vacía en los servidores de Google.
  • Abra un editor de texto del equipo local y abra el archivo  app.yaml dentro de la carpeta appinventordb qeu ha descomprimido. Modifique la primera línea para que la aplicación coincide con el identificador de la aplicación se establece en Google.
  • En GoogleAppEngineLauncher, seleccione Desplegar y siga los pasos para implementar su aplicación.
  • Prueba para ver si su aplicación se está ejecutando en la web. En un explorador, introduzca myapp.appspot.com,  sustituyendo  logicamente  el identificador de la aplicación de “frontend”. La aplicación debe ser la misma que cuando se ejecutó en el servidor de prueba local.,sólo que ahora, está en la web y se puede acceder a él desde su App Inventor para aplicación Android.

Aplicaciones App Inventor Cliente

Una vez que usted tiene una “Inventor compatible App” base de datos web, puede crear aplicaciones Inventor de la aplicación que accedan al mismo. Para la muestra que acaba de crear, haga lo siguiente:

  • Arrastre en un componente TinyWebDB en el Diseñador de componentes.
  • Modifique la propiedad ServiceURL del predeterminadohttp://appinvtinywebdb.appspot.com/ a la URL de su servicio.
  • Cualquier operación StoreValue (bloques) almacenará los datos a su servicio, y cualquier operación GetValue recuperará de su servicio.

Aquí hay algunos bloques que almacenan y recuperan datos:

Fuente aqui

Como se programan apps moviles con MIT App Inventor (bloques lógicos)


App inventor es un framework creado inicialmente por el MIT (Instituto tecnológico de Massachusetts)  siendo adoptado por google, para que cualquier persona con interés pueda crearse su propia aplicación movil, ya sea para su empresa, para su casa o por otros interéses.

Para  crear una aplicación con app inventor hay que realizar tres pasos:

  • El diseño “estetico ” de la aplicación , en la que se seleccionan los componentes para su aplicación( botones,cajas de texto,imágenes,etc).
  • El editor de bloques  , donde se  escogen los bloques  lógico que  sean necesarios según la aplicación que tenga pensada de hacer.
  • Desplegar la app para su prueba en el terminal o en el emulador

Gracias al framework  App inventor, se pueden  crea  app moviles  sin conocimientos de programación  esplicitos pues  este hace la programación móvil sencilla y al alcance de cualquiera.

Casi cualquier tipo de aplicación se  puede crear con App Inventor (todo depende de las ganas y empeño que le pongas)  por ejemplo   puede crear una app android para su empresa o negocio   (App inventor es fenomenal para este tipo de aplicaciones)  y cuando este lista ,puede subirla  a Google Play como  con cualquier otro tipo de programación y ademas  obtener ingresos  si la pone  pago o incluye publicidad  usando los principales métodos de monetización como, Admob, leadbolt, mobpartner.

 

 

A continuación estos  son los principios de la programación  del MIT App Inventor  que vamos a tratar en este post:

1-Comportamiento de eventos

 ¿Cómo se programa el comportamiento evento de respuesta de una aplicación?Para aclararlo o se verán los siguientes ejemplos: 

  •  ¿Cómo convertir un botón rojo cuando un usuario hace clic en él?
  • ¿Cómo hablar cuando el usuario agita el teléfono?

2-Condicional (if) 

¿Cómo se programa una aplicación para tomar decisiones?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo iniciar y pausar un archivo de sonido cuando el usuario hace clic en un botón?
  • ¿Cómo se auto-responde a una “WHERE” texto de una persona en particular?

3-Incrementar un Valor:

¿Cómo añadir una a algo en la memoria de la computadora? Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se cuenta el número de veces que un botón se ha hecho clic?
  • ¿Cómo se cuenta atrás desde 10?

4-Dibujo:

¿Cómo dibujar formas e imágenes?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se crea un lienzo de dibujo?
  • ¿Cómo se dibuja un círculo en 10,10?
  • ¿Cómo se muestra una imagen en el centro del lienzo?

5-Variables :

¿Cuándo se necesita :definir una variable y cómo hacerlo?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se hace para que cada vez que el usuario hace clic en un círculo más grande se dibuja?
  • ¿Cómo se hace una bola para ir y venir?

6-Localizacion y Ubicación : 

¿Cómo sabes dónde estás?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se puede determinar la latitud, longitud y dirección de la calle?
  • ¿Cómo se determina lo lejos que están de otro lugar?

7-Procesamiento de la lista (por lotes) :

¿Cómo se hace algo para todos los elementos de una lista?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se envía un texto a una lista de tus amigos?
  • ¿Cómo añadir una lista de números?

8-Lista Transversal (dirigido por el usuario) :

¿Cómo paso a través de una lista basada en eventos iniciados por el usuario?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo crear un pase de diapositivas de modo que el usuario hace clic para ir a la siguiente imagen?
  • ¿Cómo agregar un botón anterior para hacer la presentación de diapositivas ir hacia atrás?
  • ¿Cómo se hace eso por lo que el pase de diapositivas es de nuevo al frente?

9-Agregar elementos a una lista :

¿Cómo se puede grabar información en una lista?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se puede grabar notas de entrada por el usuario?
  • ¿Cómo grabar los números de teléfono de los textos entrantes?

10-Persistencia :

¿Cómo grabar datos de forma constante?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se graba un mensaje de forma persistente-a salir un texto auto-respuesta?
  • ¿Cómo persistentemente grabar notas ingresadas por un usuario?

11-Actividad temporizado :

¿Cómo se puede repetir una acción, haciendo una pausa entre cada iteración?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se juega un sonido cada segundo?
  • ¿Cómo se mueve una nave espacial facilidad por la pantalla?

¿Cómo iniciar y detener una actividad programada?Para aclararlo o se verán los siguientes ejemplos: 

  • ¿Cómo iniciar y detener la reproducción repetida de un sonido?
  • ¿Cómo se inicia una nave espacial cuando el usuario habla, y lo detenga cuando el usuario agita el teléfono?

12-Listas temporizadas :

¿Cómo se procesa cada elemento de una lista, haciendo una pausa en el medio?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo se juega una lista de las notas musicales?
  • ¿Cómo se inscribe la palabra “código” usando lenguaje de señas americano?

13-Procedimientos :

¿Cómo y por qué debería definir un procedimiento?Para aclararlo o se verán los siguientes ejemplos:

  • ¿Cómo codificar un procedimiento para visualizar una lista?
  • ¿Cómo codificar un procedimiento para visualizar cualquier lista?
  • ¿Cómo codificar un procedimiento para visualizar cualquier lista en cualquier etiqueta?

1-EVENTOS

Cómo se programa el comportamiento evento de respuesta de una aplicación?

Piense en una aplicación como una máquina de respuesta a eventos. El usuario hace clic en un botón, la aplicación responde. Un texto entra, la aplicación envía una respuesta automática. Un platillo volante golpea un asteroide, que explota. Su trabajo como programador es programar dichos eventos-respuestas. En App Inventor, lo hace directamente  el código es esencialmente un conjunto de eventos-respuestas, de los bloques cuando-do. Echa un vistazo a las siguientes muestras:

Ejemplo 1. ¿Cómo convertir un botón rojo cuando el usuario hace clic en él?

OK, esto es una aplicación muy tonto, pero no nos llevará a empezar. La aplicación aparece y hay un botón gris. Cuando los toques de usuario (clics) el botón, los cambios de color del botón a rojo. El clic del botón, Button1.Click, es un acontecimiento, algo que le puede pasar a la aplicación. El oro al bloqueButton1.Click se denomina-controlador de eventos. Los bloques dentro de él son la respuesta al evento.conjunto significa cambiar algo, en este caso, cambie BackgroundColor del botón en rojo. Los bloques, en su conjunto, se especifica que cuando el usuario hace clic en el botón que debe ponerse en rojo

 

Ejemplo 2¿Cómo se dice “estoy temblando” cuando el usuario agita el teléfono?

 

Esta aplicación tiene dos componentes, una AccelerometerSensor y una TextToSpeech. Cuando el usuario se sacude el teléfono o la tableta, el AccelerometerSensor detecta el evento y el controlador de eventos cuando AccelerometerSensor1.Shaking se dispara. El componente TextToSpeech está llamada a llevar a cabo la respuesta de hablar las palabras “estoy temblando”.

 

2-BUCLES  

Condicionales: ¿Cómo se programa una aplicación para tomar decisiones?

Con App Inventor, se pueden programar controladores de eventos ( como una aplicación debe responder a algo así como el usuario hace clic en un botó)n. Pero a veces una aplicación no debe responder a un evento al mismo tiempo todos. Aquí es donde si los bloques, conocidos como “condicionales”, llegada a tierra permiten la aplicación para tomar decisiones y forman la base de la inteligencia artificial.

 

Ejemplo 1. ¿Cómo iniciar y pausar un archivo de sonido cuando el usuario hace clic en un botón?

Este comportamiento de la Tengo una aplicación Sueño ilustra la forma fundamental de que una aplicación toma decisiones. Hay un botón con la imagen de Martin Luther King en él. La acción tomada cuando se hace clic en el botón no siempre es el mismo. Si el archivo de sonido (el discurso de Martin Luther King) está jugando, debe ser pausado. Si no está jugando, debe ser iniciado. El bloque if-else se utiliza para ramificar basado en la situación. Se comprueba la propiedad isPlaying del componente Player.Si bien es cierto, detiene la voz. Si es falsa (lo demás), el discurso es (re) inicia.

 

Ejemplo 2. ¿Cómo se auto-responde a una “WHERE” texto de una persona en particular?

Si su hijo o amigo deja esta aplicación en ejecución, siempre se puede saber dónde están enviando una “WHERE” texto a ellos. Este código ilustra una compleja si-test, uno con una “y” cláusula, ya que debe probar que tanto el remitente es un número de teléfono particular y el texto enviado fue “WHERE”. Si ambos son verdaderos, un texto de respuesta automática y se envía de nuevo al número de teléfono.

 

 

 

 

3-VARIABLES

¿Cómo se puede incrementar una propiedad de variable o componente?

Propiedades de los componentes y variables se denominan células de memoria, algo así como las celdas de una hoja de cálculo. Vamos a usar este tipo de células de memoria para hacer cosas como mantener el marcador de un juego o grabar la ubicación de un ImageSprite.

A menudo, es necesario cambiar el valor almacenado en una celda de memoria. Su sencillo pensar en el establecimiento de la puntuación de un juego de 5, o algún otro número fijo, pero ¿cómo se establece la puntuación en relación a su valor actual, por ejemplo, cómo se realiza la programación de manera que la puntuación se convierte en uno más? La siguiente ejemplos demostrarán esta actividad fundamental deincrementar una variable.

Ejemplo 1. ¿Cómo se cuenta el número de veces que un botón se ha hecho clic?

En este juego muy tonto, las puntuaciones de los usuarios un punto haciendo clic en un botón. Cuando el botón etiquetado como “Marca un punto” se hace clic, el ScoreLabel (mostrando 0 arriba) cambia a 1. Si se vuelve a hacer clic, se cambia a 2, y así sucesivamente. Estos son los bloques para este comportamiento:

Los bloques pueden ser confusas, en un principio, pero la comprensión de ellos es una clave para entender cómo funciona la computación. En pocas palabras, los bloques pueden leerse como: “cuando se hace clic en el botón, cambiar ScoreLabel.Text a su valor anterior + 1

Pero vamos a examinar más de cerca los bloques para que realmente entienda lo que está pasando. “Set” significa “cambio”, por lo que los medios de bloque, de color verde oscuro a la izquierda, “cambiar el texto de la ScoreLabel”.

El bloque verde más claro con la etiqueta “ScoreLabel.Text” es un bloque de “obtener”. “Get” quiere decir que ir a buscar en una celda de memoria y ver lo que hay. La primera vez que se hace clic en el botón, el “get” devuelve el valor inital de 0, por lo que 0 +1 = 1 se establece en ScoreLabel.Text (y 1 aparece en la interfaz de usuario). La segunda vez que se hace clic en el botón, el valor actual de ScoreLabel.Text es 1, por lo que 1 +1 = 2 se coloca en ScoreLabel.Text.

Puede ayudar a darse cuenta de que los bloques son realmente ejecutados de derecha a izquierda. La aplicación evalúa primero la derecha del lado “+” de “conseguir” el valor actual en la etiqueta y añadir 1 a la misma. El de la izquierda es entonces realizado y el resultado de la “+” es “set” en la etiqueta.

 

 

Ejemplo 2. ¿Cómo se cuenta-atrás desde 10 y reproducir un sonido a 0.

Con la aplicación de cuenta regresiva, una etiqueta de muestra 10 para comenzar y luego comienza la cuenta atrás, 9,8,7 … hasta 0. Cuando se llega a 0, se reproduce un sonido. Estos son los bloques:LLa “cuando Clock.Timer” se activa periódicamente. La fila superior de bloques disminuyeCountLabel.Text -. El texto se ajusta a sí mismo menos 1 Así que la primera vez que los factores desencadenantes del temporizador, el texto se ajusta a 10-1 = 9, la segunda vez para 9-1 = 8, y así on.On cada iteración, la aplicación utiliza un bloque if para comprobar si la cuenta ha llegado a 0. Si es así, se reproduce el sonido y el temporizador de reloj está desactivado para detener la actividad.

 

4-GRAFICOS

¿Cómo se dibujan formas e imágenes en un lienzo?

 Ejemplo 1. ¿Cómo se crea un lienzo de dibujo?

El componente Canvas es un sub-panel dentro de su aplicación. Las lonas se utilizan para el dibujo y la animación – que su aplicación puede dibujar objetos, y le puede dar al usuario la capacidad de dibujar objetos.

Por lo general, usted quiere que su lienzo para llenar todo el ancho de la pantalla de la aplicación, por lo que establecer el ancho para llenar los Padres “, como en los bloques anteriores. Generalmente usted quiere tener otros componentes encima o por debajo, por lo que establece el Altura a un número fijo.

Una ubicación de un objeto en el lienzo se define con una X, Y valor en relación con la esquina superior izquierda del lienzo. X es la ubicación horizontal del objeto, siendo 0 la izquierda de las fronteras y X cada vez más grande como un objeto se mueve a de la derecha. Y es la posición vertical con 0 en el borde superior e Y cada vez más grande como un objeto se mueve hacia abajo.

Ejemplo 2. ¿Cómo se dibuja un círculo en 10,10?

Canvas tiene bloques de función para dibujar un círculo o una línea. El drawCircle tiene tres parámetros,x, y, y el radio. X es la ubicación horizontal, Y es la posición vertical, y r es el radio del círculo que se elaborará. Un valor x de 10 significa que el círculo se encuentra a 10 píxeles a la derecha del borde izquierdo del lienzo. A y-valor de 10 significa que el círculo se encuentra a 10 píxeles hacia abajo desde la parte superior del lienzo

Ejemplo 3. ¿Cómo se dibuja un círculo donde los toques de usuario

El evento Canvas.Touched se activa cuando los toques de usuario (clics) el lienzo. Tiene parámetros x e y que especifican la ubicación del contacto. El touchedSprite parámetro especifica si el contacto se produjo en una ImageSprite – no es importante para este comportamiento.Usted quiere dibujar el círculo en el lugar del contacto, de modo ratón sobre los parámetros x y y, agarrar obtener bloques para ellos, y conectarlos a las ranuras para x una y en el bloque drawCircle. Es un poco confuso porque los parámetros de evento Touched se nombran los mismos que los parámetros (slots) para la función drawCircle.


Ejemplo 4. ¿Cómo se mueve una imagen en el centro del lienzo en App Inventor 2?

Los bloques de la muestra localizar x ImageSprite1 en medio del lienzo con la x propiedades x Anchura y Altura. Tales referencias abstractas significan el código funcionará incluso si el lienzo cambia de tamaño.Como alternativa, puede colocar los números fijos en la X e Y de la MoveTo (de manera similar a cómo se utilizó 10,10 en el ejemplo anterior. ¿Sabes por qué medio se resta el ancho y la altura del sprite?Tenga en cuenta que no hay ningún bloque “DrawImage” como x drawCircle. En cambio, con el diseñador arrastra componentes ImageSprite x en un x lienzo y especificar el archivo de imagen (foto), que define su apariencia. No hay forma para crear dinámicamente sprites con los bloques, sólo se puede hacer de ellos (in) visible y localizarlos como en este ejemplo.

 

 

5-POSICIONAMIENTO

¿Cómo saber dónde estás?

El LocationSensor comunica con los satélites GPS y otros mecanismos para determinar la ubicación de su teléfono / tablet.

Ejemplo 1. ¿Cómo se puede mostrar su latitud, longitud y dirección?

El evento se desencadena LocationSensor.LocationChanged 1) cuando la aplicación se pone primero una lectura de los satélites GPS u otros mecanismos, y 2) cuando el teléfono o los cambios de ubicación de la tableta. Si usted está caminando alrededor, podría desencadenar muchas veces. Puedes controlar la frecuencia con LocationChanged se activa con las propiedades LocationSensor.TimeInterval yLocationSensor.DistanceInterval. El TimeInterval se establece en 60.000 ms, o 1 minuto, de manera predeterminada. Esto significa que LocationChanged sólo se activa de nuevo después de un minuto.En esta muestra, las lecturas de ubicación se muestran en las etiquetas. Latitud y longitud son los números, mientras que la propiedad currentAddress proporciona una dirección de calle de su ubicación actual. Al caminar alrededor, verá los números y cambio de dirección.

Ejemplo 2. ¿Cómo saber lo lejos que se está de un punto dado?

App Inventor no proporciona un bloque de “distancia” para calcular la distancia entre dos coordenadas GPS. Pero hay fórmulas matemáticas conocidas para aproximar una distancia tal entre dos puntos. La solución es crear su propio bloque – procedimiento – y enchufe en una de las fórmulas conocidas. La “distancia” procedimiento anterior se utiliza una fórmula de http://geokoder.com/distances . Una vez que tenga un procedimiento distancia, se puede llamar así, como en la fila inferior del controlador de eventosLocationChanged. Este ejemplo calcula la distancia desde su ubicación actual y el campus de la Universidad de San Francisco.

 

LISTAS

6-¿Cómo se hace algo para todos los elementos de una lista?

Listas de datos se encuentran en muchas de las aplicaciones. Cuando utiliza Facebook, por ejemplo, hay una lista de sus amigos, una lista de sus actualizaciones de estado, etc En su aplicación, usted puede realizar un seguimiento de sus amigos los números de teléfono, una lista de sus cuentas del pasado en un juego, o el número de millas que ejecutó cada día la semana pasada. Con casi cualquier software, es probable que haya listas de datos implicados.

App Inventor, como la mayoría de los idiomas, ofrece una manera de procesar los elementos de una lista, para realizar la misma operación en cada artículo. Con App Inventor, normalmente se utiliza una para cadabloque en la lista. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. ¿Cómo se envía un texto a una lista de tus amigos?

La lista phoneNumberList se define en la parte superior. Tiene datos “concretos” (por ejemplo, los tres números de teléfono ficticios). La mayoría de aplicaciones almacenan dinámica, los datos generados por los usuarios, pero para este ejemplo vamos a centrar en el procesamiento una vez que tenga una lista.Los bloques dentro de la de cada bloque se repiten para cada elemento de la lista phoneNumberListdado. En este caso, hay tres elementos, por lo que los tres bloques interiores se repitieron tres veces.Nueve bloques totales serán ejecutados (“ejecutado” es el término de la informática para la realización de la operación que los define en bloque. No se preocupe, nadie está siendo asesinado!). El texto “que le falta” será enviado a los tres números. La de cada uno en la lista se llama un “bucle”, porque la aplicación de bucles hasta la parte superior de la de cada uno después de ejecutar el bloque interior inferior. En la terminología de ciencias de la computación, decimos las iteraciones de aplicaciones a través de los artículos.El ítem parámetro definido en la de cada uno es un marcador de posición y siempre mantiene el elemento actual que se está procesando. La primera vez en el ciclo es “111-1111”. La segunda vez que a través de ella es “222-2222”, y la tercera vez que es “333-3333”. Así, todos los números se envían el mensaje.


 Ejemplo 2. ¿Cómo añadir una lista de números?

La lista de los números de este ejemplo es fijo, pero en general la lista sería de datos dinámicas, generadas por los usuarios, por ejemplo, en una aplicación de entrenamiento el usuario introduciría las millas que corrían cada día y los datos se almacenan en una lista.El para cada bloque en la lista se utiliza para recorrer los números. elemento es la variable de marcador de posición – posee el número actual cada vez que la fila de bloques en el que se ejecuta For cada uno. El primer elemento tiempo es 7, luego 3, luego 11, luego 5. El total variable se define para almacenar la suma en ejecución. En la primera iteración, total se establece en su valor anterior (0) más artículo, que es 7, por lo que se convierte en 0 7 = 7. En la segunda iteración, el total se establece en su valor anterior (7), además de elemento, que es 3, por lo que se convierte en 7 +3 = 10. Después de que el tercer total más iteración tiene 21 años y después de que el cuarto total de iteración es 26 y el foreach completa. Después de la de cada bucle, se muestra el total en una etiqueta (por lo que alguien va a ver los frutos del trabajo apps!).

 

 

 

7-Lista de usuarios de navegación: ¿Cómo paso a través de una lista de la información?

App Inventor proporciona una para cada bloque para procesar una lista de información de una sola vez. Pero lo que si usted tiene una aplicación, como una presentación de diapositivas, en la que el usuario controla el movimiento a través de la lista? Para programar este comportamiento, va a utilizar una variable índice para realizar un seguimiento de su posición en la lista. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. ¿Cómo se crea una presentación de diapositivas de modo que el usuario hace clic para ir a la siguiente imagen?

En este ejemplo, el usuario hace clic en un botón para ordenar a través de una presentación de diapositivas de fotos. Las fotos son en el pic1.jpg archivos multimedia, pic2.jpg y pic2.jpg, todos los cuales han sido cargados en la aplicación. El índice variable se define para realizar un seguimiento de la fotografía actual el usuario está viendo. Cuando el usuario hace clic en “Siguiente”, el índice se revisa para ver si el usuario ha ido demasiado lejos. Si el índice es menor que la longitud de la lista (3 en este caso), entonces el índice se incrementa y el siguiente archivo de imagen se coloca en Image1.Picture.Vamos a caminar a través de este ejemplo. Supongamos que pic1.jpg está mostrando para empezar.Cuando el usuario hace clic en “Siguiente”, el índice se revisa y es menor que la longitud de la lista (1 <3).Así índice se incrementa desde su valor inicial, 1, a 2, y se selecciona pic2.jpg y se muestra.La próxima vez que el usuario hace clic en “Siguiente”, el índice es del 2 por lo que sigue siendo inferior a 3, por lo que el índice se incrementa a 3 y el tercer cuadro, “pic3.jpg”, se muestra.Cuando “Next” se hace clic de nuevo, el índice es 3 por lo que el caso de prueba falla. Los bloques dentro del si no se ejecutan, así que no pasa nada. De hecho, el usuario puede seguir haciendo clic en “Siguiente” para siempre sin efecto.Una nota musical necesita tiempo para jugar.

Ejemplo 2. ¿Cómo agregar un botón anterior para hacer la presentación de diapositivas ir hacia atrás?

Esta muestra es similar a la “siguiente” código del botón anterior pero ahora los índices disminuciones variables y la presentación de diapositivas va hacia atrás. Los controles si-prueba si el índice es mayor que 1, porque si ya es 1, la primera imagen se muestra y no podemos ir más atrás.

Ejemplo 3. ¿Cómo se hace eso por lo que el pase de diapositivas es de nuevo al frente?

En este ejemplo, cuando el usuario hace clic en “Siguiente” y el último objeto ya está mostrando, el índice se vuelve a 1 y el primer elemento, “pic1.jpg”, se muestra de nuevo. Los bloques de conjunto Image1.Picture están fuera del bloque if-else, por lo que una imagen diferente siempre se muestra cuando “Next” se hace clic.

 

 

8-¿Cómo se puede grabar información en una lista?

Ejemplo 1. ¿Cómo se puede grabar notas de entrada por el usuario?

Este comportamiento ilustra los conceptos básicos de una toma de notas o Twitter como aplicación. En primer lugar, define una NoteList variable y inicializarlo al bloque de crear una lista vacía. Esto marca elNoteList variable como una lista de lo que puede poner los elementos en ella.Cuando el usuario entra en una nota en el NoteTextBox y hace clic en “Enviar”, agregar elementos a la lista que se llama para añadir la entrada del usuario hasta el final de la lista. NoteList se fija entonces enListLabel.Text para mostrarla al usuario, y la entrada del usuario en NoteTextBox se queda en blanco para prepararlo para la siguiente entrada.Nota: estos datos en esta muestra no es persistente, es decir, las notas introducidas por el usuario sólo se grabarán para la ejecución actual de la aplicación. Si ha detenido la aplicación y volver a abrirla, la lista de notas estaría vacía. Para aprender cómo grabar datos continuamente, consulte estas notas

Ejemplo 2. ¿Cómo se puede grabar los números de teléfono de mensajes SMS entrantes y luego llamar a uno al azar para decirles que han ganado un premio?

Esta aplicación es ideal para los concursos. Usted le pide a su audiencia en un texto que, a continuación, hacer clic en un botón para elegir un ganador y suena el teléfono de los ganadores!En primer lugar, definir un incomingTexts variables e inicializar al bloque de crear una lista vacía. Esto marca la variable como una lista para que pueda poner los artículos en ella.Cuando un texto se presenta en, Texting.MessageReceived se dispara. La aplicación comprueba en primer lugar para asegurarse de que el número no está ya en la lista. Si no lo es, se añade el número de la lista.Cuando esté listo, el usuario puede hacer clic en el botón PickWinnerButton.Click. En este controlador de eventos, elegir un artículo al azar está llamada a tomar un afortunado ganador y un componentePhoneCall se utiliza para llamar al número.

9-PERSISTENCIA

¿Cómo grabar datos de forma constante?

Al ingresar información en su página de Facebook o de otra aplicación, y que la información se guarda por lo que es allí la próxima vez que usted visita, se trata de datos persistentes. Lo contrario – los datos que “muere” cuando se cierra la aplicación – se llama datos transitorios. Los datos persistentes se almacenan en un sistema de base de datos o archivo, y no sólo en la memoria a corto plazo de la aplicación. App Inventor proporciona el componente TinyDB para el almacenamiento de datos en el teléfono o el almacenamiento persistente de la tableta. Echa un vistazo a estos ejemplos del uso de TinyDB para almacenar datos de forma constante:

Ejemplo 1. ¿Cómo se graba un mensaje de forma persistente-de salir para un SMS de texto auto-respuesta?

Esta muestra es de una aplicación “contestador texto máquina” que le permite grabar un mensaje para ser enviado en respuesta automática a los textos enviados a su teléfono. Cuando el usuario introduce un mensaje, hay que recordar constantemente lo que el usuario no tenga que escribirla de nuevo cuando la aplicación se cierra y re-lanzado (a menos que el usuario desea cambiar el mensaje de bienvenida).Cuando el usuario introduce un mensaje nuevo y haga clic en “Enviar”, el mensaje que se escriba se copia de OutgoingMessageTextBox en el OutgoingMessageLabel, que muestra el mensaje actual.Entonces TinyDB.StoreValue está llamado a recordar la entrada persistentemente – para grabar el mensaje que acaba de introducir en la base de datos. Los nombres de las etiquetas “mensaje” de la entrada en la base de datos y el valor almacenado es lo que introduce el usuario. La última fila de bloques dentro SubmitButton.Click sólo en blanco el OutgoingMessageTextBox lo que está listo para una nueva entrada.El almacenamiento de los datos es sólo parte de la ecuación – también es necesario para recuperar los datos, para llevarlo de la base de datos en la aplicación. En esta aplicación, los datos se recuperan en caso Screen.Initialize, que se activa cuando se abre la aplicación. La llamada TinyDB.GetValue pide la base de datos para devolver los datos con etiqueta “mensaje”. Si el usuario ha enviado algo que antes, se devolverá la entrada. Si no hay nada aún en la base de datos, TinyDB.GetValue devuelve el texto envalueIfNotThere (un mensaje por defecto).

Ejemplo 2. ¿Cómo se pueden  grabar notas introducidas por el usuario?

El usuario introduce una nota y haga clic en “Enviar”. En SubmitButton.Click, el elemento se agrega a la NoteList variable y entonces la lista, en su conjunto, se almacena en la base de datos con las “notas” de la etiqueta. La nueva lista se muestra en el cuadro de texto ListLabel y se queda en blanco.Cuando la aplicación se cierra y vuelve a abrir sus puertas, Screen.Initialize se dispara. TinyDB.GetValuese llama para recuperar la lista previamente almacenada en la base de datos. El resultado se coloca en la variable NoteList. Si no hay notas en la base de datos, por ejemplo, la primera vez que se utiliza la aplicación, a continuación, devuelve el valor TinyDB.GetValue valueIfTagNotThere, que se especifica como una lista vacía.

Información relacionada

Para estas muestras, los datos se almacenan directamente en el dispositivo por lo que es “local” en el dispositivo y en realidad para un solo usuario (por ejemplo, la toma de notas aplicación es para notas privadas). Cuando los datos está destinado a ser compartido entre múltiples dispositivos y usuarios, se requiere una base de datos de web.

Las muestras sólo proporcionan visualización de la lista rudimentaria – las listas se vierten en una etiqueta y por defecto que aparece en la forma: (item1 elemento2).

 

 

10-Actividad Programada

¿Cómo repetir una acción, haciendo una pausa entre cada iteración?

¿Cómo se programa el tiempo? ¿Cómo se programa la animación? Con muchos lenguajes de programación, conceptos como animación son empujados hacia atrás en el plan de estudios – que no podría llegar hasta un año o dos de los cursos. Con el enfoque basado en eventos de App Inventor, se puede explorar la actividad programada y la animación como un principiante. El componente de reloj de alto nivel sirve como un despertador, y utiliza su evento Timer para desencadenar la actividad programada. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. ¿Cómo se reproduce un sonido cada segundo?

El evento Clock.Timer cuando se activa repetidamente. Piense en ello como un reloj despertador. La propiedad Clock.TimerInterval, determina con qué frecuencia se reproducirá el sonido. Por defecto es 1000 milisegundos (1 segundo), así que si no lo cambia el sonido por encima jugará cada segundo.Puede establecer esta propiedad en el diseñador o con bloques.

Ejemplo 2.  ¿Cómo se puede reproducir un sonido cada cinco segundos en lugar de cada segundo? (¿Cómo se mueve una nave espacial facilidad por la pantalla?)

X de la nave espacial de coordenadas define su ubicación horizontal. En cada evento de temporizador, la coordenada X se incrementa y la nave espacial parece más a la derecha. Si la propiedadClock.TimerInterval se establece en el valor predeterminado de 1000 ms, entonces el barco se moverá cada segundo, un movimiento muy agitado. Normalmente, para este tipo de animación, deberá definir el intervalo del temporizador a algo así como 40 ms.Pregunta: Una “imagen en movimiento” es en realidad una secuencia de imágenes mostradas muy rápido. La velocidad de fotogramas de una imagen en movimiento es el número de imágenes (frames) se muestra cada segundo. Si establece el intervalo del temporizador de la nave espacial de 40 m, ¿cuál será la velocidad de fotogramas para su “película”? ¿Cuál es la velocidad de cuadro típico de una película que se ve en el teatro? respuesta


Nota: para el movimiento de sprites, puede utilizar el reloj interno del sprite en lugar de un componente de reloj separada (ver detalles)

¿Cómo iniciar y detener una animación?

Así como usted puede dar vuelta a un reloj de alarma y se apaga, puede activar el temporizador de la componente de reloj y se apaga. Echa un vistazo a los siguientes ejemplos:

Ejemplo 1. Cuando el usuario hace clic en un botón de inicio, comience a reproducir un sonido cada segundo. Al hacer clic en un botón de parada, pare la reproducción del sonido.

El reloj tiene una propiedad Clock.TimerEnabled. Cuando es verdadera, la alarma del reloj está en lo que el temporizador se activará. Cuando Clock.TimerEnabled se establece en false el cronómetro está inactivo.

Cuando el usuario hace clic en el botón de inicio, TimerEnabled se establece en true para desbloquear la situación. Un segundo más tarde, y cada segundo después, el evento cuando Clock.Timer disparará y el sonido se reproducirá. Cuando el usuario hace clic en “Stop”, el temporizador se desactiva y el sonido deja de reproducirse.

Ejemplo 2. Cuando el usuario habla, empezar a mover la nave espacial.Cuando el usuario se sacude el teléfono, detener la nave se mueva.

Usted necesita dos componentes adicionales, un SpeechRecognizer que puede reconocer cuando el usuario está hablando, y un AccelerometerSensor que detecta cuando el dispositivo está siendo sacudió.El controlador de eventos Screen.Initialize se activa cuando se inicia la aplicación. El bloqueSpeechRecognizer.GetText abre el reconocedor de voz por lo que está esperando a que el usuario diga algo. Cuando el usuario habla, se activa el controlador de eventos SpeechRecognizer.AfterGettingText.Aquí, usted establece Clock.TimerEnabled en true para el temporizador reloj comenzará el desencadenamiento y el sprite comenzará a moverse. Cuando el usuario sacude el teléfono,AccelerometerSensor.Shaking se activa, el temporizador se desactiva para el sprite se detiene, y laSpeechRecognizer.GetText se llama a la espera de la próxima vez que el usuario habla.1. ¿Cómo se puede reproducir un sonido cada cinco segundos en lugar de cada segundo?

NOTA  :La propiedad Clock.TimerInterval determina la frecuencia desencadena el evento Clock.Timer. De forma predeterminada, el intervalo del temporizador se establece en 1.000 ms, o 1 segundo. Si lo establece en 5000, el evento Clock.Timer activará cada 5 segundos.

11-PROCEDIMIENTOS

 

¿Cómo y por qué debería definir un procedimiento?

Un procedimiento es una secuencia con nombre de instrucciones (bloques). En la vida real, cuando le digo a mi hijo a “cepillarse los dientes”, lo digo en serio para él para llevar a cabo un montón de pasos detallados, como el acaparamiento de su cepillo de dientes, abrir la pasta de dientes, poniéndolo sobre el cepillo de dientes, etc “cepillarse los dientes” es un procedimiento, un nombre para una secuencia de instrucciones. En App Inventor, puede definir un procedimiento, colocar bloques en él, y luego se puede llamar desde cualquier parte de la aplicación.

Considere el código a la derecha. Ambos controladores de eventos tienen código para mostrar una lista.Cuando un usuario envía una nueva entrada (cuando SubmitButton.Click), el elemento se agrega a la lista y la lista se muestra. Cuando se inicia la aplicación (cuando Screen.Initialize), los datos se recuperan de la base de datos en la lista, y se muestra la lista. Los bloques para mostrar una lista son los mismos en los dos controladores de eventos.

Este código está maduro para la refactorización. Refactoring significa modificar el código para que sea más legible y fácil de mantener, desde la perspectiva de un programador – refactorización no cambia el comportamiento de la aplicación en todos.

Extracción de código duplicado es una forma común de refactorizar. La idea básica es que el software cambia mucho: los insectos se encuentran que tienen que ser fijo, especificaciones de cómo el software se debe comportar el cambio, y el código, sobre todo un buen código, a menudo reutilizados. Cuando se realizan cambios en el software, usted no quiere tener que encontrar y también cambiar un montón de “dependencias”, por ejemplo, otro código que hace lo mismo. Es mejor tener código que hace una cosa en particular en un lugar, un procedimiento, y llame a ese procedimiento de todos los lugares que más lo necesitan. Entonces, si el procedimiento tiene que ser cambiado, se cambia en un solo lugar.

En los bloques de la derecha, el código para mostrar una lista aparece en dos controladores de eventos.Podemos refactorizar definiendo un DisplayList procedimiento, moviendo los bloques comunes en él, a continuación, llamarlo desde los dos controladores de eventos:

Ejemplo 1. ¿Cómo se define un procedimiento que muestra los elementos de una lista?

El código para mostrar la lista se encuentra ahora en el procedimiento DisplayList, y ambosSubmitButton.Click y Screen1.Initialize llamar al procedimiento. El bloqueo de llamadas representa todos los bloques dentro de la definición del procedimiento. Llamar a un procedimiento significa saltar en los bloques dentro del procedimiento y ejecutarlas. Una vez que se ejecutan todos los bloques, el control del programa retrocede al bloque por debajo de la llamada. Cuando se hace clic en el SubmitButton, agregar elementos a la lista se llama y luego se hace la llamada a DisplayList. El control del programa salta al procedimiento donde ListLabel.Text se establece en la cadena vacía y la de cada bloque se ejecuta.Cuando el de cada uno termina, el control del programa retrocede hasta debajo de la llamada DisplayListdentro del controlador de eventos cuando SubmitButton.Click – TextBox1.Text se establece en la cadena vacía y TinyDB.StoreValue se llama.El comportamiento, desde la perspectiva del usuario es el mismo, pero el código es mejor desde la perspectiva de un programador en términos de mantenimiento. Con este código refactorizado, si se encuentra un error en el código de visualización de la lista, o si se decide la lista se debe mostrar de una manera diferente (por ejemplo, las comas en entre elementos en lugar de nuevas líneas), el código sólo tiene que ser cambiado en un solo lugar.El diseño de su aplicación con los procedimientos del ejemplo anterior refactors código existente. A medida que se familiarice con los procedimientos, usted comenzará a incluirlos desde el principio de su diseño process.You ‘ll empezar a pensar en términos de una arquitectura de software más grande que consta de controladores de eventos, los procedimientos y las llamadas entre ellos. Como usted está diseñando una aplicación, antes de arrastrar en un solo bloque, usted pensará de los bloques de construcción – los procedimientos – que usted necesita.

Ejemplo 2. ¿Cómo se define un procedimiento que puede mostrar cualquier lista?

Un parámetro es un procedimiento de información necesita para hacer su trabajo. Se define parámetros para un procedimiento de modo que se puede reutilizar más general. Esta versión de DisplayList se le ha dado una lista de parámetros de modo que se puede utilizar para mostrar cualquier lista enviada a él. En este caso, el NoteList variable se envía como parámetro, pero usted podría llamarlo de algún otro lugar en su aplicación con una lista diferente. Tenga en cuenta que el procedimiento DisplayList original específico para el NoteList variables – no se podía utilizar para mostrar otras listas.Hay una cuestión más con este procedimiento que hace que sea menos que óptimo para su reutilización.Este procedimiento muestra la lista que lo envió en una etiqueta específica, ListLabel. Si su aplicación tiene varias listas y etiquetas, usted quiere que su procedimiento DisplayList para trabajar de manera más general. Los bloques siguientes muestran cómo hacerlo:

Ejemplo 3. ¿Cómo se define un procedimiento que ayuda a mostrar cualquier lista en cualquier etiqueta?

En lugar de realidad que muestra una lista, el procedimiento hace el trabajo de conversión de una variable de lista en texto que se puede poner en cualquier etiqueta. El procedimiento es genérico – que toma cualquier lista y devuelve el texto, y no se refiere a ninguno de los componentes específicos. Cualquier código que llama a este procedimiento, por ejemplo, Screen1.Initialize, proporcionará la lista específica como un parámetro para listToText, y colocará el texto resultante en una etiqueta específica.

 

 

Fuente  aqui

Desarrollo rápido de aplicaciones moviles


Introducción a MIT App Inventor 2

App Inventor es una herramienta basada en la nube creada por el MIT  para la creación rápida de apliaciones móviles en  Android , lo que significa que usted puede construir aplicaciones directamente en su navegador web  para su dispositivo Android sin tener que escribir una sola linea de código en Java .

El sitio web  de MIT  ofrece todo el apoyo que necesitará a medida que aprenda cómo construir sus propias aplicaciones. El software de App Inventor, o “servicio” es aai2.appinventor.mit.edu .

Instrucciones de instalación: 

Puede configurar la aplicación Inventor y empezar a crear aplicaciones en cuestión de minutos. El Diseñador y Editor de bloques se ejecutan ahora por completo en el navegador (también conocido como la nube) . Para ver su aplicación en un dispositivo mientras lo construye (también llamada “Testing en vivo”), tendrá que seguir los siguientes pasos :

Usted tiene tres opciones para configurar las pruebas en vivo, mientras se construye aplicaciones:

Opción uno – RECOMENDADO
Construir aplicaciones con un dispositivo Android y conexión WiFi (de preferencia):Instrucciones

Si está utilizando un dispositivo Android y tiene una conexión inalámbrica a Internet, usted puede comenzar la creación de aplicaciones sin necesidad de descargar ningún software en su ordenador. Usted tendrá que instalar la aplicación Companion App Inventor para su dispositivo. Elij Esta opción se recomienda encarecidamente

Sin duda si  usted tiene una computadora, un dispositivo Android, y una conexión Wi-Fi, esta es la manera más fácil de probar sus aplicaciones.

Opción dos
¿No tienes un dispositivo Android? Utilice el emulador: Instrucciones

Si usted no tiene un dispositivo Android, usted tendrá que instalar el software en su ordenador para que pueda utilizar el emulador de Android en la pantalla. Elija la opción dos abajo.Si usted no tiene un teléfono Android o tableta a mano, puede seguir utilizando la aplicación Inventor. Tener una clase de 30 alumnos? Haga que trabajen principalmente en emuladores y compartir unos pocos dispositivos.

Tercera opción
No WiFi? Construir aplicaciones con un dispositivo Android y Cable USB:Instrucciones

Si usted no tiene una conexión inalámbrica a Internet, usted tendrá que instalar el software en su computadora de modo que usted puede conectar a su dispositivo Android a través de USB. Elija la opción de tres a continuación. La opción de conexión USB puede ser complicado, especialmente en Windows Algunos servidores de seguridad dentro de las escuelas y las organizaciones no permiten el tipo de conexión Wi-Fi es necesario. Si WiFi no funciona para usted, trate de USB.


Requisitos del sistema

  Nota: Internet Explorer no es soportado todavía.  Recomendamos Chrome o Firefox.

Ordenador y el sistema operativo

  • Macintosh (con procesador Intel): Mac OS X 10.5 o superior
  • De Windows: Windows XP, Windows Vista, Windows 7
  • GNU / Linux: Ubuntu 8 o superior, Debian 5 o superior

Navegador

  • Mozilla Firefox 3.6 o superior
  • Nota: Si está utilizando Firefox con la extensión NoScript, usted necesita dar vuelta a la extensión fuera. Ver la nota en la página de solución de problemas .
  • Apple Safari 5.0 o superior
  • Google Chrome 4.0 o superior
  • Microsoft Internet Explorer no es soportado

Teléfono o la tableta (o utilizar el emulador en pantalla)

  • Sistema operativo Android 2.3 (“Gingerbread”) o superior

 

 

Fuente aqui