|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 WAMP - PHP - MySQL
  Estación meteorológica Cosas de Windows Webs interesantes Arduino
   AutoIt (Programación) Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  Teleco - Emisora de A.M. Visual Basic Translate:
Búsqueda en este sitio:


Nuevo concurso para España, Argentina, Brasil, Chile, Colombia, Ecuador, México, Perú y Portugal.

App inventor 2 en español
Cómo programar los teléfonos móviles con Android
mediante App inventor 2 - Juan Antonio Villalpando

-- Tutorial de iniciación de App Inventor 2 en español --

Volver al índice del tutorial

____________________________

Almacenamiento


34.- Guardar y cargar archivos. Archivo.

p34_archivo.aia

- Podemos guardar textos en un archivo y más tarde recuperarlos. Con el control Archivo solo se puede guardar texto plano.

- Si el nombre del archivo es ejemplo.txt y estamos en modo de depuración con el MIT AI2 Companion, se guardará en la SdCard, concretamente en Appinventor/data/ejemplo.txt,
es decir en: /mnt/sdcard/Appinventor/data/ejemplo.txt

Probar también file:///mnt/sdcard/AppInventor/assets/ejemplo.txt

- Si el nombre del archivo es ejemplo.txt y la aplicación.apk está instalada, se guardará en la SdCard, concretamente en la misma carpeta donde esté la aplicación. Esto es complicado de ver con el Explorador de archivos del Android. La ventaja, que el usuario tendrá dificultad para copiarlo, digamos que está algo oculto.

- Si el nombre del archivo comienza por / y la aplicación.apk está instalada, es decir /ejemplo.txt, se guardará en la raíz de la SdCard, concretamente en /mnt/sdcard/ejemplo.txt. Para facilitar nuestro estudio guardemos los archivos con la barra / delante, esto es /ejemplo.txt

Puedes comprobar que el archivo se ha guardado en ese lugar mediante un Gestor de Archivos, File Manager, que tengas instalado en tu Android.

--------------------------------------------------------

En resumen, si estás emulando, depurando la aplicación con MIT AI2 Companion, debemos indicar esta dirección de archivo:

file:///mnt/sdcard/AppInventor/assets/ejemplo.txt

Si ya tienes la aplicación preparada para instalarla definitivamente y has "Generado" el código QR o el archivo .apk, anteriormente debes cambiar la dirección a:

file:///android_asset/ejemplo.txt

------------------------------------------------------

La carpeta assets, es una carpeta base que tiene cada aplicación de Android donde se pueden guardar ciertos tipos de archivos: .txt, .htm, mp3, wav, gif, png, jpg.

En la carpeta assets se puede guardar archivos .pdf, pero puedo no se pueden leer directamente desde esa carpeta, antes hay que copiarlos a otra carpeta.

-----------------------------------------------------

A lo largo de este tutorial, verás otras direcciones donde se encuentran los archivos. Aquí pongo un listado de direcciones donde suelen estar:

file:///mnt/sdcard/AppInventor/assets/ejemplo.txt

file:///android_asset/ejemplo.txt

file:///mnt/sdcard/ejemplo.txt

file:///storage/emulated/0/AppInventor/assets/ejemplo.txt

file:///mnt/sdcard/mi_carpeta/ejemplo.txt

/ejemplo.txt

//ejemplo.txt

_________________
- Diseño.

_________________
- Bloques
.

34B.- Ahora vamos a leer el archivo.

p34B_archivo_leer.aia

Ampliamos el Proyecto anterior.

Debemos poner el mismo nombre que el archivo escrito anteriormente.

Obtendremos el contenido del archivo en la Etiqueta5.

_________________
- Diseño.

_________________
- Bloques.

- Notas:
- AñadirAArchivo se utiliza para agregar más textos al final de un archivo.
- El nombre del archivo no es necesario que lleve extensión, es decir podemos escribir el nombre de un archivo como: ejemplo, sin embargo es mejor terminarlo en .txt, ejemplo.txt, ya que de otra manera cuando se intente abrir es posible que intente arrancar con un lector de pdf y se produzca un error.

- El elemento Archivo lo puso la MIT en mayo de 2014 (nb133), hasta ese momento tenía cierta complicación guardar archivos.

¿Cómo podríamos editar un texto ya creado de varias líneas?

- llamamos a Archivo1 para LeerDesde miarchivo, y cuando Archivo1 ObtuvoTexto, lo pone en un CampoDeTexto (debe tener activada la Propiedad Multilínea en el Diseño).
Una vez editado el texto, llamamos a Archivo1 para GuardarArchivo miarchivo con el texto del CampoDeTexto.

_______________________________
34C.- Leemos un archivo de imagen y de texto plano.

p34C_archivo_ver.aia

- Voy a aclarar un poco la visualización de un archivo de imagen y de texto plano.

- El estudio de esta aplicación trata de ver cómo situamos un archivo de imagen y otro de texto cuando la aplicación está instalada.

- Baja y consulta la aplicación en App inventor y luego Genera el Código QR para el archivo .apk y lo instalas en tu móvil. Es importante que lo estudies cuando está instalado.

- Vamos a visualizar esta imagen:


puertoreal.gif

- y este archivo de texto: acueducto.txt

- Importante: El archivo acueducto.txt lo he escrito con el Bloc de notas. Lo guardé en Codificación: UTF-8

Si lo guardo con otra codificación, los acentos y las eñes saldrán como unos cuadraditos negros.

_________________
- Diseño.

 

- Botón1, Imagen1, Etiqueta1, Archivo1
- Subimos: puertoreal.gif y acueducto.txt

- En las Propiedades Screen1 marca Enrollable.

_________________
- Bloques.

 

 

Observa que el archivo de imagen: puertoreal.gif, está escrito directamente.

En cambio el de texto está escrito con dos barras al comienzo

//acueducto.txt

 

_______________________________
35.- TinyBD (I)

p35_tinybd_simple.aia


TinyDB, es una base de datos que se encuentra en nuestro mismo móvil.

- Ejemplo sencillo de TinyDB.

Se trata de guardar el nombre de una persona y su edad.
Escribimos en nombre de una persona, su edad y pulsamos el Botón Guardar.
Cuando queremos obtener su edad escribiremos su nombre y pulsaremos el Botón Ver.

El Botón Borrar, borra todos los datos visibles en la pantalla.

etiqueta
Nombre
valor
Edad
Juan
22
Pedro
33
Luis
44

_________________
- Diseño.

_________________
- Bloques.

_______________________________
36.- TinyDB con Lista (II)

p36_tinyBD_lista.aia

- Ejemplo más complicado de TinyDB.

Hemos visto en el ejemplo anterior que podemos relacionar una etiqueta con un valor en una TinyDB, de manera que guardamos una etiqueta con su respectivo valor.

Obtenemos el valor enviando el nombre de la etiqueta.

En este caso cada valor solo contiene un elemento, pero vamos a suponer que queremos guardar el Apellido, Edad y Población de una persona (Nombre), en principio no podemos hacerlo porque cada etiqueta solo contiene un valor. Pero mediante una Lista podemos hacer que el valor tenga varios elementos, los elementos de la tabla.

etiqueta
Nombre
valor
Apellido, Edad, Población
Juan
Perez 22 Cadiz
Pedro
Sanchez 33 Sevilla
Luis
Rodriguez 44 Jerez

 

Creamos una Lista llamada persona.
Cada vez que pulsamos el Botón1, borramos la Lista. Es una lista auxiliar, la utilizamos para introducir los tres valores en cada Nombre. Pero no es una lista acumulativa que va guardando todos los nombres, por eso se borra a la llegada de cada nuevo Nombre.

Introducimos los datos en la Lista persona.

Guardamos en la TinydB la etiqueta y su correspondiente valor que es la Lista persona.

Para verlos.

Escribimos en el CampoDeTexto1, el Nombre que queremos consultar, este Nombre será la etiqueta.

Obtenemos el valor indicado en la etiqueta, que serán el Apellido, la Edad y la Población y los insertamos en la Lista.

Seleccionamos los distintos elementos de la Lista según su índice.

_________________
- Diseño.

_________________
- Bloques.

Observamos que podemos obtener el valor de cada elemento de la Lista personas mediante la variable índice.

_________________________________________
Otro ejemplo parecido al anterior en...

69C .- TinyBD con varios datos mediante lista. Básico.

_______________________________
37.- TinyDB (III)

p37_tinybd_visor_de_lista.aia

Ejemplo más dificultoso de TinyDB. Solo como información.

_________________
- Diseño.

- Creamos una tabla vacía llamada lugares.

- Cuando pulsamos el Botón1, podemos conmutar entre obtener las coordenadas por GPS o escribirlas manualmente. Pulsaremos para escribirlas manualmente.

