Programación para Android con Processing

publicado en: Portada, Tutorial | 7

Una de las razones por las que un sketch desarrollado con Processing puede ejecutarse en diferentes plataformas es por la capacidad de esta herramienta para exportarlo como una aplicación Java y la de incluirla en un ejecutable para diferentes sistemas operativos.

Las implementaciones de la máquina virtual Java para los principales entornos de escritorio es bastante homogénea pero en el caso de Android y su entorno de ejecución ART existen diferentes consideraciones que han hecho que Processing haya optado por añadir un modo de programación específico que aporta algunos recursos, a nivel de lenguaje así como a nivel de IDE (PDE), con los que explotar las características del sistema operativo Android y de los dispositivos en los que se ejecute.

Processing es una herramienta muy productiva y sencilla de usar con la que es rápido y cómodo elaborar gráficos interactivos, compañera perfecta para el desarrollo de una interfaz de presentación de datos y control de dispositivos electrónicos. Poder utilizarla en dispositivos móviles, además de en sistemas de escritorio, completa la posibilidad de acceso a equipos microcontrolados, tanto en red para proyectos en la Internet de las cosas (IoT) como directamente con un protocolo serie estándar (como UART, I2C o SPI), conectado físicamente al dispositivo, o inalámbrico (como wifi o Bluetooth).

Instalar el modo de programación de Processing para Android

Por defecto, el único modo de programación disponible en Processing es Java. Para añadir nuevos modos de programación se puede utilizar el mismo botón con el que se eligen (en la parte superior derecha del PDE), que inicialmente mostrará solo las entradas «Java» y «Añadir modo…».

Processing menú Añadir modo

Al pulsar sobre «Añadir modo…» se muestra el gestor de contribuciones (la expresión que en Processing hace referencia a los componentes no incluidos en la distribución base) con la solapa Modes seleccionada. En esta solapa hay una lista con todos los modos de programación; en gris (atenuados) aparecen los que no sean compatibles con la versión actual, con una marca verde en la columna Status los que estén instalados y por tanto disponibles para ser utilizados y con el logo de Processing en la columna Author los desarrollados por la Processing Foundation.

Al pulsar sobre un elemento de la lista aparece información sobre el modo, incluyendo un enlace hacia la web del componente, en un cuadro de texto en la parte central inferior de la ventana. Si el modo de programación Android no está instalado todavía, se activará el botón Install. Pulsándolo se procede a descargar e instalar el complemento en el PDE.

Processing Android instalar modo programación

Si el complemento ya está instalado, al seleccionarlo en la lista se activará el botón Remove con el que se puede desinstalar. Si el modo de programación seleccionado se puede actualizar se activará también el botón Update y se indicará la versión que está disponible. En la solapa Updates de la ventana del gestor de contribuciones también se puede encontrar una lista con los complementos instalados de los que exista una versión más reciente disponible para ser actualizada.

Processing Android desinstalar modo programación borrar

Una vez instalado el nuevo modo de programación se puede seleccionar en la lista de modos que aparece en el botón e indicador de la parte superior derecha del Processing Development Environment (PDE) desde la que se accedió a la ventana de contribuciones para instalar el nuevo modo.

Processing Android modo programación elegir menú

Para que Processing pueda utilizar el modo de programación para Android necesita el kit de desarrollo (SDK) correspondiente (Android SDK). Si está instalado puede que lo localice automáticamente (dependiendo de cómo haya sido instalado y de las variables de entorno que apunten a él) en caso contrario es posible elegirlo manualmente indicando la carpeta en la que se encuentre después de pulsar sobre Locate SDK path manually. También es posible descargarlo e instalarlo automáticamente pulsando sobre el botón Download SDK automatically de este cuadro de diálogo.

Processing Android SDK instalado elegir manual o descargar automático

El IDE de Processing (PDE) desarrollando para Android

El modo de programación para Android de Processing presenta algunos cambios en el PDE respecto del modo convencional (Java). El más evidente de estos cambios es la eliminación del modo de depuración, que en Android se gestiona utilizando el Android Debug Bridge (ADB). En el modo de programación para Android se elimina el botón de depuración y el menú Depuración se sustituye el menú Android.

