martes, 8 de noviembre de 2016

Desarrollo de Aplicaciones para Android con AIR y AS3



La capacidad de interactuar con un dispositivo mediante el tacto es una de las características comunes de la computación móvil y como veremos AIR tiene todo el soporte necesario para lograr esto.

En los siguientes capítulos se verá la forma de interceptar y reaccionar a esta forma de interacción con el usuario; ya sea a través de simples puntos de contacto o “GESTURES” más complejos, sin dejar de lado las tradicionales entradas de texto como es el teclado virtual que tiene nuestro dispositivo.

Para esto emplearemos el lenguaje de programación ActionScript3 además del SDK AIR y FLEX; contaremos también para nuestros desarrollos con el IDE FlashDevelop.

Detección de tipos de entrada de dispositivos móviles

Hay una variedad de tipos de entrada disponibles en dispositivos Android y dependiendo del proyecto en el cual estemos trabajando, necesitaremos de verificar el modo de interacción que tiene nuestro dispositivo con el usuario. Afortunadamente ActionScript3 proporciona una serie de clases que nos ayudan a lograr esto.


En este primer ejemplo veremos las clases internas que se utilizan para determinar el tipo de entradas de interacción con el usuario que soporta nuestro dispositivo.

import flash.display.Sprite;
import flash.system.Capabilities;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.ui.Keyboard;
import flash.ui.Mouse;

/**
* ...
* @author Alejandro
*/
public class DetectingSupportDeviceInput extends Sprite 
{
// variable de salida
private var traceField:TextField;
private var traceFormat:TextFormat;
public function DetectingSupportDeviceInput() 
{
init();
}

private function init():void 
{
setupTextField();
checkInputTypes();
}

private function checkInputTypes():void 
{
traceField.appendText("Touch Sceen Type : " + Capabilities.touchscreenType + "\n");
traceField.appendText("Mouse Cursor : " + Mouse.supportsCursor + "\n");
traceField.appendText("Teclado Fisico : " + Keyboard.physicalKeyboardType + "\n");
traceField.appendText("teclado Virtual : " + Keyboard.hasVirtualKeyboard + "\n");
}

private function setupTextField():void 
{
traceFormat = new TextFormat();
traceFormat.bold = true;
traceFormat.font = '_sans';
traceFormat.size = 12;
traceFormat.align = 'center';
traceFormat.color = '0xff5500';


traceField = new TextField();
traceField.defaultTextFormat = traceFormat;
traceField.selectable = false;
traceField.mouseEnabled = false;
traceField.width = stage.stageWidth;
traceField.height = stage.stageHeight;
addChild(traceField);

}

}
}

Los tiempos de ejecución de la plataforma informan de ciertas capacidades del dispositivo cuando se las invoca; estos datos permiten adaptar la experiencia del usuario en base al tipo de entrada que es detectada en tiempo de ejecución.
Los cuatro tipos básico de evento de entrada que puede captar son:


flash.system.Capabilities.touchscreenType

Este método devuelve una constante de tipo cadena con 3 valores: FINGER, STYLUS o NONE; e informa si existe algún tipo de interacción respecto a la pantalla del dispositivo, en el caso de dispositivos Android siempre devuelve la cadena FINGER.

flash.ui.Mouse.supportsCursor

Este método devuelve un valor booleano e informa si le cursor de ratón es persistente en el dispositivo, en caso de dispositivos Android lo más probable es que devuelva el valor de false.

flash.ui.Keyboard.physicalKeyboardType

Este método devuelve un valor de tipo cadena que puede tener los valores de ALFANUMERIC, KEYPAD o NONE e informa si existe algún teclado físico; algunos modelos de Android antes contaban con teclado físico pero en la mayoría de los casos devolverá el valor de NONE.

flash.ui.Keyboard.hasVirtualKeyboard


La invocación de este método devuelve un valor booleano informando la presencia de un teclado virtual que es lo más probable que cuente nuestro dispositivo Android.