- En caso que queramos obtenerlas por GPS, se activa el GPS y pone la longitud y latitud en los casilleros.

_________________
- Bloques.

- Cuando pulsamos el Botón2, se comprueba si el nombre del lugar ya existe en la lista lugares.
- En caso que exista, lo borra (LimpiarEtiqueta) de la Base de Datos TinyDB y de la lista lugares.

- Exista o no, almacena el elemento escrito en el CampoDeTexto1 en una etiqueta de la TinyDB y los casilleros de longitud y latitud, los mete en otra lista de dos elementos y los guarda como valor en la TinyDB.

Es decir, guarda la etiqueta que sería el nombre de la localidad y dos elementos mediante una lista, que sería la longitud y latitud. No confundir esta lista de dos elementos con la lista lugares, son distintas.

localidad
(Etiqueta del TinyDB)
CampoDeTexto1
longitud, latitud
Se introduce los dos en una lista y se almacenan.
CampoDeTexto2 y CampoDeTexto3
Grazalema -6,16; 35,21
Jerez -6,15; 35,24
Puerto Real -6,18; 36,52

- Además añade a la lista lugares, el nombre del lugar, es decir CampoDeTexto1.
- También introduce en el VisorDeLista todos los elementos de la lista lugares.

- Cuando pulsamos el VisorDeLista, nos saldrán los elementos que se han guardado anteriormente en
VisorDeLista.Elementos = lugares

- Cuando pulsamos un elemento del VisorDeLista, se toma de la TinyDB el valor del elemento seleccionado, este valor, a su vez, contiene dos partes, el 1 que sería la longitud y el dos que sería la latitud.

- Se escriben en sus CampoDeTexto correspondientes.

Es decir, la etiqueta es el nombre del elemento seleccionado y valor es el valor de ese elemento, que a su vez contiene dos términos, ya que se introdujeron mediante una lista de dos partes.

- Una vez más no confundir la lista lugares, que contiene el nombre de los lugares solamente y la otra lista que no tiene nombre que contiene las dos coordenadas en cada uno de sus elementos.

- Cada vez que se inicia la pantalla, se toma los tag de la TinyDB y se introduce en la lista lugares.
Los elemenos de la lista lugares, se introducen en el ListPicker.

- El Botón3 lo utilizamos para Limpiar Toda la base de datos.

- El último elemento introducido saldrá el último en el VisorDeLista.

_______________________________
38.- MiniWebDB.

p38_miniwebbd_simple.aia

MiniWebDB, es una base de datos que está en Internet.

Con MiniTinyDB podemos guardar la información en la web.

App Inventor ofrece un servicio de ayuda al aprendizaje de MiniTinyDB: http://appinvtinywebdb.appspot.com/
de manera que se pueden subir hasta 1000 valores a su web. (otra) (otra más) (otra)


Estos valores son compartidos por todos los usuarios de App Inventor, de manera que cuando se agoten esos 1000 valores se sobreescribirán los nuevos valores que lleguen.

Es posible crear una base de datos personalizada por el programador con su propio servidor, el algo más complicado como podemos ver en este tutorial... http://appinventor.mit.edu/explore/ai2/custom-tinywebdb.html

Es este ejemplo sencillo vamos a introducir datos de Estados y sus respectivas Capitales. Lo guardamos.

Y luego escribiendo el nombre del Estado y pulsando el Botón Ver, podremos ver su Capital.

_________________
- Diseño
.

Importante:

En la Propiedad URLDelServicio de la MiniWebDB1, debemos estableces el sitio web donde se guardará la información, en nuestro ejemplo:
http://appinvtinywebdb.appspot.com

_________________
- Bloques.

En la base de datos se almacena una etiqueta y su respectivo valor, por ejemplo:

etiqueta
Estado
valor
Capital
Espana
Madrid
Portugal
Lisboa
Italia
Roma

_______________________________
39.- MiniTinyBD con varios campos.

p39_miniwebbd_lista.aia

- En el caso anterior introducíamos una etiqueta y su respectivo valor. Pero en otros casos queremos almacenar una etiqueta que contenga varios valores, por ejemplo:

etiqueta
Nombre
valor
Apellido, Edad, Población
Juan
Perez 22 Cadiz
Pedro
Sanchez 33 Sevilla
Luis
Rodriguez 44 Jerez