Processing IDE modo programación Java Android

Menú Ayuda para el modo de programación para Android de Processing

Al instalar en Processing un nuevo modo de programación, el menú Ayuda puede cambiar por completo, como ocurre con el modo de programación en Python, o se pueden añadir entradas a la documentación correspondiente, como es el caso del modo de programación Android. Normalmente se incluyen accesos web a la referencia del lenguaje, con estilo de manual, a tutoriales de iniciación, y a información sobre la herramienta de la que deriva el modo de programación.

Processing IDE Android modo programación ayuda

La primera entrada que se añade a la ayuda con el modo de programación Android es un acceso a la wiki sobre Android en Processing en GitHub, que a su vez enlaza con el sitio oficial del modo de programación de Processing para Android, es decir, no es la documentación del modo de programación de Processing para Android sino una página que funciona como entrada; un poco confuso al principio.

Processing IDE Android modo programación ayuda wiki

La segunda entrada del menú Ayuda que se añade con este modo de programación es un acceso al sitio de desarrolladores de Android, que puede ser útil como referencia, especialmente de las operaciones que no se encuentran actualmente integradas en el lenguaje y que es necesario gestionar «manualmente» desde la API de Android.

Processing IDE Android modo programación ayuda developer site

Cabe esperar que el sistema de ayuda del modo de programación de Processing para Android evolucione en parejo a sus prestaciones y a su documentación; mientras tanto, se puede acceder directamente a la referencia del modo de programación de Processing para Android en su web. También es posible encontrar alguna información interesante en la vieja wiki sobre Processing para Android.

Configurar el sistema Android destino del proyecto en Processing

Sustituyendo el menú Depuración, que existe en el modo de programación Java (el convencional de Processing), en el modo de programación para Android se incluye el menú Android, en el que se configura la API objetivo que se utiliza (la que se espera en el dispositivo móvil) y la manera de depurar el código, en un dispositivo físico o en uno emulado, además de la gestión de ambas opciones.

Processing IDE Android modo programación menú plataforma

Al instalar el SDK de Android se instala también el gestor del SDK de Android, que sirve, a su vez, para descargar e instalar las actualizaciones de los distintos componentes (como herramientas de desarrollo o nuevas API, además del SDK). Para acceder a este gestor desde el PDE se utiliza la entrada Android SDK Manager del menú Android

Processing IDE Android modo programación SDK manager

Al iniciar el gestor del SDK de Android se buscan actualizaciones de los componentes (paquetes) instalados y se marcan automáticamente para instalar, previa aceptación de la licencia. De la misma forma, si se marcan en el gestor componentes que ya están instalados, se pueden desinstalar pulsando sobre el botón correspondiente. El programa permite filtrar los componentes que se muestran, para ver los nuevos los instalados y/o los obsoletos, además de mostrar o no los detalles del paquete.

Processing Android SDK Manager componentes kit desarrollo

Como pueden instalarse varias versiones de la API de Android, el menú permite seleccionar la que se desea utilizar para el proyecto que se está desarrollando en el sketch de Processing.

La versión actual del modo de programación para Android funciona con la versión 5.0 del sistema operativo Android (Lollipop) y superiores pero, de hecho, la mayoría de opciones necesitarán la versión versión 6.0 del sistema operativo Android (Marshmallow) o superiores.

Processing IDE Android modo programación elegir SDK API

Para poder hacer pruebas de funcionamiento del código código que se está desarrollando en dispositivos con diferentes características de hardware (como resolución o cantidad de RAM) o de software (típicamente la versión del sistema operativo) sin disponer del correspondiente modelo se puede usar un emulador. Para la gestión de los diferentes emuladores (dispositivos virtuales), desde el menú Android se puede acceder al gestor de AVD.

Processing IDE Android modo programación AVD manager

