Desem informació al mòbil


L’objectiu d’aquest apartat és crear una aplicació que ens permetrà fer fotos i mostrar on s'emmagatzemen.


Més concretament es pretén donar resposta a les preguntes següents:


  • Com puc emmagatzemar fotografies?
  • Com puc recuperar arxius mitjançant un explorador?
  • Com puc utilitzar l'objecte ActivityStarter per cridar diferents recursos?


Fem una foto

En aquest bloc, ampliarem les possibilitats de l'app que es desenvolupa en l'apartat Introducció a l’App Inventor - Fem una foto.

Afegirem a aquesta app una label on ens mostrarà la ubicació de l'arxiu on s'ha desat la foto i un botó per fer posteriorment la cerca de la foto.

La interfície quedarà com segueix:


En funció de la versió d'Android, la foto pot desar-se en ubicacions diferents:

  • /storage/sdcard/0 …
  • /storage/emulated/0 …
  • /storage/emulated/0/android/data/<nom_del_paquet>/files/pictures

La tercera de les ubicacions és la que es fa servir en les versions d'Android 10 i posteriors. <nom_del_paquet> correspon al nom intern que assigna Android a la nostra aplicació.

Un cop feta la foto, el component càmera ens retorna la ubicació de l'arxiu que conté la foto en el paràmetre image. Podem assignar aquest valor a la propietat BackgroundImage del Canvas per tal que ens en mostri la foto, i assignar-lo també a la label per tal que ens mostri la ubicació de l'arxiu:

Recuperem la foto

Si volem accedir a imatges emmagatzemades al dispositiu mòbil, App Inventor ens ofereix un objecte anomenat ImagePicker. Aquest objecte crida al visor d’imatges que tingui definit per defecte el sistema operatiu i ens retorna el nom de la imatge que haguem seleccionat.

Però no utilitzarem aquest objecte per la nostra app, ja que va a buscar les imatges que ha fet directament la càmera i que s’han gravat a la galeria de fotos del nostre dispositiu mòbil.

Accedirem a les fotos que hem fet mitjançant l'explorador d’arxius del mòbil, que ens permetrà navegar per les carpetes del nostre dispositiu. Gairebé totes les versions d'Android i/o les marques de fabricants de mòbils inclouen algun explorador d'arxius. Si no fos el vostre cas, podeu instal·lar-ne un de la botiga d'apps.

Programarem l'obertura de l'explorador d'arxius mitjançant el component ActivityStarter, que configurarem en iniciar l'app amb els següents valors:



Un cop ja tenim aquest component correctament configurat, el podrem cridar mitjançant el botó de cerca:


El resultat que ens retorna la crida contindrà el paràmetre ResultUri, que correspon a la foto que hem seleccionat en l'explorador d'arxius. Podrem, aleshores, fer-lo servir per situar la foto dins del canvas:

El component Activity Starter permet cridar a molts recursos. Cada un d’ells demanda uns valors i ens retorna uns resultats diferents en cada cas. Per poder esbrinar com s’ha de fer la crida en cada cas disposeu d'una aplicació anomenada App Inventor ActivityStarter que us permetrà esbrinar com configurar-lo en funció del recurs que vulgueu cridar. A més a més de mostrar-nos com hem de fer una crida a un recurs, ens permet modificar els paràmetres, simular la crida en el nostre propi dispositiu i veure quin resultat ens retorna.

Un cop hem acabat la programació de l'app, tanquem-la i tornem-la a obrir per comprovar que la foto s'ha desat correctament i recuperar-la. És a dir, reiniciem l'app (el canvas estarà buit).

Al prémer el botó BCerca s'iniciarà en el mòbil és el gestor de fitxers d'Android. En cas que no ho faci per defecte, heu de fer que mostri els fitxers de l'emmagatzematge intern:



Aleshores navegar fins trobar la vostra foto:

Alguns fabricants de mòbils preinstal·len apps gestores de fitxers diferents a la nativa d'Android. Si en teniu més d'una, haureu de triar quina utilitzeu.

Un cop haguem seleccionat la foto que volem, la foto es situarà dins del canvas.

La versió de l'explorador de fitxers que s'obre mitjançant l'intent té permisos limitats en versions d'Android 11 i posteriors (per polítiques de privacitat). Per localitzar la foto haureu de cercar-la directament obrint l'app exploradora de fitxers del vostre mòbil i navegant fins a la seva ubicació.