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

Emular un Navegador desde App Inventor


 App Inventor tiene un componente llamado  WebViewer ,por  lo que podemos cargar una página web / página web en una aplicación utilizando  el componente   WebViewer  . Para ello, simplemente podemos arrastrar el  WebViewer  componente para  Screen1  ventana y establecer el  HomeUrl  propiedad del  WebViewer  a la página web que queremos ver cuando se inicia la aplicación .
Note que la inclusión de un protocolo de red tales como http o https es importante, de lo contrario, la página web no se cargará. Si intenta http://www.google.com , no va a funcionar, pero si http://www.google.com funcionará. Para nuestra aplicación de ejemplo, vamos a tener un cuadro de texto donde el usuario puede especificar una dirección URL y pulse el botón Ir a cargar la página web. También tendremos los botones anterior y siguiente para navegar por páginas. Así es como nuestra aplicación se vería:
    Podemos establecer el  HomeUrl  ya sea en la ventana del visor / diseñador o en el editor de bloques. Si ha echado un vistazo a la instantánea cuadras más abajo, hemos establecido la  HomeUrl  en el editor de bloques debajo  Screen1.Initialize  evento. Allí, también fijamos los botones anterior y siguiente  Habilitado  propiedad a  falso . Cuando golpea un usuario en el botón Go, primero revisamos si la dirección URL en el cuadro de texto contiene  http://  o  https:// , si lo hace, simplemente cargar la página web; si no lo hace, añadimos  http://  al principio de la URL y carga especificada. Dado que hemos sido capaces de cargar una página web, hemos creado el botón anterior  Habilitado  propiedad en true. Tenga en cuenta que si el cuadro de texto está vacío y el usuario pulsa Go, el espectador intentará cargar http:// que obviamente no es válida. Siempre se puede comprobar si el cuadro de texto está vacío. Si está vacío, no cargue nada. Nosotros no lo hicimos aquí porque queremos ver el comportamiento por defecto cuando una URL no es válida.
Bloques frescos Visor Web
    Cuando se presiona el botón anterior, hacemos posible el botón siguiente ya hay una página que podemos esperar. También comprobamos si otras páginas que pueden volver a utilizando  CanGoBack  procedimiento de  WebViewer  componente. Nosotros hacemos todo lo contrario cuando se pulsa el botón siguiente.
Puede descargar el código  fuente de esta aplicación  CoolWebViewer.aia  desde   el link de  Descargas  página y probarlo  por si mismo.

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 &.

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