La entrada Android AVD Manager lanza el gestor de dispositivos de Android desde el que se pueden definir dispositivos virtuales (emulados) basados en sus características de hardware (que también se pueden establecer). Los datos más relevantes que definen un dispositivo virtual son: la arquitectura (CPUABI), la resolución de la pantalla y el uso del hardware de la GPU (más rápido que la emulación por software y utilizando menos recursos del sistema en el que se emula), la cantidad de RAM, el tamaño del almacenamiento interno y (en su caso) la capacidad de la tarjeta de memoria SD y la presencia de cámaras trasera y frontal y la forma en la que obtienen las imágenes (desde un dispositivo físico o también emuladas). Además, se pueden establecer otros parámetros, como una «piel» que simule el aspecto de un dispositivo real, la posibilidad de usar el teclado del sistema o de almacenar capturas de pantalla.

Processing Android Virtual Device AVD Manager

También es posible ejecutar el sketch de Processing en un dispositivo real conectándolo por USB al PC para poder probar y depurar el código por medio del protocolo Android Debug Bridge (ADB). Del lado de Processing es necesario seleccionar el dispositivo en la lista que aparece en la entrada Select device.

Processing IDE Android modo programación elegir dispositivo

Para poder ejecutar el sketch de Processing también es necesario, del lado del dispositivo, permitir la depuración por USB en el sistema operativo.

Normalmente basta con activar la opción Depuración por USB que se encuentra en la entrada Opciones de desarrollo del menú Ajustes pero, en algunos dispositivos, antes habrá que activar esta opción pulsando durante unos segundos y/o varias veces sobre el número de compilación del sistema que aparece al final de la lista de datos de la información del equipo. Si fuera necesario activar la entrada Opciones de desarrollo del menú Ajustes de esta forma, al pulsar sobre el número de compilación, aparecerá una notificación con un mensaje del tipo «estás a 4 pasos de ser desarrollador» avisando de que es necesario pulsar ese número de veces para activar el modo de depuración.

Processing Android ajustes opciones de desarrolloProcessing Android ajustes depuración USB

En determinadas circunstancias, cuando se conectan y desconectan dispositivos USB, es posible que no aparezcan en la lista para seleccionarlos. Para resolver este inconveniente, la entrada Reset connections reinicia el servicio ADB y vuelve a buscar los dispositivos conectados.

Processing IDE Android modo programación ADB reset connections

También desde el menú Android, se pueden configurar los permisos que necesitará la aplicación que se está desarrollando para poder ejecutarse en un SO Android. Por razones de seguridad, al instalar un APK en Android el sistema informa al usuario sobre los recursos (cámara, contactos, almacenamiento…) que el programa solicita utilizar. Estos requerimientos, permisos, deben ser declarados al preparar el programa.

Processing IDE Android modo programación sketch permissions permisos

La entrada Sketch Permisions del menú Android muestra un cuadro de diálogo con los nombres de las constantes que representan el acceso a los diferentes recursos del sistema que requerirán autorización del usuario para poder utilizarse. Basta con activarlos marcando la casilla a la izquierda del nombre para solicitar la autorización al instalar el APK o ejecutar el programa.

Processing Android selector de permisos

Para muchos aspectos de la configuración de la aplicación Android utiliza un documento en formato XML denominado AndroidManifest.xml. En este documento, entre otros aspectos, se almacenan los permisos que se han seleccionado en el diálogo de Processing. Las líneas resaltadas en el código de abajo corresponden con los permisos para las comunicaciones Bluetooth marcados en el ejemplo de la captura de pantalla de arriba.

Ejecutar el proyecto Processing en un dispositivo Android o en un emulador

En el modo de programación Java de Processing, con el menú Sketch se puede ejecutar la aplicación en una ventana (con la entrada Ejecutar) o a pantalla completa (con la entrada Presentar) independiente del tamaño de la zona definida para los gráficos. Los botones de reproducción y parada a la izquierda de la zona de herramientas del Processing Development Environment (PDE), que queda bajo el menú, permiten ejecutar y detener la aplicación.

Trabajando con el modo de programación para Android Processing, estas entradas del menú Sketch se sustituyen por Run on Device, que corresponde con el botón de reproducción, y Run on Emulator.

Processing IDE Android modo programación menú Sketch

La entrada Run on Device utilizará el dispositivo físico seleccionado en la lista de la entrada Select device (del menú Android) de entre los conectados al Android Debug Bridge (ADB) que estén disponibles (con el modo de desarrollo activado). Como el programa se ejecuta en modo depuración, las salidas de print y println se muestran en la consola del Processing Development Environment (PDE) aunque el programa estará funcionando en el dispositivo móvil.

