Aplicaciones Adobe Air
Last updated
Last updated
Adobe Air es una tecnología multiplataforma que nos permite llevar las aplicaciones Flash y ActionScript a distintos dispositivos. Tenemos la opción de crear estas aplicaciones con la herramienta Flash, o bien utilizar el compilador abierto Flex. Vamos a centrarnos en el desarrollo de aplicaciones Adobe AIR con Flex SDK.
Vamos a ver los pasos que deberemos seguir para instalar los SDK de Flex y Adobe AIR:
En primer lugar deberemos descargar Apache Flex SDK:
Ejecutaremos el instalador, y éste se encargará de descargar todos los elementos necesarios, incluyendo Adobe AIR y Flex SDK.
Introduciremos el directorio $FLEX_SDK_HOME/bin
en el PATH
para así tener el compilador accesible. Esto podemos hacerlo editando el fichero .bash_profile
de nuestra carpeta personal ($HOME
) e introduciendo al comienzo la siguiente línea:
Con esto ya podremos utilizar las herramientas de desarrollo de Flex y Adobe AIR desde línea de comando.
Vamos a ver en primer lugar la forma de crear una aplicación Adobe AIR en línea de comando, y posteriormente estudiaremos la forma de hacerlo desde un entorno integrado como IntelliJ.
En primer lugar crearemos un fichero XML descriptor de la aplicación como el siguiente, al que llamaremos HolaMundo-app.xml
:
Tras definir el descriptor, introduciremos el código ActionScript de la clase principal de la aplicación. Por ejemplo, podríamos crear un fichero HolaMundo.as
como el siguiente:
Una vez creado un proyecto, deberemos construirlo utilizando las herramientas en línea de comando de Flex SDK:
En primer lugar compilaremos el código de nuestra aplicación. Los fuentes podrán ser clases ActionScript (.as
) o fichero MXML (.mxml
). En cualquiera de los dos casos deberemos compilarlos con amxmlc
:
Esto generará un fichero SWF (en el ejemplo anterior HolaMundo.swf
).
Una vez compilado podemos lanzar la aplicación con la herramienta adl
, especificando el descriptor XML:
En el fichero XML se indica que la ventana inicial está en un fichero HolaMundo.swf
, que es el fichero que hemos generado como resultado de la compilación en el paso anterior, y será el que se ejecute.
Por último, deberemos crear un APK o IPA para poder instalar la aplicación en dispositivos Android o iOS.
Para crear el APK en primer lugar deberemos crear un certificado con el que firmar la aplicación:
Esto deberemos hacerlo una única vez. Una vez tengamos un certificado, podremos generar el APK firmado con el siguiente comando:
Podremos copiar este fichero APK a dispositivos Android para instalar la aplicación en ellos.
En el caso de iOS tendremos que generar un IPA firmado con nuestro certificado de desarrollador. Para ello deberemos exportar el certificado (y la clave privada) desde Acceso a llaveros a un fichero .p12
, protegiéndolo con una contraseña. Al crear el IPA deberemos proporcionar este fichero .p12
, su contraseña, y el perfil de aprovisionamiento .mobileprovision
:
Una vez generado el fichero IPA podremos probarlo en un dispositivo móvil copiándolo a iTunes y sincronizando con el dispositivo.
Podemos crear aplicaciones Adobe AIR desde el entorno IntelliJ.
Para crea un proyecto AIR en primer lugar seleccionaremos la opción Archivo > New Project... y el tipo de proyecto Flash. Dentro de este tipo configuraremos el proyecto de la siguiente forma:
Como Target platform indicaremos Mobile
Como Output type indicaremos Application
Marcamos las plataformas para las que queremos generar la aplicación (Android e iOS).
Si marcamos la casilla Create sample app nos creará un fichero .mxml
como plantilla inicial de la aplicación.
Debemos indicar el SDK de Flex y Adobe AIR a utilizar. Si no tenemos ninguno configurado todavía deberemos pulsar sobre el botón ...
junto a este campo para configurar uno. Este proceso de configuración del SDK se explica en el siguiente apartado.
Si no tenemos configurado todavía un SDK, pulsaremos sobre el botón ...
junto al campo de selección de SDK para configurar uno nuevo. Esto tendremos que hacerlo sólo la primera vez que vayamos a crear un proyecto Adobe AIR.
En la pantalla Configure SDK añadiremos un SDK del tipo Flex/AIR SDK:
Seleccionaremos en el disco el directorio donde tenemos combinados Flex SDK y AIR SDK.
Es recomendable también que en la pestaña Documentation Paths del SDK que acabamos de añadir introduzcamos la URL en la que podemos encontrar la referencia de la API de ActionScript:
Una vez creado el proyecto, podemos ejecutarlo en el escritorio mediante la opción Run > Run 'Nombre del proyecto' o pulsando el botón de reproducción en la barra superior derecha:
Podemos también configurar el perfil de ejecución del proyecto para indicar si queremos ejecutar en emuladores, dispositivos reales, Android o iOS. Esto lo haremos con la opción Run > Edit Configurations.... Nos aparecerá una pantalla como la siguiente:
Podemos añadir al proyecto tanto ficheros ActionScript como ficheros MXML, pulsando sobre él con el botón derecho y seleccionando la opción New > ActionScript Class o New > MXML Component:
Si añadimos una clase ActionScript podríamos introducir el código del Hola Mundo que realizamos en un apartado anterior.
Podemos hacer que la clase que hemos creado sea la clase principal de la aplicación entrando en File > Project Structure... > Modules y modificando el campo Main class de nuestro módulo:
Podemos reproducir vídeo con un objeto de tipo Video
. En primer lugar, podemos instanciar un objeto de este tipo y añadirlo a la pantalla con addChild
. En este ejemplo se muestra este componente abarcando todo el espacio de la escena (stage):
Una vez creado el visor de vídeo, creamos una conexión para acceder al vídeo remoto. En caso de querer acceder a video HTTP por descarga progresiva o vídeo local estableceremos la conexión pasando null
como parámetro a connect
. Sólo pasaremos una dirección cuando vayamos a conectar con un Flash Media Server:
Tras crear la conexión, crearemos a partir de ella un NetStream
Tenemos que proporcionar obligatoriamente un método para tratar los objetos de error, aunque los ignoremos, ya que de no hacerlo así obtendremos un error:
Por último, vinculamos el NetStream
con el reproductor de vídeo y comenzamos la reproducción proporcionando la URL del vídeo a reproducir:
A continuación vemos el ejemplo completo del reproductor de vídeo:
La reproductor de vídeo proveniente de un Flash Media Server difiere del caso anterior en que previamente debemos establecer la conexión con este servidor.
En primer lugar realizaremos la conexión y definiremos un método de callback para que nos avise cuando la conexión esté establecida:
Implementaremos el callback netStatusHandler
de forma que cuando se haya establecido la conexión comience la reproducción del vídeo:
La reproducción del vídeo se hará de forma similar al caso anterior:
En este caso, en el método play
indicaremos el nombre del vídeo a reproducir dentro del Flash Media Server
Podemos de forma sencilla reproducir en pantalla vídeo capturado con la cámara. En primer lugar crearemos un objeto Camera
:
Este método obtiene la cámara por defecto del dispositivo. Con Camera.names
podríamos ver los nombres de todas las cámaras disponibles, y con Camera.getCamera(nombre)
podríamos obtener cualquiera de ellas.
También podemos configurar la calidad del vídeo capturado por la cámara:
De la misma forma, también podríamos especificar la captura del micrófono, en este caso mediante un objeto Microphone
:
Una vez hecho esto, podemos vincular con attachCamera
la cámara al visor de vídeo, y con esto comenzará a mostrarse en pantalla:
Podemos ver el ejemplo completo a continuación:
Una vez visto como mostrar vídeo de una URL, de un servidor Flash Media Server, y de la cámara, vamos a ver cómo podemos capturar vídeo de la cámara y enviarlo a un servidor RTMP.
Lo primero que deberemos hacer es establecer la conexión con el servidor RTMP:
Definimos el siguiente callback con el que estaremos pendientes del momento en el que se establece la conexión con el servidor, para empezar a publicar, y del momento en el que comienza la publicación, para comenzar a mostrar un preview en nuestra aplicación:
Cuando se haya establecido la conexión podremos comenzar la publicación de vídeo. Esto lo haremos con el método publish
de la clase NetStream
. Antes podremos configurar la calidad del vídeo que vamos a retransmitir:
Una vez detectemos que la publicación ha comenzado, podríamos reproducir el vídeo publicado en el servidor:
A continuación se muestra el ejemplo completo:
Si requerimos usuario y password para poder publicar vídeo RTMP en Wowza desde nuestra aplicación Adobe AIR, estas credenciales se pueden proporcionar como parámetros del método NetConnection.connect
:
Sin embargo, en Wowza no podremos utilizar la configuración de autenticación estándar en RTMP, sino que necesitaremos añadir un módulo adicional. De hecho, deberemos dejar abierto el acceso a la aplicación vía RTMP desde la interfaz de Wowza para poder utilizar dicho módulo. Para ello:
Entramos en el administrador de Wowza, en la página de nuestra aplicación, por ejemplo live
.
Entramos en la sección Source Security y editamos la configuración.
En RTMP Sources indicamos Open (no authentication required).
Incorporaremos ahora la autenticación RTMP mediante el módulo adicional moduleOnConnectAuthenticate
. Dicho módulo se encuentra dentro de una colección de módulos adicionales que se proporcionan para Wowza en la siguiente página:
Para instalar y configurar el módulo de autenticación deberemos:
Descargar e instalar la colección de módulos anterior. Deberemos copiar el fichero wms-plugin-collection.jar
en el directorio ${WOWZA_HOME}/lib
, siendo ${WOWZA_HOME}
el directorio de instalación de Wowza.
Añadimos la configuración del módulo al fichero Application.xml
de la aplicación a configurar. Por ejemplo, si queremos configurar la aplicación live
, buscaremos dicho fichero en ${WOWZA_HOME}/conf/live
. En el fichero Application.xml
, introduciremos la siguiente configuración dentro de la etiqueta <Modules> ... </Modules>
:
Por defecto buscará la lista de usuarios en el fichero ${WOWZA_HOME}/conf/connect.password
. Podemos copiar el fichero publish.password
que se encuentra en el mismo directorio para utilizar los mismos usuarios para publicación que hemos configurado en Wowza.
Después de hacer esto reiniciaremos el servidor y tendremos habilitada la autentificación de fuentes RTMP con compatibilidad para el método NetConnection.connect
.
En el descriptor XML de la aplicación podemos especificar todos los permisos que necesitaríamos para esta aplicación en la plataforma Android. Podríamos tener algo como lo siguiente:
Para más información sobre Adobe AIR, guías y tutoriales, se puede acceder a la documentación oficial de la plataforma:
Referencia API ActionScript 3: