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

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