官术网_书友最值得收藏!

Detecting supported device input types

A variety of input types are available across Android devices and depending upon the project we are working on, we may need to verify that any particular device supports the intended modes of user interaction. Fortunately, there are a number of ActionScript classes to assist us in discovering device capabilities in regard to user input.

How to do it...

We will need to use internal classes to detect whether or not multitouch is supported:

  1. First, import the following classes into your project in order to check various input types across devices:
    import flash.display.Sprite;
    import flash.display.Stage;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;
    import flash.system.Capabilities;
    import flash.system.TouchscreenType;
    import flash.text.TextField;
    import flash.text.TextFormat;
    import flash.ui.Keyboard;
    import flash.ui.KeyboardType;
    import flash.ui.Mouse;
    
  2. Declare a TextField and TextFormat object to allow visible output upon the device:
    private var traceField:TextField;
    private var traceFormat:TextFormat;
    
  3. We will now set up our TextField, apply a TextFormat, and add it to the DisplayList. Here, we create a method to perform all of these actions for us:
    protected function setupTextField():void {
    traceFormat = new TextFormat();
    traceFormat.bold = true;
    traceFormat.font = "_sans";
    traceFormat.size = 32;
    traceFormat.align = "center";
    traceFormat.color = 0x333333;
    traceField = new TextField();
    traceField.defaultTextFormat = traceFormat;
    traceField.selectable = false;
    traceField.mouseEnabled = false;
    traceField.width = stage.stageWidth;
    traceField.height = stage.stageHeight;
    addChild(traceField);
    }
    
  4. Now, we will simply go through and check the data returned from invoking a number of properties off of these classes. In the case of the following example, we are performing this within the following method:
    protected function checkInputTypes():void {
    traceField.appendText("Touch Screen Type: " + flash.system.Capabilities.touchscreenType + "\n");
    traceField.appendText("Mouse Cursor: " + flash.ui.Mouse. supportsCursor + "\n");
    traceField.appendText("Physical Keyboard Type: " + flash. ui.Keyboard.physicalKeyboardType + "\n");
    traceField.appendText("Virtual Keyboard: " + flash.ui.Keyboard. hasVirtualKeyboard + "\n");
    }
    
  5. The result will appear similar to the following:

How it works...

The Flash platform runtimes are able to report certain device capabilities when invoked. The data reported will allow us to tailor the user experience, based upon what sort of input types are detected by the runtime.

Here follows a basic rundown of the four input types that can be reported upon:

flash.system.Capabilities.touchscreenType

Invoking this method will return a String constant of FINGER, STYLUS, or NONE. It informs us whether some sort of direct screen interaction is available on the device, and if so, what sort. In the case of Android devices, this will always return FINGER.

flash.ui.Mouse.supportsCursor

Invoking this method will return a Boolean of true or false. It simply informs us whether a persistent mouse cursor is available on the device. In the case of Android devices, this will most likely always return false.

flash.ui.Keyboard.physicalKeyboardType

Invoking this method will return a String constant of ALPHANUMERIC, KEYPAD, or NONE. It informs us whether some sort of dedicated physical keyboard is available on the device, and if so, what sort. In the case of Android devices, this will most likely always return NONE, even though certain Android models do have a physical keyboard.

flash.ui.Keyboard.hasVirtualKeyboard

Invoking this method will return a Boolean of true or false. It simply informs us whether a virtual (software) keyboard is available on the device. In the case of Android devices, this will most likely always return true.

主站蜘蛛池模板: 青海省| 连州市| 嘉峪关市| 京山县| 扬州市| 乐山市| 凤台县| 韶山市| 合江县| 白沙| 奉新县| 徐汇区| 余干县| 惠东县| 东阳市| 临西县| 绥德县| 城固县| 治县。| 乌海市| 黄龙县| 平陆县| 福泉市| 民勤县| 许昌县| 金沙县| 松原市| 阜新市| 剑阁县| 饶河县| 乌海市| 虹口区| 阿瓦提县| 历史| 唐河县| 桑日县| 嘉禾县| 仲巴县| 密云县| 桂平市| 惠水县|