Teoría Departamento de Aprendizaje Visual Introducción a AppInventor2 A lo largo del mismo vamos a aprender el uso de esta entretenida utilidad web desarrollada por Google y brindada por el MIT (Instituto Tecnológico de Massachusetts) para el desarrollo de aplicaciones para teléfonos celulares (así como otros dispositivos) con sistema operativo Android. Para esto necesitaremos contar las siguientes herramientas: Para Ingresar a la Página Web de App Inventor 2: 1) Computadora y Sistema Operativo: Una Computadora con conexión a internet y puertos USB. Se puede optar por las siguientes 3 posibilidades: a. PC con Windows, ya sea Windows XP, Windows Vista o Windows 7. b. PC con GNU/Linux, ya sea Ubuntu 8, Debian 5 o versiones superiores de estos. c. Macintosh con procesador Intel y Mac OS X 10.5 o superior. 2) Navegador: Se puede optar por los siguientes: a. Mozilla Firefox 3.6 o superior. b. Google Chrome 4.0 o superior. c. Apple Safari 5.0 o superior. No se puede utilizar Microsoft Internet Explorer de momento. 3) Una Cuenta de Gmail. Explicaremos como crear la misma en pasos posteriores. Para probar las Apps: Se puede optar por las siguientes 3 posibilidades: a. Utilizando el emulador (el cual veremos más adelante) directamente en la PC. b. Utilizando un dispositivo Android conectado a través de USB a la computadora. c. Utilizando un dispositivo Android conectado a la misma red Ethernet que la computadora a través de WiFi. Para los dos últimos casos, el teléfono o tablet debe contar con sistema operativo Android 2.3 (Gingerbread) o superior y tener instalada la aplicación MIT AI2 Companion App que se puede descargar desde el siguiente link: https://play.google.com/store/apps/details?id=edu.mit.appinventor.aicompanion3 Además, deberemos instalar en la PC el programa aiStarter. Este programa es necesario tanto para enlazar como para emular el dispositivo Android. El mismos se puede descargar de aquí: 1 Departamento de Aprendizaje Visual http://appinv.us/aisetup_windows Este programa requiere del uso de Java, que es provisto por Oracle gratuitamente en esta dirección: https://www.java.com/es/download/ Antes de comenzar a trabajar con el entorno necesitaremos disponer de una cuenta de Google, la cual utilizaremos para loggearnos en el sitio de App Inventor. La misma la podremos crear en la página de Gmail: https://mail.google.com/ En la esquina superior derecha encontraremos el botón Crear una cuenta (en azul). Le damos clic y nos aparecerá la siguiente página: 2 Departamento de Aprendizaje Visual Rellenamos los campos que aparecen en la columna gris con nuestra información (nombre, apellido, nombre de usuario, una contraseña cualquiera de ocho caracteres, fecha de nacimiento, sexo, número de teléfono (opcional) y una dirección de correo actualmente en uso) Ingresamos el código de verificación o capcha de la imagen, tildamos la casilla de verificación al lado de Acepto las Condiciones del servicio y la Política de privacidad de Google, y damos clic en Siguiente paso. Listo, ya tenemos nuestra cuenta de Google. Nos propondrá agregar más información a nuestro perfil de usuario para usarlo en Google+ (la red social de Google), pero esto no será necesario para utilizar el servicio de App Inventor. Ya estamos listos para dirigirnos a la página de App Inventor, cuya dirección es: http://appinventor.mit.edu/explore/ 3 Departamento de Aprendizaje Visual Para comenzar, damos clic en Create (el icono naranja arriba a la derecha) y nos abrirá una página de loggeo con un cuadro como el de la derecha. Aquí debemos ingresar la dirección de correo Gmail que creamos anteriormente (“nombre de usuario”@gmail.com) y la contraseña de la misma. Damos clic en Iniciar Sesión y se nos abrirá la siguiente página: 4 Departamento de Aprendizaje Visual En la misma verificamos que la cuenta que usaremos para loggearnos es la misma que ingresamos en el paso anterior, damos clic en Permitir y ya estaremos listos para empezar a utilizar los servicios del MIT App inventor. Al hacer esto se nos presenta la siguiente página de bienvenida: Hacemos clic en el botón Continue del cuadro de bienvenida y listo, ya habremos ingresado dentro del entorno de desarrollo App Inventor. Es posible que antes de esto nos aparezca un recuadro proponiéndonos contestar una encuesta para mejorar el servicio. De estar interesados en completar la misma mas tarde cliqueamos en Take Survey Later, de otro modo daremos clic en Never Take Survey y ya no nos aparecerá más este cartel. 5 Departamento de Aprendizaje Visual Una vez hecho esto, nos aparecerá otro cartel indicándonos que no disponemos de ningún proyecto dentro de AppInventor2, y que de haber trabajado en el AppInventor anterior (AppInventor 1, por así decir), nuestros proyectos se encuentran a salvo todavía en esa otra versión. Simplemente ignoramos este cartel y nos disponemos a comenzar. Para esto basta cliquear en cualquier parte de la página, con lo que vamos a cliquear directamente en el botón New Project que se encuentra en la esquina superior derecha, debajo del logo del MIT App Inventor 2. Automáticamente nos parece un cuadro de dialogo en el cual vamos a indicar el nombre que llevará el proyecto, supongamos por caso Proyecto01. 6 Departamento de Aprendizaje Visual Damos enter y por unos segundos veremos la siguiente pantalla, que es donde nos van a aparecer todos los proyectos que vayamos creando en forma de listado: 7 Departamento de Aprendizaje Visual Pero debido a que, sólo contamos con este proyecto (por ser el primero), este se abrirá automáticamente, con lo cual estaremos frente a una pantalla como la que sigue a continuación, a la cual hemos agregado algunas descripciones generales: Cómo podemos apreciar, en la parte superior de la página se encuentra una barra de menús de color gris: Estos menús son Project (Proyecto), Connect (Conectar), Build (Construir) y Help (Ayuda). Dentro de Project encontraremos - My Projects: Nos devuelve a la página anterior, en la cual se encuentra el listado de todos los proyectos que hayamos creado. - Start new Project: Nos permite comenzar un nuevo proyecto de cero. - Import Project (.aia) from my computer: Nos permite importar un proyecto que tengamos guardado en nuestra pc (o en un pendrive), el cual debe encontrarse en el formato con extensión aia. 8 Departamento de Aprendizaje Visual - Delete Project: Para eliminar un proyecto dentro de My Projects, luego de que hayamos tildado la casilla de verificación a la izquierda de este. Tener en cuenta que una vez borrados los proyectos, NO se podrán recuperar. - Save project: Guarda el proyecto actual, sin cerrar el mismo. - Save Project as: Permite guardar el proyecto con un nuevo nombre. Por defecto, se nos propondrá el mismo nombre de proyecto pero con el agregado del sufijo “_copy”. Una vez hecho esto, el proyecto con el nuevo nombre se nos abrirá automáticamente para que continuemos trabajando en este. - Checkpoint: Muy similar a Save Project as, con la diferencia de que el nombre propuesto llevara el sufijo “_checkpointN”, donde N es un número que se incrementa cada vez que generamos un checkpoint (punto de chequeo), y que el proyecto con el nuevo nombre no se abrirá automáticamente. Nos será de mucha utilidad cuando no estamos seguros de que los cambios que vamos a realizar, vayan a resultar como esperamos, y deseamos tener una copia del proyecto hasta el punto actualmente alcanzado, para poder retomar desde aquí de ser esto necesario. - Export selected project (.aia) to my computer: Nos permite exportar el proyecto que seleccionemos dentro de My Projects hacia la PC, creando un archivo con extensión aia. Esto es muy útil tanto para tener un backup como para compartir nuestro proyecto con otros usuarios. - Export all project: ídem anterior pero seleccionando más de un proyecto a la vez. En dicha barra también aparecen los links My Projects, que nos devuelve a nuestra lista de proyectos, Guide donde encontraremos información de soporte, Report an Issue para enviar un informe de error, y por último nuestro nombre de usuario donde al cliquear podremos cerrar la sesión. 9 Departamento de Aprendizaje Visual Conexiones y prueba de apps - Para probar las apps desde WiFi hace falta solo el MIT companion app en el dispositivo. Tanto la computadora como el dispositivo tienen que estar conectados a la misma red WiFi o en el caso de la pc un cable modem con conexión WiFi y cable de red. Dentro del entorno de app inventor hay que seleccionar en conexiones la opción AI companion. Aparecerá un código QR como el siguiente: Iniciar la “MIT AI2 Companion” en el dispositivo y escanear el código QR y listo. - Para usar el Emulador o la conexión por USB se debe tener instalado el software “AppInventor_Setup_Installer_v_2_2”, que se puede descargar de esta dirección: http://appinv.us/aisetup_windows (si por alguna razón ya tuvieran instalada una versión anterior, será necesario desinstalar dicha versión y reiniciar la máquina antes de instalar la nueva versión). “En la mayoría de los casos, App inventor es capaz de localizar y detectar el programa por sí mismo, pero en el caso de que el mismo consulte por la ubicación del software, la ruta por defecto es C:\Archivos de Programa\Appinventor\commands-forAppinventor.” Para el caso de utilizar una conexión USB para hacer las pruebas directamente en un teléfono celular u otro dispositivo Android, será necesario instalar los driver de dicho 10 Departamento de Aprendizaje Visual dispositivo en la computadora, para lo cual deberán referirse al manual de usuario de dicho dispositivo. También se necesita tener instalado en el dispositivo Android la App “MIT AI2 Companion” que se puede instalar desde Google Play a través de este link: https://play.google.com/store/apps/details?id=edu.mit.appinventor.aicompanion3 Hay una página para probar la conexión de nuestro dispositivo que es: http://appinventor.mit.edu/test/ 11 Departamento de Aprendizaje Visual Glosario de Términos en App Inventor Argumento A menudo, en Ciencias de la Computación, las entradas en los procedimientos o eventos se denominan argumentos. Estos argumentos son variables locales cuyo alcance está dentro de ese procedimiento o evento. Comportamiento Se dice que una aplicación que tiene un comportamiento cuando responde a las acciones del usuario y de los eventos externos que esta pueda percibir. Bloque App Inventor es un lenguaje de programación por bloques. Los bloques son las piezas que se conectan para poder decirle a la aplicación lo que debe hacer. Se pueden encontrar en el Editor de bloques. Blockly Blockly es el nombre del editor de programación visual que App Inventor utiliza para mostrar los bloques en el navegador. Editor de bloques La pantalla se encuentra haciendo clic en el botón de Blocks en la pantalla de diseño. Aquí es donde usted dice a su aplicación lo que debe hacer. Comentario Los comentarios permiten escribir recordatorios u observaciones rápidas sobre los bloques de código. Se pueden utilizar para explicar lo que ciertos bloques hacen o lo que se desea que hagan en el futuro. Como los comentarios no se ejecutan, son para el programador y no para la máquina. El uso de comentarios permite que se pueda entender mejor el código cuando se llega de nuevo a él más adelante. Usted puede añadir o eliminar un comentario, haga clic en un bloque. Componente Los componentes, son las piezas de su aplicación que hacen acciones para usted. En la pantalla de diseño, los componentes se arrastran desde la paleta de componentes y se colocan en el teléfono. Ejemplos de componentes son Label, sonido, o botón. Diseñador La pantalla en la que puede arrastrar y soltar las piezas componentes y el diseño utilizando la interfaz de usuario. Cajón El segundo cuadro en la jerarquía de bloques que va Paleta para Cajón de Block. Un ejemplo de un cajón es de control. 12 Departamento de Aprendizaje Visual Desplegable Algunos bloques tienen una pequeña flecha de la derecha a la derecha del nombre del bloque. Puede hacer clic en esta flecha para cambiar el nombre y la función del bloque. El bloque get es un ejemplo de un menú desplegable. Para obtener más ayuda sobre este tema, echa un vistazo a la página de menús desplegables. Emulador El nombre del teléfono falso que aparece en su computadora si usted no tiene un dispositivo Android a trabajar es un emulador. Event Driven Decimos que una aplicación está orientada a eventos, ya que depende de los acontecimientos para saber qué hacer. Usted no le dice a su aplicación que esperar hasta que un mensaje de texto antes de hacer otra cosa. En su lugar, mediante el uso de controladores de eventos, le dice a su aplicación que cuando se produce un evento, realizar esta tarea. Esto evita que el teléfono de gastar toneladas de tiempo de espera para que los eventos suceden mientras se detiene todo lo demás que esperar. Con controladores de eventos, el teléfono se puede seguir haciendo lo que se le asignó a hacer a menos que un controlador de eventos se interrumpe. Se dice que el flujo del programa se determina por los acontecimientos. Getter A Getter es el bloque que se encuentra en el cajón Variables que dice llegar con una lista desplegable al lado de él. Este bloque se utiliza para devolver una variable local o global. Lista Las listas se utilizan para almacenar información. Si querías hacer un seguimiento de todos los nombres de usuario de las personas que utilizan la aplicación, que se quiere almacenar esa información en una lista. Cuando se añaden elementos a una lista, que se colocan en una cierta posición en la lista. La posición de un elemento en una lista a menudo se llama su índice. En App Inventor, el primer elemento de una lista tiene un índice de 1, la segunda tiene un índice de 2, y así sucesivamente. Mutador Algunos bloques tienen un signo más blanco en ellos en una caja azul. Estos bloques se denominan mutators. Si hace clic en el signo más, una burbuja aparece con el bloque de la izquierda que representa su función y todas sus entradas y el bloque de la derecha con el nombre de una de las entradas. Puede arrastrar este bloque de entrada en el bloque de función y entonces su bloque de función tomará ahora una entrada adicional. Lista y max son ejemplos de mutators. Para obtener más ayuda sobre este tema, echa un vistazo a la página mutators. Paleta El cuadro más amplio / exterior que tiene cajones. 13 Departamento de Aprendizaje Visual Procedimiento Un procedimiento es un conjunto de instrucciones. En App Inventor, un procedimiento es un conjunto de bloques bajo un bloque de procedimiento. Para obtener más ayuda sobre este tema, echa un vistazo a la página de los procedimientos. Propiedades Cada componente tiene propiedades que se pueden cambiar o inicializados en la pantalla del Diseñador en virtud de las propiedades que se encuentran en el lado derecho. También se pueden cambiar o se utilizan en la vista mediante el uso de bloques de getter o setter bloques de propiedades. Estos bloques decir algo como get / set Button1.Height. Setter Un colocador es otro bloque que se encuentra en el cajón que dice Variables conjunto desplegable para. Este bloque se usa para asignar nuevos valores a las dos variables locales y globales. Variable Una variable es contenedor que almacena un valor. Hay dos tipos de variables: globales y locales. Para obtener más información sobre este tema, echa un vistazo a la página de Global vs variables locales. 14 Departamento de Aprendizaje Visual 15 Departamento de Aprendizaje Visual Construcción de la primera aplicación: HelloPurr Ahora que ya hemos dado los primeros pasos en la construcción de una App, vamos a construir una aplicación completa y funcional. La misma se llamará HelloPurr. Recomendamos antes de empezar, ya tener enlazado el dispositivos Android (o bien el emulador) al entorno de AppInventor, de manera que los cambios que realicemos se vean reflejados rápidamente en dicho dispositivo. HelloPurr: Acariciar al gatito para que haga miau! HelloPurr es una aplicación muy sencilla, la que podremos construir en un tiempo muy corto. Vamos a crear un botón, el cual contendrá en el la imagen de un gato, y a continuación, vamos a programar dicho botón para que cuando se haga clic en él, se reproduzca en sonido de un "miau". Por estas razones, vamos a necesitar dos archivos: un archivo de imágenes con la foto de un gato, y un archivo de audio con el sonido de un "miau". Aquí están los mismos, para que puedan copiarlos a su PC: meow.mp3 16 Departamento de Aprendizaje Visual Seleccionar los componentes para diseñar la aplicación Como comentamos anteriormente, los componentes que vamos agregar a nuestra App se encuentran en el lado izquierdo del entorno de diseño, dentro de la columna Palette. Dichos componentes son los elementos básicos que necesitamos para hacer nuestras aplicaciones Android. Estos son como los ingredientes de una receta. Algunos componentes son muy simples, como el componente Label, que sólo muestra un texto en pantalla, o el componente Button (punto 1 en la imagen a la izquierda), que al tocarlo realiza una acción. Otros componentes son más elaborados: el componente Canvas puede almacenar imágenes fijas o animaciones, el componente acelerómetro que funciona como el control de una consola Wii, los componentes que reproducen música y video, etc. Para utilizar un componente en su aplicación, tendrá que hacer clic y arrastrarlo hacia la ventana Viewer en el centro de la pantalla Designer. Cuando se agrega un componente a la ventana Viewer (punto 1 en la imagen de más abajo), este aparecerá en la lista de componentes al lado derecho la misma. Los componentes (punto 2 en la imagen a continuación) tienen propiedades que se pueden ajustar para cambiar la forma en la cual componente aparece o se comporta dentro de la aplicación. Para ver y cambiar las propiedades de un componente (punto 3 en la imagen a continuación), primero debe seleccionar el componente deseado en la lista de componentes. 17 Departamento de Aprendizaje Visual Pasos para la selección de componentes y configuración de sus propiedades HelloPurr tendrá un componente Button que muestra la imagen del gatito que se encuentra más arriba. Para lograr esto siga estos pasos: - Paso 1a. Desde la columna Palette, arrastre y suelte el componente Button sobre la Screen1 (1). - Paso 1b. Para que el botón tenga la imagen del gatito, vaya a la propiedad Image dentro del panel Propierties, haga clic en el texto "None ..." y luego en "Upload File ..." (2). Una ventana se abrirá para que podamos elegir el archivo de imagen. Cliqueamos en "Browse" y vamos a la ubicación del archivo de imagen del gatito que copiamos a la PC (3). Lo seleccionamos y damos clic en "Abrir", y a continuación, en "OK". - Paso 2 - Cambiar la propiedad Text del botón Button1: Vamos a la propiedad Text (texto), eliminamos la leyenda "Text de Button1", dejando dicha propiedad en blanco, de modo que no aparezca nada escrito sobre la cara del gatito. Si la imagen del gatito aparece incompleta, podemos solucionarlo seleccionando la opción Fill parent de las propiedades Height (alto) y Width (ancho) del botón. 18 Departamento de Aprendizaje Visual Para ello, haga clic en el componente Button1, vaya debajo de todo en el panel propiedades, y haga clic en la palabra "Automátic ..." dentro de la propiedad Width. Se activará una la lista desplegable, en la cual podrá seleccionar la opción "Fill parent" (completar cuadro). Haga lo mismo con la propiedad Height. - Paso 3a. Desde la columna Palette, arrastre y suelte el componente Label a la ventana Viewer (1), situándolo debajo de la imagen del gatito. Dicho componente aparecerá en su lista de componentes como Label1. - Paso 3b. Cambiemos ahora la propiedad Text de Label1 por el texto "Pet the Kitty" (2). Podremos ver cómo cambia el texto dentro de entorno de diseño al mismo tiempo que en el dispositivo (o el emulador, dependiendo del caso). - Paso 3c. Cambiemos también el tamaño de la letra de Label1. Para esto, deberemos hacer clic en la propiedad FontSize, y cambiar su valor, en este caso, a 30 (3). - Paso 3d. Por último, Cambiemos el color de fondo de Label1, haciendo clic en el cuadro BackgroundColor (4). Se puede elegir cualquier color gusten. También se puede cambiar color del texto de Label1 haciendo clic en TextColor (5). En este caso, hemos establecido el color de fondo como azul, mientras que para el color del texto elegimos el amarillo. - Paso 4a. Dentro de la columna Palette, haga clic sobre el submenú Media. Ahí se encuentra el componente Sound, el cual debemos arrastrar y soltar dentro de la ventana Viewer (1). No importa donde sea que este caiga, ya que el mismo aparecerá en la 19 Departamento de Aprendizaje Visual parte inferior de dicha ventana, en el área de marcada como Non-visible components (componentes no visibles). - Paso 4b. Hagamos clic ahora en el botón Upload File del cuadro Media (2). Dentro de la ventana que se nos presenta (3), buscaremos a la ubicación del archivo de sonido que copiamos a la PC con anterioridad (meow.mp3); lo seleccionamos y lo subimos al proyecto dando clic en “OK”. - Paso 4c. En el panel Propierties del componente Sound1, verá que la propiedad Source (fuente) muestra la leyenda None (Ninguno). Haga clic en la palabra None para cambiar la fuente del componente Sound1 a meow.mp3 (4). Programación con el Editor de bloques Hasta ahora sólo hemos realizado la organización de la pantalla y de los componentes de la App en el entorno Designer. Para empezar a programar el comportamiento de la App, es necesario ir al Editor de bloques (Blocks). Hagamos clic en el botón Blocks para ir al editor de bloques. Una vez que tengamos el Editor de bloques en pantalla, continuaremos con los siguientes pasos, para programar la aplicación. 20 Departamento de Aprendizaje Visual Reproducir un Sonido - Paso 1. Del lado izquierdo del Editor de bloques, en el panel Blocks, haremos clic en la opción Button1, debajo del submenú Screen1. Se nos presentará una lista con los bloques que tenemos disponible para el botón Button1. Arrastre y suelte el bloque when_Button1.Click en el área de trabajo, dentro de la ventana Viewer. Los bloques de color mostaza que tenemos dentro de este menú, son lo que llamaremos bloques de control de eventos. Los bloques de control de eventos especifican cómo debe responder el dispositivo a ciertos eventos: un botón ha sido pulsado, el dispositivo está siendo sacudido, el usuario está arrastrando su dedo sobre la pantalla, etc. Podemos distinguir a los bloques de control de eventos porque comienzan con la palabra when… (cuando…), además de por su color. En este caso, when_Button1.Click es un ejemplo de bloque de control de eventos. 21 Departamento de Aprendizaje Visual - Paso 2. Hagamos clic ahora sobre la opción Sound1. Seleccionamos el bloque call_Sound1.Play, y lo colocamos dentro de la sección de tareas (do) del bloque when_Button1.Click. Los bloques se conectan entre sí como las piezas de un rompecabezas, y se puede oír el sonido de un clic cuando estos se conectan. Los bloques de color púrpura se denominan bloques de comandos. Estos bloques se colocan dentro de la sección de tareas de los bloques de control de eventos, de manera que cuando estos últimos son ejecutados, lo que se ejecuta es la secuencia de comandos dentro de ellos. Un comando es un bloque que especifica una acción a realizar (por ejemplo, la reproducción de sonido) cuando se activa un evento (al pulsar, por ejemplo, el botón Button1). Al llegar a este punto, los bloques colocados deben tener este aspecto: 22 Departamento de Aprendizaje Visual Ahora usted puede ver que el bloque de comandos se encuentra en el controlador de eventos. Este conjunto de bloques significa; "Cuando se hace clic en el botón Button1, se reproduce el sonido Sound1". Podemos decir que los bloques de control de eventos indican la categoría de la acción a realizar (por ejemplo, el presionar un botón), mientras que los bloques de comando especifican el tipo de acción y sus detalles (por ejemplo, la reproducción de sonido específico). Probemos la App! Al tener nuestro dispositivo Android enlazado a la PC (o al estar usando el emulador), veremos que dentro de mismo tenemos la pantalla con la imagen del gatito tal y como la armáramos dentro del entorno de diseño. Verán que al tocar (o hacer click) sobre el gatito se escuchara un maullido. Felicitaciones, su primera aplicación se está ejecutando! Empaquetado de la aplicación Si durante el armado de la App mantuvieron enlazado un dispositivo Android (o el emulador) a la PC, habrán notado que la misma ha estado funcionando en tiempo real en dicho dispositivo, o sea, se ha ido “armando” dentro del mismo. En cuanto desconectemos el dispositivo (o cerremos el emulador) de la PC, la aplicación va a desaparecer de dicho dispositivo. Podremos volver a enlazar con la PC todas las veces que queramos, de manera que la App vuelva a ejecutarse dentro del dispositivo. Pero lo deseamos es tener la App en ejecución sin tener que estar conectado a App Inventor. Para esto necesitamos empaquetar la aplicación, de manera que obtengamos un archivo "paquete", cuya extensión será .apk. Para realizar el empaquetado de la aplicación, haremos clic en el menú Build, dentro de la barra gris, en la parte superior de la pantalla. Dentro de este menú tendremos dos opciones posibles, “App (provide QR code)” y “App (sabe to my computer)”: 1. App (provide QR code): Al cliquear esta opción se nos presentará en pantalla un código QR, con el cual vamos a poder instalar la App en aquellos dispositivos que cuenten cámara de fotos y conexión a internet. Para poder utilizar esta opción, será necesario contar con alguna aplicación de escaneo de códigos QR, tal como Googles o cualquier otra de las que se encuentran disponibles gratuitamente en Google Play. Nota: el código QR funcionará sólo con aquellos dispositivos que tengan asociada la misma cuenta de Google que la utilizada dentro de App Inventor. 23 Departamento de Aprendizaje Visual 2. App (sabe to my computer): Con esta opción vamos a poder descargar la App a la PC en la forma de un archivo apk, el cual podremos compartir con otras personas, sin necesidad de que estas usen App Inventor. Para esto, una vez que tengamos nuestro archivo .apk, debemos copiarlo dentro de la memoria SD del dispositivo en el cual deseamos instalar la App. Luego, utilizando alguna de las aplicaciones de exploración archivos que podemos en encontrar gratuitamente en Google Play, intentaremos abrir dicho archivo .apk. Nuestro dispositivo reconocerá automáticamente que se trata de un archivo de instalación Android, y nos propondrá instalar entonces la App que este contiene. Tocamos en aceptar, y listo! Ya tendremos instalada la App para usarla en cualquier momento que queramos. Ejercicio Desafío! Hacer que el gato ronronee Vamos a modificar la App para hacer que el gato “ronronee”. El reto es hacer que cuando hagamos clic sobre el botón que contiene la imagen, el teléfono vibre al mismo tiempo que se reproduce el sonido. Bloques a utilizar: - when_Button1.Click call_Sound1.Play call_Sound1.Vibrate Bloque numérico ¡Manos a la Obra! 24 Departamento de Aprendizaje Visual Canvas Introduciremos el componente Canvas (lienzo) para crear gráficos simples en dos dimensiones. Vamos a construir una App que nos permitirá dibujar en la pantalla del teléfono con diferentes colores. Objetivo Vamos a construir una aplicación que llamaremos PaintPot, en honor a uno de los primeros programas desarrollados en la década de 1970, el cual demostraba el gran potencial de las computadoras personales. La aplicación cumplirá los siguientes requisitos: Se seleccionará con el dedo el color con el que se va a dibujar. Al arrastrar el dedo por la pantalla, se dibujará una línea de dicho color. Con un solo toque sobre la pantalla se dibujará un punto. Al tocar un botón en la parte inferior de la pantalla, está se limpiará. Incluir una imagen como fondo del dibujo. Este módulo presenta los siguientes conceptos de App Inventor: El componente Canvas, utilizado para dibujar. Determinar la disposición en pantalla utilizando el componente Arrangement. Bloque de control de eventos que utilizan argumentos. Variables. 25 Departamento de Aprendizaje Visual Antes de Comenzar Asegúrese de que su PC y su dispositivo (o emulador) se encuentren enlazados. Inicie un nuevo proyecto con el nombre "PaintPot". Título de la pantalla Empecemos por cambiar el título de la pantalla. Para esto, deberán seleccionar el componente Screen1 dentro del panel Components. Luego, dentro del panel Properties encontraremos la propiedad Title (título). En ella debemos escribir el texto "PaintPot". Al apretar enter, veremos que el título de la Screen1 cambiará, y que este cambio se verá automáticamente reflejado en el dispositivo enlazado (o emulador). Hay tres elementos dentro de App Inventor a los cuales se puede considerar como nombres, y es fácil confundirlos: 1. El nombre que elegimos para el proyecto en el cual hemos de trabajar (en este caso, PaintPot). Este será también el nombre de la App, en el caso de que se la empaquete en un archivo .apk para luego instalarla en un dispositivo. 2. El nombre "Screen1", que es el nombre del componente de pantalla, el cual puede verse en el panel Components del entorno de diseño. En la versión actual de App Inventor no es posible cambiar el nombre del primer componente de pantalla, pero sí se pueden crear nuevas pantallas, a las cuales se les podrá cambiar el nombre de componente. 3. La propiedad Title (título) de la pantalla, que es lo que aparece en la barra de título del dispositivo Android al ejecutar la App. Title es una propiedad del componente de pantalla “Screen1”. El texto por defecto de la propiedad Title será "Screen1", que es el que se ha utilizado dentro HelloPurr. Sin embargo, este se puede modificar, como podemos observar al reescribirlo como PaintPot. Reiterando, el nombre y el título del componente Screen1 son inicialmente iguales, pero podremos cambiar el título, modificando la propiedad Title. Seleccionar los componentes Para armar la App PaintPot , vamos a necesitar los siguientes componentes: Cuatro botones: Tres botones para la selección del color; uno rojo, otro azul, y uno verde; y un botón adicional para limpiar o borrar el dibujo. Un componente Canvas (lienzo), que proveerá la superficie sobre la cual dibujar. Dentro de dicho componente colocaremos una imagen de fondo, la misma que usamos para HelloPurr. Esto se logra cargando dicha imagen dentro de la propiedad BackgroundImage del componente Canvas. También es posible dibujar sobre un lienzo en blanco con sólo dejar dicha propiedad como está por defecto. También vamos a utilizar un componente no visible: el componente HorizontalArrangement para hacer que los tres botones de color aparezcan alineados. 26 Departamento de Aprendizaje Visual Eso hace seis componentes en total. Vamos a por ellos para construir la App. Botones de Selección del Color Vamos a colocar un botón, al cual le cambiaremos la propiedad Text por la palabra "Rojo", y seleccionaremos como color de fondo el rojo, seleccionando este color en la propiedad BackgroundColor. Luego, haremos clic sobre Button1 dentro del panel Components. Más abajo y dentro de este mismo panel encontraremos el botón Rename... (Renombrar). Con dicho botón vamos a cambiar el nombre de dicho componente de "Button1" a "BotonRojo". Del mismo modo, haremos dos botones más; uno para el azul y otro para el verde, y los llamaremos “BotonAzul " y "BotonVerde" respectivamente. Dichos botones aparecerán alineados verticalmente debajo del botón rojo. El entorno de diseño nos debería quedar de manera similar a como aparece a continuación, con los nombres los componentes Button cambiados, en lugar de dejarlos con los nombres predeterminados como hicimos con HelloPurr. El uso de nombres significativos hace que los proyectos sean más legibles y fáciles de entender a la hora de revisarlos. Mejorar la Disposición de los Componentes en Pantalla Al momento debemos tener tres botones, alineados uno encima del otro. El siguiente paso es hacer que estos se alineen horizontalmente. Para ello, utilizaremos el componente HorizontalArrangement (alineación horizontal). 27 Departamento de Aprendizaje Visual 1. Dentro del panel Palette, en la categoría Layout, encontraremos el componente HorizontalArrangement. Colocaremos uno de estos debajo de los botones de color. Luego, en el panel Components cambiaremos su nombre de "HorizontalArrangement1" a "TresBotones". 2. En el panel Properties, cambiaremos la propiedad Width del componente “TresBotones” por "Fill parent ...". Esto hará que el mismo ocupe todo el ancho de la pantalla. 3. Moveremos ahora los tres botones dentro de dicho HorizontalArrangement, de manera que estos queden uno al lado del otro. Sugerencia: La mover un componente dentro de la pantalla, veremos una línea de color azul que nos indicará donde quedará situada la pieza al momento de soltarla. Utilice dicha guía para lograr el orden deseado. Si miramos en la lista de componentes del proyecto, veremos que los tres botones aparecen ahora debajo del componente “TresBotones”, con un espacio de sangría. Esto quiere decir que los botones son ahora subcomponentes de “TresBotones”. Observemos además que todos los componentes aparecen a su vez sangrados debajo de Screen1, o sea, son subcomponentes de la pantalla. En este punto, debemos ser capaces de ver los tres botones alineados en la pantalla del dispositivo (o emulador) enlazado, aunque no todo se verá exactamente como en el entorno de diseño. Por ejemplo, vemos un contorno alrededor del HorizontalArrangement dentro del entorno de diseño, no así en el dispositivo. En general, los distintos tipos de “Arrangements” se utilizan para crear diseños sencillos. Se pueden crear diseños más complejos anidando varios componentes de este tipo dentro de una misma pantalla. 28 Departamento de Aprendizaje Visual El Canvas y el Botón Borrar Los dos últimos componentes son el Canvas y el Botón Borrar. 1. Coloquemos un componente Canvas dentro de la ventana Viewer. El mismo se encuentra en la columna Palette, dentro de la subcategoría “Drawing and Animation”. Luego, cambiemos su nombre a "CanvasDeDibujo". Luego, estableceremos su propiedad Width como "Fill parent", mientras que su propiedad Height la estableceremos en 300 píxeles. 2. Podremos agregar a dicho Canvas una imagen de fondo. Para esto, haga clic en el campo que contiene el texto "None ..." junto a BackgroundImage dentro del panel Properties de dicho Canvas. Podemos utilizar por ejemplo, el mismo archivo kitty.png que usáramos para para la App HelloKitty, así como también cualquier otra imagen de la que dispongan. Se puede utilizar cualquier imagen que se desee, pero para conseguir los mejores resultados, el tamaño de la imagen debe ser cercano al tamaño del Canvas que se mostrará dentro del dispositivo (en píxeles). Además, cuanto mayor sea el tamaño de la imagen, mayor será el tiempo que tardará en cargarse, y podrían exceder la capacidad de memoria que el teléfono le asigna a las aplicaciones. 3. Coloquemos el último botón en la pantalla debajo del Canvas. Cambiaremos su nombre a "BotonBorrar", y dentro del panel Properties, su atributo Text por el texto "Borrar". Ya hemos completado los pasos para configurar el aspecto de la App. Así es como debería verse dentro del entorno Designer. 29 Departamento de Aprendizaje Visual A continuación, vamos a definir cuál será el comportamiento de la App. Determinar el Comportamiento de la Aplicación Hagamos clic en el botón de Blocks para cambiar al Editor de Bloques. Primero que aremos será configurar los botones que cambian el color con el que se pinta. Posteriormente, agregaremos bloques para definir lo que sucede cuando alguien se toca o se desliza el dedo sobre la pantalla. Uso de los Controladores de Evento para los Botones En el Editor de bloques: 1. Dentro de la columna Blocks, cliqueamos sobre “BotonRojo” y arrastramos el bloque when_BotonRojo.Click. 2. Dentro de la columna Blocks, cliqueamos ahora sobre “CanvasDeDibujo”. Seleccionamos el bloque set_CanvasDeDibujo.PaintColor_to y lo colocamos en la sección de tareas de when_BotonRojo.Click . 3. Dentro de la columna Blocks, cliqueamos sobre el submenú Colors, seleccionamos el bloque de color rojo y lo encastramos al bloque set_CanvasDeDibujo.PaintColor_to 4. Repetiremos los pasos del 1 al 3 para hacer lo propio con los botones tanto Azul como Verde. 5. El último botón a configurar es el botón Borrar. Dentro de la columna Blocks, cliqueamos sobre “BotonBorrar” y seleccionamos el bloque when_BotonBorrar.Click. Luego cliqueamos sobre “CanvasDeDibujo”, seleccionamos el bloque call_CanvasDeDibujo.Clear y lo colocamos en la sección de tareas de when_BotonRojo.Click. Los bloques de los botones deberían resultar similares a esto: 30 Departamento de Aprendizaje Visual Uso de los Bloques de Control para el Touch Vamos con el siguiente paso: dibujar dentro del Canvas. Vamos a organizar las cosas para que al tocar el Canvas, se obtenga un punto en el lugar donde se toca, pero si arrastra el dedo lentamente sobre este, se dibuja una línea. Dentro del Editor de bloques, en la columna Blocks, cliqueamos sobre CanvasDeDibujo y seleccionamos el bloque when.CanvasDeDibujo.Touched. Tan pronto como colocamos dicho bloque en la ventana Viewer podremos observar tres nombres de argumentos (resaltados en naranja), ubicados en la parte superior del bloque; estos son X, Y, y touchedSprite. A estos argumentos también se los conoce como variables locales, y se los pueden utilizar mediante cualquiera de los bloques para variables ya vistos. También podremos acceder a estas variables cliqueando sobre el nombre que aparece resaltado en naranja y seleccionando el bloque correcto en el menú desplegable. Como hemos visto anteriormente, el uso de los bloques de control eventos tales como when.BotonRojo.Click es bastante simple, porque no hace falta saber nada más sobre el “Click” aparte del hecho de que sucedió. Otros controladores de eventos, tales como when.CanvasDeDibujo.Touched necesitan información sobre el evento. En App Inventor, esta información se expresa como el valor de los argumentos relacionados con el bloque de control de eventos. Para el evento when.CanvasDeDibujo.Touched, los dos primeros argumentos representan la coordenadas X e Y de donde ocurrió el contacto. Dejaremos el uso de touchedSprite para otra ocación. Cuando este evento táctil se produzca, hará que dentro del Canvas se dibuje un pequeño círculo en el punto de coordenadas (x, y). Seleccionamos el bloque call.CanvasDeDibujo.DrawCircle y colocarlo en la sección de tareas del bloque when.CanvasDeDibujo.Touched. Del lado derecho del bloque call.CanvasDeDibujo.DrawCircle encontraremos tres encastres en los que se debe especificar los valores para las coordenadas X e Y en los que se debe dibujar el círculo, y el valor de r, que es el radio del círculo. Para X e Y, utilizaremos los valores de los argumentos que suministrados por el bloque when.CanvasDeDibujo.Touched, para esto: 1. Haremos clic sobre la variable local X (resaltada en color naranja). Dentro del menú que se despliega encontraremos el bloque get.x; lo seleccionamos y colocamos en el encastre correspondiente a x en el bloque call.CanvasDeDibujo.DrawCircle. 31 Departamento de Aprendizaje Visual 2. Haremos lo mismo con la variable local Y. 3. También tendremos que especificar el radio del círculo a dibujar. Cinco (píxeles) es un buen valor para esta App. Haga clic en un área vacía de la ventana Viewer, escriba el número 5 y presione enter; esto creará un bloque de numérico con un valor igual a 5. Escribir en el área en blanco de la pantalla se llama typeblocking y resulta muy útil como atajo. Esto puede hacerse con cualquier bloque, no sólo números. Coloquemos el bloque numérico con el valor 5 en el encastre r. Así es como debería quedar el bloque when.CanvasDeDibujo.Touched: En el caso de que estemos trabajando con un dispositivo android enlazado, podremos probar lo realizado hasta ahora en el mismo. Toque alguno de los botones de color. Ahora, toque dentro del Canvas; deberá observarse una mancha en cada lugar donde toca. Al tocar el botón Borrar, debería limpiarse el dibujo y quedar como al principio. ------------------------------------------------------------------------------------------------------------Dibujar una Línea Cuando se Arrastra el Dedo Por último, vamos a agregar el bloque de control para que al deslizar el dedo, se dibuje una línea. Aquí está la diferencia entre un toque y un arrastre: Un toque es cuando ponemos el dedo sobre la pantalla y lo levantamos sin moverlo. Un arrastre es cuando ponemos el dedo sobre la pantalla y lo movemos manteniendo el contacto. Al arrastrar el dedo por la pantalla, describiendo por ejemplo una línea curva, lo que sucede en realidad es que se irán dibujando cientos de pequeñas líneas rectas entre cada punto del recorrido: cada vez que se mueve el dedo, aunque sea por muy poco, se extenderá la línea graficada desde la última posición que ocupara su dedo hasta la posición inmediatamente posterior. Para cumplir con la tarea, vamos a utilizar un bloque de control llamado Dragged (arrastrado), el cual se encuentra entre los bloque que operan dentro del Canvas. Este cuenta con 6 argumentos. Se trata de tres pares de coordenadas X e Y, las cuales describen: La posición del dedo donde comenzó el arrastre (startX y startY). 32 Departamento de Aprendizaje Visual La posición actual del dedo (currentX y currentY). La posición del dedo inmediatamente anterior a la actual (prevX y prevY). Vemos también que existe un argumento llamado draggedSprite, que no vamos a utilizar por el momento. Vamos a colocar ahora los bloques que necesitamos para lograr dibujar una línea: 1. Seleccionamos el bloque when.CanvasDeDibujo.Dragged y lo colocamos en el área de trabajo. Para esto, vamos a la columna Blocks, cliqueamos sobre CanvasDeDibujo, y arrastramos dicho bloque (el cual aparece al principio de la lista) hacia la ventana Viewer. 2. En la misma ubicación de la columna Blocks vamos a encontrar el bloque call.CanvasDeDibujo.DrawLine. Lo seleccionamos y colocamos dentro del área de tareas del bloque when.CanvasDeDibujo.Dragged. 3. Por último, completamos el bloque call.CanvasDeDibujo.DrawLine. Para esto, cliqueamos sobre el argumento prevX, seleccionamos el bloque get.prevX y lo colocamos en el encastre x1. Haremos lo mismo con los otros encastres: get.prevY para y1, get.currentX para x2 y get.currentY para y2. Aquí está el resultado: Pruebe ahora la App dentro del dispositivo android (o emulador) enlazado: arrastre el dedo por la pantalla para dibujar líneas y curvas. Toque la pantalla para hacer puntos. Utilice el botón Limpiar para limpiar la pantalla. FIN 33
© Copyright 2025