InputDevice.java revision e33348ba54cd68d6936cffd4507037c14d4b10c2
1c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown/* 2c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Copyright (C) 2010 The Android Open Source Project 3c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 4c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License"); 5c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * you may not use this file except in compliance with the License. 6c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * You may obtain a copy of the License at 7c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 8c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * http://www.apache.org/licenses/LICENSE-2.0 9c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 10c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Unless required by applicable law or agreed to in writing, software 11c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS, 12c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * See the License for the specific language governing permissions and 14c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * limitations under the License. 15c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 16c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 17c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownpackage android.view; 18c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 19c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown/** 20c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Describes the capabilities of a particular input device. 21c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <p> 22c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Each input device may support multiple classes of input. For example, a multifunction 23c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * keyboard may compose the capabilities of a standard keyboard together with a track pad mouse 24c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * or other pointing device. 25c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * </p><p> 26c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Some input devices present multiple distinguishable sources of input. For example, a 27c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * game pad may have two analog joysticks, a directional pad and a full complement of buttons. 28c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Applications can query the framework about the characteristics of each distinct source. 29c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * </p><p> 30c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * As a further wrinkle, different kinds of input sources uses different coordinate systems 31c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * to describe motion events. Refer to the comments on the input source constants for 32c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the appropriate interpretation. 33c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 34c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownpublic final class InputDevice { 35c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown private int mId; 36c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown private String mName; 37c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown private int mSources; 38c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 39c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 40c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * A mask for input source classes. 41c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 42c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Each distinct input source constant has one or more input source class bits set to 43c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * specify the desired interpretation for its input events. 44c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 45c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_CLASS_MASK = 0x000000ff; 46c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 47c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 48c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source has buttons or keys. 49c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Examples: {@link #SOURCE_KEYBOARD}, {@link #SOURCE_GAMEPAD}, {@link #SOURCE_DPAD}. 50c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 51c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * A {@link KeyEvent} should be interpreted as a button or key press. 52c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 53e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Use {@link #hasKey} to query whether the device supports a particular button or key. 54c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 55c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_CLASS_BUTTON = 0x00000001; 56c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 57c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 58c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a pointing device associated with a display. 59c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Examples: {@link #SOURCE_TOUCHSCREEN}, {@link #SOURCE_MOUSE}. 60c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 61c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * A {@link MotionEvent} should be interpreted as absolute coordinates in 62c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * display units according to the {@link View} hierarchy. Pointer down/up indicated when 63c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the finger touches the display or when the selection button is pressed/released. 64c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 65c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Use {@link #getMotionRange} to query the range of the pointing device. Some devices permit 66c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touches outside the display area so the effective range may be somewhat smaller or larger 67c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * than the actual display size. 68c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 69c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_CLASS_POINTER = 0x00000002; 70c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 71c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 72c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a trackball navigation device. 73c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Examples: {@link #SOURCE_TRACKBALL}. 74c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 75c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * A {@link MotionEvent} should be interpreted as relative movements in device-specific 76c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * units used for navigation purposes. Pointer down/up indicates when the selection button 77c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * is pressed/released. 78c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 79c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Use {@link #getMotionRange} to query the range of motion. 80c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 81c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_CLASS_TRACKBALL = 0x00000004; 82c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 83c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 84c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is an absolute positioning device not associated with a display 85c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (unlike {@link #SOURCE_CLASS_POINTER}). 86c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 87c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * A {@link MotionEvent} should be interpreted as absolute coordinates in 88c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * device-specific surface units. 89c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 90c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Use {@link #getMotionRange} to query the range of positions. 91c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 92c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_CLASS_POSITION = 0x00000008; 93c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 94c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 95c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a joystick. 96c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 97c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * A {@link KeyEvent} should be interpreted as a joystick button press. 98c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 99c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * A {@link MotionEvent} should be interpreted in absolute coordinates as a joystick 100c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * position in normalized device-specific units nominally between -1.0 and 1.0. 101c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 102c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Use {@link #getMotionRange} to query the range and precision of motion. 103c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 104c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_CLASS_JOYSTICK = 0x00000010; 105c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 106c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 107c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is unknown. 108c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 109c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_UNKNOWN = 0x00000000; 110c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 111c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 112c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a keyboard. 113c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 114c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_BUTTON 115c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 116c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_KEYBOARD = 0x00000100 | SOURCE_CLASS_BUTTON; 117c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 118c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 119c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a DPad. 120c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 121c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_BUTTON 122c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 123c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_DPAD = 0x00000200 | SOURCE_CLASS_BUTTON; 124c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 125c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 126c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a gamepad. 127c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 128c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_BUTTON 129c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 130c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_GAMEPAD = 0x00000400 | SOURCE_CLASS_BUTTON; 131c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 132c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 133c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a touch screen pointing device. 134c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 135c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_POINTER 136c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 137c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_TOUCHSCREEN = 0x00001000 | SOURCE_CLASS_POINTER; 138c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 139c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 140c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a mouse pointing device. 141c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * This code is also used for other mouse-like pointing devices such as trackpads 142c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * and trackpoints. 143c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 144c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_POINTER 145c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 146c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_MOUSE = 0x00002000 | SOURCE_CLASS_POINTER; 147c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 148c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 149c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a trackball. 150c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 151c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_TRACKBALL 152c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 153c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_TRACKBALL = 0x00010000 | SOURCE_CLASS_TRACKBALL; 154c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 155c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 156c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a touch pad or digitizer tablet that is not 157e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * associated with a display (unlike {@link #SOURCE_TOUCHSCREEN}). 158c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 159c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_POSITION 160c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 161c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_TOUCHPAD = 0x00100000 | SOURCE_CLASS_POSITION; 162c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 163c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 164c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a joystick mounted on the left or is a standalone joystick. 165c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 166c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_JOYSTICK 167c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_JOYSTICK_LEFT = 0x01000000 | SOURCE_CLASS_JOYSTICK; 169c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 170c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 171c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The input source is a joystick mounted on the right. 172c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 173c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #SOURCE_CLASS_JOYSTICK 174c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 175c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int SOURCE_JOYSTICK_RIGHT = 0x02000000 | SOURCE_CLASS_JOYSTICK; 176c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 177e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 178e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#x}. 179e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 180e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 181e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 182c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_X = 0; 183e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 184e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 185e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#y}. 186e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 187e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 188e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 189c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_Y = 1; 190e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 191e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 192e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#pressure}. 193e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 194e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 195e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 196c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_PRESSURE = 2; 197e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 198e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 199e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#size}. 200e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 201e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 202e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 203c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_SIZE = 3; 204e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 205e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 206e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#touchMajor}. 207e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 208e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 209e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 210c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_TOUCH_MAJOR = 4; 211e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 212e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 213e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#touchMinor}. 214e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 215e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 216e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 217c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_TOUCH_MINOR = 5; 218e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 219e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 220e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#toolMajor}. 221e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 222e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 223e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 224c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_TOOL_MAJOR = 6; 225e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 226e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 227e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for {@link MotionEvent.PointerCoords#toolMinor}. 228e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 229e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 230e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 231c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final int MOTION_RANGE_TOOL_MINOR = 7; 232c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 233e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 234e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Constant for retrieving the range of values for 235e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * {@link MotionEvent.PointerCoords#orientation}. 236e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * 237e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @see #getMotionRange 238e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 239e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown public static final int MOTION_RANGE_ORIENTATION = 8; 240e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 241e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 242e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Gets information about the input device with the specified id. 243e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @param id The device id. 244e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return The input device or null if not found. 245e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 246c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static InputDevice getDevice(int id) { 247e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 248e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return null; 249c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 250c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 251c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 252c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Gets the name of this input device. 253c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @return The input device name. 254c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 255c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public String getName() { 256c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown return mName; 257c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 258c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 259c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 260c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Gets the input sources supported by this input device as a combined bitfield. 261c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @return The supported input sources. 262c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 263c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public int getSources() { 264c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown return mSources; 265c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 266c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 267c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 268c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Gets the key character map associated with this input device. 269c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @return The key character map. 270c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 271c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public KeyCharacterMap getKeyCharacterMap() { 272c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown return KeyCharacterMap.load(mId); 273c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 274c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 275e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 276e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Gets information about the range of values for a particular {@link MotionEvent} 277e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * coordinate. 278e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @param range The motion range constant. 279e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return The range of values, or null if the requested coordinate is not 280e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * supported by the device. 281e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 282c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public MotionRange getMotionRange(int range) { 283e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 284e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return null; 285c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 286c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 287e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 288e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Returns true if the device supports a particular button or key. 289e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @param keyCode The key code. 290e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return True if the device supports the key. 291e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 292e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown public boolean hasKey(int keyCode) { 293e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 294e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return false; 295c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 296c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 297e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 298e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Provides information about the range of values for a particular {@link MotionEvent} 299e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * coordinate. 300e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 301c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final class MotionRange { 302e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 303e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Gets the minimum value for the coordinate. 304e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return The minimum value. 305e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 306e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown public float getMin() { 307e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 308e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return 0; 309e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown } 310e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 311e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 312e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Gets the maximum value for the coordinate. 313e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return The minimum value. 314e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 315e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown public float getMax() { 316e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 317e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return 0; 318e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown } 319e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 320e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 321e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Gets the range of the coordinate (difference between maximum and minimum). 322e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return The range of values. 323e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 324e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown public float getRange() { 325e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 326e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return 0; 327e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown } 328e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 329e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 330e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Gets the extent of the center flat position with respect to this coordinate. 331e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * For example, a flat value of 8 means that the center position is between -8 and +8. 332e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * This value is mainly useful for calibrating joysticks. 333e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return The extent of the center flat position. 334e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 335e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown public float getFlat() { 336e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 337e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return 0; 338e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown } 339e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown 340e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown /** 341e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * Gets the error tolerance for input device measurements with respect to this coordinate. 342e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * For example, a value of 2 indicates that the measured value may be up to +/- 2 units 343e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * away from the actual value due to noise and device sensitivity limitations. 344e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown * @return The error tolerance. 345e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown */ 346e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown public float getFuzz() { 347e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown // TODO 348e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown return 0; 349e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown } 350e33348ba54cd68d6936cffd4507037c14d4b10c2Jeff Brown } 351c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown} 352