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.
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.