Processing IDE Android modo programación run device ejecutar dispositivo

La entrada Run on Emulator del menú Android utilizará el dispositivo previamente configurado en el Android Virtual Device (AVD). Como es lógico, la ejecución en un dispositivo emulado es mucho más lenta que en un dispositivo real. Para minimizar los efectos de este inconveniente, es deseable utilizar una versión con aceleración hardware para la emulación, preferiblemente la de la plataforma en la que funciona el emulador (por ejemplo x86_64), al configurar el dispositivo virtual.

Processing IDE Android modo programación run emulator ejecutar emulador

Exportar el proyecto de Processing a Android

Una vez que el desarrollo del proyecto en Processing ha terminado, se han realizado las pruebas correspondientes y se han depurado los posibles errores, puede que el producto esté terminado, en cuyo caso habría que generar la aplicación para instalarla en los dispositivos Android o puede que se haya utilizado Processing para elaborar la parte de presentación de datos de un proyecto mayor, en cuyo caso habría que seguir trabajando, probablemente con Android Studio.

Processing IDE Android modo programación menú archivo

Desde el IDE de Processing (PDE), es posible generar un proyecto para Android Studio a partir del sketch que se esté editando; para hacerlo, se utiliza la entrada Export Android Project del menú Archivo. El proyecto generado se grabará automáticamente en una carpeta llamada android, que se crea dentro de la carpeta del sketch.

Processing IDE Android modo programación exportar proyecto Android Studio

Para generar el paquete con la aplicación para Android (APK) se utiliza la entrada Export Signed Package del menú Archivo del PDE. Como su nombre sugiere, este proceso requiere un documento con una firma digital (un certificado digital) para garantizar la autoría original de la la aplicación a lo largo de toda su vida útil (las diferentes actualizaciones del programa).

Processing IDE Android modo programación exportar apk signed package

Para obtener una firma digital válida para la Google Play Store es necesario disponer de una cuenta de desarrollador, que a su vez requerirá de una cuenta en Google y un pago (que es, en el momento de escribir este texto, de 25 $). Afortunadamente, para el proceso de depuración previo a la publicación, es posible utilizar un certificado digital autofirmado, sin coste, aunque sin reconocimiento a la hora de publicar la aplicación en la tienda de aplicaciones de Google.

La primera vez que se utiliza la entrada Export Signed Package del menú Archivo probablemente no habrá disponible todavía una firma digital, en tal caso, el PDE mostrará el cuadro de diálogo de gestión del almacenamiento de claves con el que se podrá crear un certificado digital autofirmado indicando una clave para el almacenamiento y opcionalmente información que lo vincule al desarrollador.

Processing Android keystore manager gestor almacenamiento claves

Una vez que se ha creado el depósito de claves puede reutilizarse para firmar cada nueva aplicación que se desarrolle con Processing. En lugar de mostrar el gestor de almacenamiento, el PDE solicitará solamente la clave que se ha definido anteriormente. Al tratarse de una firma de depuración (no del certificado digital de desarrollador) no es especialmente grave olvidar la contraseña; para seguir generando las aplicaciones bastará con crear una nueva clave, pulsando el botón Reset password, cuando se solicite.

Processing Android keystore manager clave depósito

La firma de los paquetes de aplicación de Android (APK) no es algo que dependa de Processing sino del sistema de desarrollo utilizado por Android, basado, a su vez, en Java. Si existen en el sistema diferentes versiones del SDK de Android, del SDK Java o si se han alterado las ubicaciones por defecto de las instalaciones de esas aplicaciones, es posible que el PDE no localice el depósito de claves o la herramienta para gestionarlo.

Si el problema es que Processing no encuentra la herramienta de Java de gestión de claves, keytool, la solución puede ser sencilla: crear un enlace en la carpeta que espera Processing o incluso copiarlo en ella. El mensaje de error que muestra Processing al tratar de exportar el APK incluye la ruta a la carpeta en la que espera encontrar keytool.

IDE Processing keytool no encontrado