Para hacer esto creamos una lista llamada personas.
Cada vez que se guarde una persona, se borrará la lista, se pondrá en cada elemento de la lista uno de los datos de Apellido, Edad y Población.

Y debería guardarse el Nombre como etiqueta y la Lista persona como valor de tres elementos, como indica la tabla que he puesto arriba.

Pero resulta que la MiniTinyDB no admite el guardado de Lista en ese formato de lista, así que debemos pasar la lista a registro CSV, es algo así como los elementos separados por ,

etiqueta
Nombre
valor
Apellido, Edad, Población
Juan
"Perez", "22", "Cadiz"
Pedro
"Sanchez", "33", "Sevilla"
Luis
"Rodriguez", "44", "Jerez"

Así sí se puede guardar cada registro en la MiniTinyDB.

He puesto la Etiqueta5 y la Etiqueta6 para visualizar cómo se ven los datos de valor como Lista y como Registro CSV.

Cuando recuperemos los datos debemos hacer el proceso contrarios, es decir, los datos del valor vienen en formato registro CSV y lo debemos convertir a formato Lista para poder insertarlos en la Lista personas.

Una vez convertido en Lista, obtenemos cada elemento por su índice, sabiendo que el primer elemento es el 1.

_________________
- Diseño
.

- Importante:

En la Propiedad URLDelServicio de la MiniWebDB1, debemos estableces el sitio web donde se guardará la información, en nuestro ejemplo:
http://appinvtinywebdb.appspot.com

_________________
- Bloques.

 

_______________________________
39B.- MiniWebBD con datos.

p39B_miniwebdb_datos.aia

- Otra manera de almacenar varios datos utilizando distintas etiquetas.

- Más adelante en el tutorial 8DfirebaseDB_datos veremos cómo se puede realizar esta misma aplicación con una base de datos en donde podamos saber cuándo han cambiado los valores.

- Atención, cuidado con este tipo de código que puede ser engañoso para el programador.

En esta aplicación, esperas obtener una base de datos con Nombre, Ciudad y Edad. Pero observas que al introducir distintos datos, siempre "Ver" el último que has introducido y no ves los demás.

Eso es porque las Etiquetas siempre son las mismas: Nombre, Ciudad y Edad

y los datos se van sobreescribiendo sobre el anterior que has introducido

Nombre: juan
Ciudad: cadiz
Edad: 22
Nombre: pedro
Ciudad: jerez
Edad: 44

Cuando quieras "Ver" y pongas un Nombre, Ciudad y Edad, verás solamente al último que has introducido.

- Para hacer lo que quieres hacer, deberías poner una distinta Etiqueta a cada uno (Nombre1, Nombre2, Nombre3,...) o bien que la Etiqueta sea el nombre del usuario.

_________________
- Diseño.

_________________
- Bloques.

_______________________________
39C.- TinyBD con datos.

p39C_varias_tinybd.aia

- Volvemos a la TinyBD, es decir la base de datos que se guarda en nuestro móvil.

- Vamos a realizar una Base de datos en donde guardaremos Nombre, Edad y Ciudad, pero en este caso cada uno de los tres datos los guardaremos en una Base de datos distinta.

- Nombre lo guardaremos en la TinyBD1
- Edad lo guardaremos en la TinyBD2
- Ciudad lo guardaremos en la TinyBD3

- Además tendremos otra TinyBD4 en donde guardaremos id, que representa el número del último registro guardado.

- Supongamos que id = 14

- El Nombre se guardará en Nombre14 = Juan
- La Edad se guardará como Edad14 = 55
- La Ciudad se guardará como Ciudad14 = Cádiz

- Cuando se vaya a guardar el siguiente Registro, id = 15

- El Nombre se guardará en Nombre15 = Antonio
- La Edad se guardará como Edad15 = 66
- La Ciudad se guardará como Ciudad15 = Jerez

- Es decir, cada campo del Registro tendrá su número correspondiente.

- Le id indicará cual es el último número de Registro que tenemos.

- id siempre es id, es decir no existirá id1, id2, id3

- En realidad será que id = 1 o bien id = 2 o bien que id = 3 ...

- La id es conveniente tenerla guardada en una TinyBD, ya que si cerramos la aplicación y volvemos a abrirla es necesario obtener cual es el último registro.

_________________
- Diseño.

- Ponemos 4 TinyBD.

_________________
- Bloques.

__________________________________

 

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información