Si el inconveniente es que Processing no localiza el depósito de claves (a veces este problema se manifiesta mostrando un error en la clave) la solución puede ser revisar manualmente la ruta y en su caso copiar los archivos en el lugar y con el nombre correcto. El certificado digital que usa Processing está en el documento android-release-key.keystore dentro de la carpeta keystore, contenida a su vez en la carpeta que almacena los componentes de Processing. El certificado digital que utiliza Android para el proceso de depuración tiene el nombre debug.keystore y está grabado en la carpeta ~/.android, la carpeta .android de la carpeta del usuario, que en Windows suele estar en C:\Users

Processing Android Windows ruta certificado firma digital carpeta keystore

Ejecutar en Android aplicaciones con certificados autofirmados

Salvo que se disponga de la firma digital de una cuenta de desarrollador de Google, el sistema operativo Android no permitirá ejecutar sin más las aplicaciones. Esta medida asegura que no se instale un programa peligroso para el usuario, que no ha sido verificado por la Google Play Store. Si el usuario confía en una aplicación, puede instalarla desactivando, normalmente de forma temporal, esta restricción.

Para poder instalar aplicaciones autofirmadas es necesario activar la opción «Orígenes desconocidos» (permitir la instalación de aplicaciones de origen desconocido) que se encuentra dentro del panel de ajustes, en el bloque denominado Seguridad.

Android ajustes seguridadAndroid ajustes seguridad orígenes desconocidos

Al pulsar sobre la opción «Orígenes desconocidos», y antes de activarla, el sistema pide confirmación, advirtiendo de que utilizar aplicaciones sin firma reconocida es un riesgo de seguridad, especialmente para la privacidad e integridad de los datos manejados por el dispositivo. Por este serio riesgo de seguridad es muy importante revocar posteriormente el permiso de instalación de aplicaciones de terceros.

Android ajustes seguridad permitir orígenes desconocidos avisoAndroid ajustes seguridad orígenes desconocidos aceptados

Una vez que se ha autorizado la instalación de aplicaciones que provienen de orígenes desconocidos (autofirmadas) se pueden instalar los APK generados por Processing. Para hacerlos, hay que explorar la ubicación en la que se encuentren, pulsar sobre el nombre del APK y, en su caso, aceptar el acceso a los recursos que necesite la aplicación.

Processing Android APK aplicación instalar explorarProcessing Android APK aplicación pulsar seleccionar instalar

Processing Android APK aplicación instalar permisosProcessing Android APK aplicación instalada

Código Processing específico para Android

Algunas de las operaciones de Processing en su modo convencional (Java) no pueden utilizarse en el modo de programación para Android y, al contrario, otras operaciones solo están disponibles desarrollando para Android y no para Java. En ambos grupos se trata de una pequeña cantidad y se trata de las funciones que cabría esperar por el contexto de ejecución o por la versión (métodos obsoletos).

En el grupo de métodos que no funcionan desarrollando para Processing están, por ejemplo, los que se utilizan para almacenar la salida del sketch (como beginRecord o beginRaw). Utilizando la entrada táctil del dispositivo Android tampoco tienen mucho sentido las operaciones sobre el cursor, el ratón, el teclado… aunque cuando es posible, se trasponen a un recurso equiparable, como keyCode y las constantes de KeyEvent para los botones correspondientes. Los recursos para generar la imagen dependen del sistema operativo (el render FX2D utiliza JavaFX), así que solamente funcionarán cuando estén disponibles (en Android, de hecho, solo P2D y P3D).

Con respecto a las funciones específicas del modo de programación para Android, se pueden organizar atendiendo a las características específicas de este sistema y de los dispositivos en los que funciona.

Verificar los permisos en tiempo de ejecución

Al hablar sobre la configuración del destino del proyecto con el menú Android se explicaba cómo declarar los permisos que la aplicación iba a necesitar. En tiempo de ejecución se pueden consultar esos permisos utilizando checkPermission y pasando como argumento el nombre del permiso que se verifica, que será una de las constantes definidas en Manifest.permission y tendrá el mismo nombre que las mostradas en el diálogo de asignación de permisos.

Cuando el usuario del dispositivo autoriza en tiempo de ejecución el uso de las características más relacionadas con la privacidad (las denominadas peligrosas) se lanza el evento onPermissionsGranted, que puede utilizarse dentro del programa en Processing para ejecutar las operaciones que correspondan a esa circunstancia, por ejemplo, acceder a la localización del dispositivo.

Control de la orientación de la pantalla

El método orientation permite elegir (forzar) una orientación para la presentación gráfica en el dispositivo. La principal finalidad de esta función, además de elegir la presentación, es evitar el reinicio de la aplicación al girar el dispositivo. Espera una de dos constantes: LANDSCAPE, para que la orientación sea horizontal o PORTRAIT, para que la orientación sea obligatoriamente vertical aunque el dispositivo esté en posición horizontal.

Desafortunadamente, este recurso no siempre funciona (o no en todas las versiones y dispositivos) así que, algunas veces, será necesario forzar manualmente la orientación elegida, accediendo al documento AndroidManifest.xml para cambiar las propiedades de activity con una configuración como la de la línea resaltada en el ejemplo de abajo, que obliga a que la presentación sea horizontal con la propiedad android:screenOrientation y el valor landscape.

Lógicamente, utilizando el valor portrait para la propiedad android:screenOrientation en el documento AndroidManifest.xml se fuerza a que la aplicación funcione en vertical aunque el dispostivo se oriente horizontalmente, evitando además el reinicio de la actividad si se gira.

Documentos asociados al sketch de Processing para Android

En Processing se utiliza la carpeta data, ubicada dentro de la carpeta del sketch que se está desarrollado, para almacenar los documentos asociados al mismo, y esta circunstancia es extensiva al modo de programación para Android, que incluirá el contenido en el APK.

Al utilizar el modo de programación para Android se crea también, dentro de la carpeta del sketch, el documento AndroidManifest.xml, del que ya se ha hablado, la carpeta code con el documento sketch.properties y cada vez que se exporta el proyecto para Android o se genera el APK una carpeta android (seguida de la fecha cuando se genera el APK) con el contenido «convencional» de un programa para Android desde el cual se creará la aplicación.

Dentro de esta carpeta android hay algún contenido que puede ser interesante modificar a mano; por ejemplo, dentro de la carpeta res y clasificado por resoluciones, a su vez en otras capetas, se almacenan los iconos de la aplicación, que pueden sustituirse por versiones propias para personalizar más el producto final.

Las especificaciones de estos contenidos pueden encontrarse en la documentación para desarrolladores de Android. Aunque la idea de programar para Android utilizando Processing es precisamente simplificar el trabajo y no tener que atender a las consideraciones específicas del sistema de desarrollo de este sistema operativo, hay algunos aspectos que es útil tener presente; entre ellos, es especialmente importante considerar la documentación de referencia sobre el documento AndroidManifest.xml. En esta documentación es posible encontrar gran cantidad de información sobre cualquier aspecto del desarrollo con Android que no dependa de Processing, como la guía de estilo de los iconos en Android para integrar de forma gráficamente coherente en el sistema la aplicación que se está desarrollando.

Víctor Ventura

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

Más entradas - Página web

Sígueme:
TwitterLinkedIn

Seguir Víctor Ventura:

Programador multimedia y web + IoT. Mejor con software libre.

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

7 Respuestas

  1. Víctor

    Muy buen artículo, es justo la información que estaba buscando, estoy empezando a programar en Processing y tenía curiosidad sobre que habría que hacer para pasar el código escrito a un apk y poder usarlo en mi móvil, o más tarde ponerlo en la PlayStore. Muchas gracias!

    • Víctor Ventura

      Hi!

      Maybe. My English is very poor but I want to help 🙂

      Can you tell me (or us) more precisely what do you need?

      On the other hand, it sounds a bit strange to me because there are a lot of sites in English with a lot of information about programming with Processing (and with Processing for Android) And one of the reasons for me to write my blog is to give Spanish speaking people this information.

      Anyway, thanks a lot for reading polaridad.es

  2. ricardo

    Dios mío, gracias por tu artículo, está excelente. Ojalá hubiesen más artículos parecidos al tuyo en la www.

  3. Jorge

    Excelente artículo! Soy un programador y creador electrónico amateur, y realmente lo que escribiste me aclaro muchísimos puntos! Muchas gracias!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *