19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1920e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brownimport android.graphics.Matrix; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.SystemClock; 236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brownimport android.util.SparseArray; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 26fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Object used to report movement (mouse, pen, finger, trackball) events. 27fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events may hold either absolute or relative movements and other data, 28fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * depending on the type of device. 29fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 30fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Overview</h3> 31dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * <p> 32fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events describe movements in terms of an action code and a set of axis values. 33fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The action code specifies the state change that occurred such as a pointer going 34fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * down or up. The axis values describe the position and other movement properties. 35dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 36fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * For example, when the user first touches the screen, the system delivers a touch 37fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * event to the appropriate {@link View} with the action code {@link #ACTION_DOWN} 38fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * and a set of axis values that include the X and Y coordinates of the touch and 39fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * information about the pressure, size and orientation of the contact area. 4033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p><p> 41fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Some devices can report multiple movement traces at the same time. Multi-touch 42fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * screens emit one movement trace for each finger. The individual fingers or 43fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * other objects that generate movement traces are referred to as <em>pointers</em>. 44fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events contain information about all of the pointers that are currently active 45fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * even if some of them have not moved since the last event was delivered. 46dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 47fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The number of pointers only ever changes by one as individual pointers go up and down, 48dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * except when the gesture is canceled. 49dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 50fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Each pointer has a unique id that is assigned when it first goes down 51fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (indicated by {@link #ACTION_DOWN} or {@link #ACTION_POINTER_DOWN}). A pointer id 52fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * remains valid until the pointer eventually goes up (indicated by {@link #ACTION_UP} 53fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * or {@link #ACTION_POINTER_UP}) or when the gesture is canceled (indicated by 54fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #ACTION_CANCEL}). 55fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 56fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The MotionEvent class provides many methods to query the position and other properties of 57fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * pointers, such as {@link #getX(int)}, {@link #getY(int)}, {@link #getAxisValue}, 58fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #getPointerId(int)}, {@link #getToolType(int)}, and many others. Most of these 59fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * methods accept the pointer index as a parameter rather than the pointer id. 60fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer index of each pointer in the event ranges from 0 to one less than the value 61fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * returned by {@link #getPointerCount()}. 62dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 63fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The order in which individual pointers appear within a motion event is undefined. 64fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Thus the pointer index of a pointer can change from one event to the next but 65fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the pointer id of a pointer is guaranteed to remain constant as long as the pointer 66fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * remains active. Use the {@link #getPointerId(int)} method to obtain the 67fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * pointer id of a pointer to track it across all subsequent motion events in a gesture. 68fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Then for successive motion events, use the {@link #findPointerIndex(int)} method 69fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * to obtain the pointer index for a given pointer id in that motion event. 70fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 71fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Mouse and stylus buttons can be retrieved using {@link #getButtonState()}. It is a 72fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * good idea to check the button state while handling {@link #ACTION_DOWN} as part 73fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * of a touch event. The application may choose to perform some different action 74fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * if the touch event starts due to a secondary button click, such as presenting a 75fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * context menu. 76fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 77fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 78fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Batching</h3> 79fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 80dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * For efficiency, motion events with {@link #ACTION_MOVE} may batch together 81dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * multiple movement samples within a single object. The most current 82dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * pointer coordinates are available using {@link #getX(int)} and {@link #getY(int)}. 83dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * Earlier coordinates within the batch are accessed using {@link #getHistoricalX(int, int)} 84dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * and {@link #getHistoricalY(int, int)}. The coordinates are "historical" only 85dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * insofar as they are older than the current coordinates in the batch; however, 86dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * they are still distinct from any other coordinates reported in prior motion events. 87dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * To process all coordinates in the batch in time order, first consume the historical 88dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * coordinates then consume the current coordinates. 89dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 90dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * Example: Consuming all samples for all pointers in a motion event in time order. 91dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p><pre><code> 92dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * void printSamples(MotionEvent ev) { 93dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * final int historySize = ev.getHistorySize(); 94dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * final int pointerCount = ev.getPointerCount(); 95dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * for (int h = 0; h < historySize; h++) { 96dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf("At time %d:", ev.getHistoricalEventTime(h)); 97dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * for (int p = 0; p < pointerCount; p++) { 98dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf(" pointer %d: (%f,%f)", 99dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * ev.getPointerId(p), ev.getHistoricalX(p, h), ev.getHistoricalY(p, h)); 100dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 101dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 102dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf("At time %d:", ev.getEventTime()); 103dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * for (int p = 0; p < pointerCount; p++) { 104dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf(" pointer %d: (%f,%f)", 105dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * ev.getPointerId(p), ev.getX(p), ev.getY(p)); 106dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 107dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 108fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </code></pre></p> 109fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 110fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Device Types</h3> 111fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 112fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The interpretation of the contents of a MotionEvent varies significantly depending 113fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * on the source class of the device. 114fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 115fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * On pointing devices with source class {@link InputDevice#SOURCE_CLASS_POINTER} 116fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as touch screens, the pointer coordinates specify absolute 117fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * positions such as view X/Y coordinates. Each complete gesture is represented 118fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * by a sequence of motion events with actions that describe pointer state transitions 119fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * and movements. A gesture starts with a motion event with {@link #ACTION_DOWN} 120fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * that provides the location of the first pointer down. As each additional 121fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * pointer that goes down or up, the framework will generate a motion event with 122fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #ACTION_POINTER_DOWN} or {@link #ACTION_POINTER_UP} accordingly. 123fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Pointer movements are described by motion events with {@link #ACTION_MOVE}. 124fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Finally, a gesture end either when the final pointer goes up as represented 125fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * by a motion event with {@link #ACTION_UP} or when gesture is canceled 126fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * with {@link #ACTION_CANCEL}. 127fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 128fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Some pointing devices such as mice may support vertical and/or horizontal scrolling. 129fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * A scroll event is reported as a generic motion event with {@link #ACTION_SCROLL} that 130fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * includes the relative scroll offset in the {@link #AXIS_VSCROLL} and 131fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #AXIS_HSCROLL} axes. See {@link #getAxisValue(int)} for information 132fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * about retrieving these additional axes. 133fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 134fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * On trackball devices with source class {@link InputDevice#SOURCE_CLASS_TRACKBALL}, 135fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the pointer coordinates specify relative movements as X/Y deltas. 136fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * A trackball gesture consists of a sequence of movements described by motion 137fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * events with {@link #ACTION_MOVE} interspersed with occasional {@link #ACTION_DOWN} 138fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * or {@link #ACTION_UP} motion events when the trackball button is pressed or released. 139fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 140fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * On joystick devices with source class {@link InputDevice#SOURCE_CLASS_JOYSTICK}, 141fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the pointer coordinates specify the absolute position of the joystick axes. 142fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The joystick axis values are normalized to a range of -1.0 to 1.0 where 0.0 corresponds 143fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * to the center position. More information about the set of available axes and the 144fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * range of motion can be obtained using {@link InputDevice#getMotionRange}. 145fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Some common joystick axes are {@link #AXIS_X}, {@link #AXIS_Y}, 146fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #AXIS_HAT_X}, {@link #AXIS_HAT_Y}, {@link #AXIS_Z} and {@link #AXIS_RZ}. 147dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 148dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * Refer to {@link InputDevice} for more information about how different kinds of 149c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * input devices and sources represent pointer coordinates. 150dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p> 151fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 152fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Consistency Guarantees</h3> 153fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 154fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events are always delivered to views as a consistent stream of events. 155fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * What constitutes a consistent stream varies depending on the type of device. 156fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * For touch events, consistency implies that pointers go down one at a time, 157fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * move around as a group and then go up one at a time or are canceled. 158fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 159fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * While the framework tries to deliver consistent streams of motion events to 160fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * views, it cannot guarantee it. Some events may be dropped or modified by 161fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * containing views in the application before they are delivered thereby making 162fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the stream of events inconsistent. Views should always be prepared to 163fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * handle {@link #ACTION_CANCEL} and should tolerate anomalous 164fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * situations such as receiving a new {@link #ACTION_DOWN} without first having 165fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * received an {@link #ACTION_UP} for the prior gesture. 166fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownpublic final class MotionEvent extends InputEvent implements Parcelable { 16991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final long NS_PER_MS = 1000000; 170337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright private static final String LABEL_PREFIX = "AXIS_"; 171fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 172fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 173fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * An invalid pointer id. 174fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 175fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This value (-1) can be used as a placeholder to indicate that a pointer id 176fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * has not been assigned or is not available. It cannot appear as 177fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a pointer id inside a {@link MotionEvent}. 178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int INVALID_POINTER_ID = -1; 180fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Bit mask of the parts of the action code that are the action itself. 1839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 1849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_MASK = 0xff; 1859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 1869822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 187fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A pressed gesture has started, the 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * motion contains the initial starting location. 189fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 190fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This is also a good time to check the button state to distinguish 191fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * secondary and tertiary button clicks and handle them appropriately. 192fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getButtonState} to retrieve the button state. 193fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_DOWN = 0; 1969822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 198fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A pressed gesture has finished, the 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * motion contains the final release location as well as any intermediate 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * points since the last down or move event. 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_UP = 1; 2039822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 205fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A change has happened during a 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * press gesture (between {@link #ACTION_DOWN} and {@link #ACTION_UP}). 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The motion contains the most recent point, as well as any intermediate 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * points since the last down or move event. 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_MOVE = 2; 2119822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 213fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The current gesture has been aborted. 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You will not receive any more points in it. You should treat this as 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an up event, but not perform any action that you normally would. 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_CANCEL = 3; 2189822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 220fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A movement has happened outside of the 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * normal bounds of the UI element. This does not provide a full gesture, 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * but only the initial location of the movement/touch. 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_OUTSIDE = 4; 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 227fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A non-primary pointer has gone down. 228fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 229fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. 230fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 231fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the 232fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * unmasked action returned by {@link #getAction}. 233fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 2349822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 2359822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_DOWN = 5; 2369822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2379822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 238fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A non-primary pointer has gone up. 239fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 240fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. 241fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 242fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the 243fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * unmasked action returned by {@link #getAction}. 244fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 2459822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 246b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_UP = 6; 247cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown 248cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown /** 249fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A change happened but the pointer 250cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * is not down (unlike {@link #ACTION_MOVE}). The motion contains the most 251cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * recent point, as well as any intermediate points since the last 252cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * hover move event. 25333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * <p> 254a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer. 255a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 25633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * This action is not a touch event so it is delivered to 25733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 25833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 25933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 260cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown */ 261cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown public static final int ACTION_HOVER_MOVE = 7; 262cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown 2639822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 264fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The motion event contains relative 26533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * vertical and/or horizontal scroll offsets. Use {@link #getAxisValue(int)} 26633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * to retrieve the information from {@link #AXIS_VSCROLL} and {@link #AXIS_HSCROLL}. 26733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * The pointer may or may not be down when this event is dispatched. 268fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 269a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer, which 270a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * may not be the window or view currently touched. 271fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 27233bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * This action is not a touch event so it is delivered to 27333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 27433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 27533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 27633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown */ 27733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown public static final int ACTION_SCROLL = 8; 27833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown 27933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown /** 280fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The pointer is not down but has entered the 281a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * boundaries of a window or view. 282a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * <p> 283a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer. 284a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 285a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is not a touch event so it is delivered to 286a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 287a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 288a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p> 289a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown */ 290a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown public static final int ACTION_HOVER_ENTER = 9; 291a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown 292a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown /** 293fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The pointer is not down but has exited the 294a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * boundaries of a window or view. 295a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * <p> 296a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view that was previously under the pointer. 297a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 298a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is not a touch event so it is delivered to 299a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 300a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 301a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p> 302a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown */ 303a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown public static final int ACTION_HOVER_EXIT = 10; 304a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown 305a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown /** 306b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * Bits in the action code that represent a pointer index, used with 307b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * {@link #ACTION_POINTER_DOWN} and {@link #ACTION_POINTER_UP}. Shifting 308b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * down by {@link #ACTION_POINTER_INDEX_SHIFT} provides the actual pointer 309b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * index where the data for the pointer going up or down can be found; you can 310b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * get its identifier with {@link #getPointerId(int)} and the actual 311b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data with {@link #getX(int)} etc. 312fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 313fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getActionIndex 3149822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 315b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_INDEX_MASK = 0xff00; 3169822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3179822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 318b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * Bit shift for the action bits holding the pointer index as 319b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * defined by {@link #ACTION_POINTER_INDEX_MASK}. 320fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 321fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getActionIndex 3229822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 323b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_INDEX_SHIFT = 8; 324fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3259822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 326b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 327b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 3289822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 329b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 330b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_1_DOWN = ACTION_POINTER_DOWN | 0x0000; 331b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 332b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 333b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 334b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 335b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 336b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 337b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_2_DOWN = ACTION_POINTER_DOWN | 0x0100; 3389822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3399822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 340b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 341b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 3429822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 343b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 344b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_3_DOWN = ACTION_POINTER_DOWN | 0x0200; 345b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 346b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 347b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 348b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 349b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 350b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3519822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_1_UP = ACTION_POINTER_UP | 0x0000; 3529822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3539822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 354b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 355b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 3569822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 357b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3589822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_2_UP = ACTION_POINTER_UP | 0x0100; 3599822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3609822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 361b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 362b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 3639822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 364b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3659822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_3_UP = ACTION_POINTER_UP | 0x0200; 3669822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3679822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 368b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_MASK} to match 369b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * the actual data contained in these bits. 3709822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 371b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3720dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public static final int ACTION_POINTER_ID_MASK = 0xff00; 3739822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3749822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 375b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_SHIFT} to match 376b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * the actual data contained in these bits. 3779822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 378b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3790dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public static final int ACTION_POINTER_ID_SHIFT = 8; 3809822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 38185a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown /** 38285a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * This flag indicates that the window that received this motion event is partly 38385a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * or wholly obscured by another visible window above it. This flag is set to true 38485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * even if the event did not directly pass through the obscured area. 38585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * A security sensitive application can check this flag to identify situations in which 38685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * a malicious application may have covered up part of its content for the purpose 38785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * of misleading the user or hijacking touches. An appropriate response might be 38885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * to drop the suspect touches or to take additional precautions to confirm the user's 38985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * actual intent. 39085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown */ 39185a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown public static final int FLAG_WINDOW_IS_OBSCURED = 0x1; 392cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 3939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 39421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * Private flag that indicates when the system has detected that this motion event 39521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * may be inconsistent with respect to the sequence of previously delivered motion events, 39621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * such as when a pointer move event is sent but the pointer is not down. 39721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * 39821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @hide 39921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @see #isTainted 40021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @see #setTainted 40121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown */ 40221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public static final int FLAG_TAINTED = 0x80000000; 40321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 40421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** 405ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * Private flag indicating that this event was synthesized by the system and 406ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * should be delivered to the accessibility focused view first. When being 407ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * dispatched such an event is not handled by predecessors of the accessibility 408ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * focused view and after the event reaches that view the flag is cleared and 409ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * normal event dispatch is performed. This ensures that the platform can click 410ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * on any view that has accessibility focus which is semantically equivalent to 411ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * asking the view to perform a click accessibility action but more generic as 412ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * views not implementing click action correctly can still be activated. 413ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * 414ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * @hide 415ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * @see #isTargetAccessibilityFocus() 416ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * @see #setTargetAccessibilityFocus(boolean) 417ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav */ 418ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav public static final int FLAG_TARGET_ACCESSIBILITY_FOCUS = 0x40000000; 419ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 420ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 421ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav /** 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the top edge of the screen. 4239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_TOP = 0x00000001; 425cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the bottom edge of the screen. 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_BOTTOM = 0x00000002; 430cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the left edge of the screen. 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_LEFT = 0x00000004; 435cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the right edge of the screen. 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_RIGHT = 0x00000008; 440cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 44191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 442fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: X axis of a motion event. 4436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 4456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the absolute X screen position of the center of 4466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * the touch contact area. The units are display pixels. 4476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the absolute X surface position of the center of the touch 448cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 449cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * to query the effective range of values. 4506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, reports the absolute X screen position of the mouse pointer. 4516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 4526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, reports the relative horizontal displacement of the trackball. 4536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 4546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute X position of the joystick. 4556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 4566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 4576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 45891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 45991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX(int) 46091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalX(int, int) 46191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#x 46291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 4639822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 46491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_X = 0; 46591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 46691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 467fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Y axis of a motion event. 4686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 4706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the absolute Y screen position of the center of 4716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * the touch contact area. The units are display pixels. 4726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the absolute Y surface position of the center of the touch 4736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 4746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 4756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, reports the absolute Y screen position of the mouse pointer. 4766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 4776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, reports the relative vertical displacement of the trackball. 4786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up) to 1.0 (down). 4796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Y position of the joystick. 4806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up or far) to 1.0 (down or near). 4816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 4826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 48391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 48491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY(int) 48591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalY(int, int) 48691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#y 48791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 488c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 48991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_Y = 1; 490c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 49191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 492fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Pressure axis of a motion event. 4936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 495cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a touch screen or touch pad, reports the approximate pressure applied to the surface 4966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * by a finger or other tool. The value is normalized to a range from 4976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 0 (no pressure at all) to 1 (normal pressure), although values higher than 1 4986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * may be generated depending on the calibration of the input device. 4996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, the value is set to 1 if the trackball button is pressed 5006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or 0 otherwise. 5016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, the value is set to 1 if the primary mouse button is pressed 5026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or 0 otherwise. 5036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 50591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 50691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure(int) 50791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalPressure(int, int) 50891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#pressure 50991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 510c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 51191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_PRESSURE = 2; 51291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 51391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 514fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Size axis of a motion event. 5156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen or touch pad, reports the approximate size of the contact area in 5186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * relation to the maximum detectable size for the device. The value is normalized 5196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to a range from 0 (smallest detectable size) to 1 (largest detectable size), 520cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * although it is not a linear scale. This value is of limited use. 5216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * To obtain calibrated size information, use 5226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * {@link #AXIS_TOUCH_MAJOR} or {@link #AXIS_TOOL_MAJOR}. 5236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 52591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 52691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize(int) 52791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalSize(int, int) 52891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#size 52991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 530c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 53191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_SIZE = 3; 532c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 53391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 534fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: TouchMajor axis of a motion event. 5356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the major axis of an ellipse that 5386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 5406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the major axis of an ellipse that 5416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 54691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 54791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor(int) 54891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalTouchMajor(int, int) 54991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#touchMajor 55091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 551c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 55291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOUCH_MAJOR = 4; 55391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 55491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 555fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: TouchMinor axis of a motion event. 5566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the minor axis of an ellipse that 5596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 5616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the minor axis of an ellipse that 5626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 5686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 56991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 57091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor(int) 57191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalTouchMinor(int, int) 57291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#touchMinor 57391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 574c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 57591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOUCH_MINOR = 5; 576c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 57791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 578fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: ToolMajor axis of a motion event. 5796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the major axis of an ellipse that 5826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 5836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the major axis of an ellipse that 5846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 5856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 5906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The tool size may be larger than the touch size since the tool may not be fully 5926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * in contact with the touch sensor. 5936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 59491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 59591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor(int) 59691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalToolMajor(int, int) 59791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#toolMajor 59891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 5999822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 60091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOOL_MAJOR = 6; 60191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 60291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 603fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: ToolMinor axis of a motion event. 6046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the minor axis of an ellipse that 6076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 6086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the minor axis of an ellipse that 6096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 6106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 6116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 6126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 6156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The tool size may be larger than the touch size since the tool may not be fully 6176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * in contact with the touch sensor. 6186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 61991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 62091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor(int) 62191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalToolMinor(int, int) 62291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#toolMinor 62391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 6241e8dfc73fba88766ee3c25ae7b3bb1850319b11dDianne Hackborn */ 62591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOOL_MINOR = 7; 62691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 62791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 628fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Orientation axis of a motion event. 6296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen or touch pad, reports the orientation of the finger 6326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or tool in radians relative to the vertical plane of the device. 6336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 63491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 63591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 63691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * indicates that the major axis of contact is oriented to the left. 63791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 63891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (finger pointing fully right). 63965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <li>For a stylus, the orientation indicates the direction in which the stylus 64065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * is pointing in relation to the vertical axis of the current orientation of the screen. 64165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * The range is from -PI radians to PI radians, where 0 is pointing up, 64265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * -PI/2 radians is pointing left, -PI or PI radians is pointing down, and PI/2 radians 64365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * is pointing right. See also {@link #AXIS_TILT}. 6446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 64691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 64791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation(int) 64891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalOrientation(int, int) 64991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#orientation 65091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 6519e2ad36be87f2703b3d737189944d82f93bd4f27Jeff Brown */ 65291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_ORIENTATION = 8; 65391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 6546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 655fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Vertical Scroll axis of a motion event. 6566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 658cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a mouse, reports the relative movement of the vertical scroll wheel. 65933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * The value is normalized to a range from -1.0 (down) to 1.0 (up). 6606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * This axis should be used to scroll views vertically. 6636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 6646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 6656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 6666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 6676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 6686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 6696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 6706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_VSCROLL = 9; 6716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 6726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 673fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Horizontal Scroll axis of a motion event. 6746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 676cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a mouse, reports the relative movement of the horizontal scroll wheel. 6776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 6786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * This axis should be used to scroll views horizontally. 6816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 6826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 6836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 6846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 6856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 6866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 6876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 6886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HSCROLL = 10; 6896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 6906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 691fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Z axis of a motion event. 6926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Z position of the joystick. 6956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (high) to 1.0 (low). 6966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <em>On game pads with two analog joysticks, this axis is often reinterpreted 6976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to report the absolute X position of the second joystick instead.</em> 6986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_Z = 11; 7076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 709fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: X Rotation axis of a motion event. 7106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the X axis. 7136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RX = 12; 7236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 725fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Y Rotation axis of a motion event. 7266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the Y axis. 7296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RY = 13; 7396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 741fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Z Rotation axis of a motion event. 7426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the Z axis. 7456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <em>On game pads with two analog joysticks, this axis is often reinterpreted 7476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to report the absolute Y position of the second joystick instead.</em> 7486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RZ = 14; 7576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 759fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Hat X axis of a motion event. 7606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute X position of the directional hat control. 7636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 7646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HAT_X = 15; 7736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 775fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Hat Y axis of a motion event. 7766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Y position of the directional hat control. 7796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up) to 1.0 (down). 7806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HAT_Y = 16; 7896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 791fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Left Trigger axis of a motion event. 7926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute position of the left trigger control. 7956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). 7966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 8006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 8036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 8046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_LTRIGGER = 17; 8056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 8066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 807fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Right Trigger axis of a motion event. 8086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 8096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 8106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute position of the right trigger control. 8116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). 8126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 8136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 8146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 8156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 8166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 8196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 8206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RTRIGGER = 18; 8216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 8226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 823fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Throttle axis of a motion event. 8243a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8253a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8263a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the throttle control. 8273a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (fully open) to 1.0 (fully closed). 8283a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8293a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8303a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8313a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8323a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8333a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8343a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8353a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8363a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_THROTTLE = 19; 8373a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8383a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 839fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Rudder axis of a motion event. 8403a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8413a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8423a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the rudder control. 8433a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). 8443a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8453a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8463a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8473a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8483a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8493a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8503a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8513a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8523a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_RUDDER = 20; 8533a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8543a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 855fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Wheel axis of a motion event. 8563a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8573a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8583a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the steering wheel control. 8593a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). 8603a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8613a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8623a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8633a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8643a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8653a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8663a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8673a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8683a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_WHEEL = 21; 8693a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8703a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 871fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Gas axis of a motion event. 8723a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8733a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8743a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the gas (accelerator) control. 8753a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (no acceleration) 8763a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * to 1.0 (maximum acceleration). 8773a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8783a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8793a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8803a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8813a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8823a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8833a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8843a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8853a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_GAS = 22; 8863a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8873a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 888fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Brake axis of a motion event. 8893a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8903a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8913a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the brake control. 8923a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (no braking) to 1.0 (maximum braking). 8933a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8943a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8953a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8963a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8973a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8983a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8993a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 9003a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 9013a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_BRAKE = 23; 9023a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 9033a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 904fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Distance axis of a motion event. 905fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 906fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <ul> 907fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <li>For a stylus, reports the distance of the stylus from the screen. 90865fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * A value of 0.0 indicates direct contact and larger values indicate increasing 90965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * distance from the surface. 910fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </ul> 911fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 912fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 913fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getAxisValue(int, int) 914fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getHistoricalAxisValue(int, int, int) 915fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 916fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see InputDevice#getMotionRange 917fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 918fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int AXIS_DISTANCE = 24; 919fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 920fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 92165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * Axis constant: Tilt axis of a motion event. 92265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <p> 92365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <ul> 92465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <li>For a stylus, reports the tilt angle of the stylus in radians where 92565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * 0 radians indicates that the stylus is being held perpendicular to the 92665fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * surface, and PI/2 radians indicates that the stylus is being held flat 92765fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * against the surface. 92865fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * </ul> 92965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * </p> 93065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * 93165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see #getAxisValue(int, int) 93265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see #getHistoricalAxisValue(int, int, int) 93365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int, int) 93465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see InputDevice#getMotionRange 93565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown */ 93665fd251c3913fc921468a3dad190810db19eb9dfJeff Brown public static final int AXIS_TILT = 25; 93765fd251c3913fc921468a3dad190810db19eb9dfJeff Brown 93865fd251c3913fc921468a3dad190810db19eb9dfJeff Brown /** 939fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 1 axis of a motion event. 9406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_1 = 32; 9486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 950fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 2 axis of a motion event. 9516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_2 = 33; 9596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 961fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 3 axis of a motion event. 9626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_3 = 34; 9706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 972fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 4 axis of a motion event. 9736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_4 = 35; 9816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 983fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 5 axis of a motion event. 9846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_5 = 36; 9926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 994fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 6 axis of a motion event. 9956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_6 = 37; 10036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1005fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 7 axis of a motion event. 10066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_7 = 38; 10146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1016fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 8 axis of a motion event. 10176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_8 = 39; 10256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1027fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 9 axis of a motion event. 10286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_9 = 40; 10366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1038fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 10 axis of a motion event. 10396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_10 = 41; 10476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1049fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 11 axis of a motion event. 10506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_11 = 42; 10586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1060fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 12 axis of a motion event. 10616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_12 = 43; 10696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1071fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 13 axis of a motion event. 10726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_13 = 44; 10806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1082fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 14 axis of a motion event. 10836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_14 = 45; 10916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1093fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 15 axis of a motion event. 10946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_15 = 46; 11026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1104fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 16 axis of a motion event. 11056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_16 = 47; 11136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // NOTE: If you add a new axis here you must also add it to: 11156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // native/include/android/input.h 11166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // frameworks/base/include/ui/KeycodeLabels.h 11176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // Symbolic names of all axes. 11196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown private static final SparseArray<String> AXIS_SYMBOLIC_NAMES = new SparseArray<String>(); 1120fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown static { 11216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown SparseArray<String> names = AXIS_SYMBOLIC_NAMES; 11226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_X, "AXIS_X"); 11236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_Y, "AXIS_Y"); 11246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_PRESSURE, "AXIS_PRESSURE"); 11256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_SIZE, "AXIS_SIZE"); 11266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOUCH_MAJOR, "AXIS_TOUCH_MAJOR"); 11276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOUCH_MINOR, "AXIS_TOUCH_MINOR"); 11286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOOL_MAJOR, "AXIS_TOOL_MAJOR"); 11296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOOL_MINOR, "AXIS_TOOL_MINOR"); 11306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_ORIENTATION, "AXIS_ORIENTATION"); 11316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_VSCROLL, "AXIS_VSCROLL"); 11326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HSCROLL, "AXIS_HSCROLL"); 11336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_Z, "AXIS_Z"); 11346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RX, "AXIS_RX"); 11356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RY, "AXIS_RY"); 11366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RZ, "AXIS_RZ"); 11376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HAT_X, "AXIS_HAT_X"); 11386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HAT_Y, "AXIS_HAT_Y"); 11396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_LTRIGGER, "AXIS_LTRIGGER"); 11406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RTRIGGER, "AXIS_RTRIGGER"); 11413a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_THROTTLE, "AXIS_THROTTLE"); 11423a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_RUDDER, "AXIS_RUDDER"); 11433a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_WHEEL, "AXIS_WHEEL"); 11443a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_GAS, "AXIS_GAS"); 11453a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_BRAKE, "AXIS_BRAKE"); 1146fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(AXIS_DISTANCE, "AXIS_DISTANCE"); 114765fd251c3913fc921468a3dad190810db19eb9dfJeff Brown names.append(AXIS_TILT, "AXIS_TILT"); 11486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_1, "AXIS_GENERIC_1"); 11496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_2, "AXIS_GENERIC_2"); 11506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_3, "AXIS_GENERIC_3"); 11516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_4, "AXIS_GENERIC_4"); 11526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_5, "AXIS_GENERIC_5"); 11536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_6, "AXIS_GENERIC_6"); 11546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_7, "AXIS_GENERIC_7"); 11556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_8, "AXIS_GENERIC_8"); 11566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_9, "AXIS_GENERIC_9"); 11576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_10, "AXIS_GENERIC_10"); 11586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_11, "AXIS_GENERIC_11"); 11596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_12, "AXIS_GENERIC_12"); 11606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_13, "AXIS_GENERIC_13"); 11616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_14, "AXIS_GENERIC_14"); 11626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_15, "AXIS_GENERIC_15"); 11636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_16, "AXIS_GENERIC_16"); 11646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 11656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 1166fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 116749754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Button constant: Primary button (left mouse button). 116849754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * 116949754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * This button constant is not set in response to simple touches with a finger 117049754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * or stylus tip. The user must actually push a button. 1171fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1172fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1173fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1174fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_PRIMARY = 1 << 0; 1175fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1176fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 117753ca3f13e70fda98aa9f39bb0c15afaf435e3904Jeff Brown * Button constant: Secondary button (right mouse button, stylus first button). 1178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1180fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1181fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_SECONDARY = 1 << 1; 1182fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1183fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 118453ca3f13e70fda98aa9f39bb0c15afaf435e3904Jeff Brown * Button constant: Tertiary button (middle mouse button, stylus second button). 1185fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1186fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1187fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1188fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_TERTIARY = 1 << 2; 1189fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1190fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1191fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Button constant: Back button pressed (mouse back button). 1192fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 1193fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The system may send a {@link KeyEvent#KEYCODE_BACK} key press to the application 1194fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when this button is pressed. 1195fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1196fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1197fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1198fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1199fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_BACK = 1 << 3; 1200fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1201fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1202fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Button constant: Forward button pressed (mouse forward button). 1203fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 1204fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The system may send a {@link KeyEvent#KEYCODE_FORWARD} key press to the application 1205fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when this button is pressed. 1206fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1207fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1208fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1209fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1210fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_FORWARD = 1 << 4; 1211fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1212fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // NOTE: If you add a new axis here you must also add it to: 1213fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // native/include/android/input.h 1214fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1215fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Symbolic names of all button states in bit order from least significant 1216fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // to most significant. 1217fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final String[] BUTTON_SYMBOLIC_NAMES = new String[] { 1218fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_PRIMARY", 1219fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_SECONDARY", 1220fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_TERTIARY", 1221fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_BACK", 1222fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_FORWARD", 122353ca3f13e70fda98aa9f39bb0c15afaf435e3904Jeff Brown "0x00000020", 1224fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000040", 1225fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000080", 1226fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000100", 1227fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000200", 1228fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000400", 1229fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000800", 1230fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00001000", 1231fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00002000", 1232fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00004000", 1233fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00008000", 1234fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00010000", 1235fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00020000", 1236fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00040000", 1237fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00080000", 1238fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00100000", 1239fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00200000", 1240fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00400000", 1241fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00800000", 1242fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x01000000", 1243fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x02000000", 1244fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x04000000", 1245fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x08000000", 1246fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x10000000", 1247fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x20000000", 1248fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x40000000", 1249fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x80000000", 1250fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown }; 1251fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1252fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1253fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Tool type constant: Unknown tool type. 1254fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This constant is used when the tool type is not known or is not relevant, 1255fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as for a trackball or other non-pointing device. 1256fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1257fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1258fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1259fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_UNKNOWN = 0; 1260fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1261fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 126249754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a finger. 1263fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1264fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1265fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1266fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_FINGER = 1; 1267fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1268fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 126949754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a stylus. 1270fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1271fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1272fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1273fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_STYLUS = 2; 1274fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1275fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 127649754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a mouse or trackpad. 1277fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1278fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1279fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1280fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_MOUSE = 3; 1281fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1282fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 128349754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is an eraser or a stylus being used in an inverted posture. 1284fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1285fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1286fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 128749754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown public static final int TOOL_TYPE_ERASER = 4; 1288fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1289fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // NOTE: If you add a new tool type here you must also add it to: 1290fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // native/include/android/input.h 1291fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1292fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Symbolic names of all tool types. 1293fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final SparseArray<String> TOOL_TYPE_SYMBOLIC_NAMES = new SparseArray<String>(); 12946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown static { 1295fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown SparseArray<String> names = TOOL_TYPE_SYMBOLIC_NAMES; 1296fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_UNKNOWN, "TOOL_TYPE_UNKNOWN"); 1297fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_FINGER, "TOOL_TYPE_FINGER"); 1298fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_STYLUS, "TOOL_TYPE_STYLUS"); 1299fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_MOUSE, "TOOL_TYPE_MOUSE"); 130049754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown names.append(TOOL_TYPE_ERASER, "TOOL_TYPE_ERASER"); 13016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 13026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 130391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Private value for history pos that obtains the current sample. 130491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final int HISTORY_CURRENT = -0x80000000; 130591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 13061f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static final int MAX_RECYCLED = 10; 13071f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static final Object gRecyclerLock = new Object(); 13081f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static int gRecyclerUsed; 13091f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static MotionEvent gRecyclerTop; 1310cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 131191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Shared temporary objects used when translating coordinates supplied by 131291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // the caller into single element PointerCoords and pointer id arrays. 1313fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final Object gSharedTempLock = new Object(); 1314fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static PointerCoords[] gSharedTempPointerCoords; 1315fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static PointerProperties[] gSharedTempPointerProperties; 1316fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static int[] gSharedTempPointerIndexMap; 1317fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1318fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final void ensureSharedTempPointerCapacity(int desiredCapacity) { 1319fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (gSharedTempPointerCoords == null 1320fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown || gSharedTempPointerCoords.length < desiredCapacity) { 1321fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int capacity = gSharedTempPointerCoords != null ? gSharedTempPointerCoords.length : 8; 1322fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown while (capacity < desiredCapacity) { 1323fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown capacity *= 2; 1324fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1325fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerCoords = PointerCoords.createArray(capacity); 1326fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerProperties = PointerProperties.createArray(capacity); 1327fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerIndexMap = new int[capacity]; 1328fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1329fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 133091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 133191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Pointer to the native MotionEvent object that contains the actual data. 133299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private long mNativePtr; 13338169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima 13349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private MotionEvent mNext; 13359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 133699a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeInitialize(long nativePtr, 1337fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int deviceId, int source, int action, int flags, int edgeFlags, 1338fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int metaState, int buttonState, 133991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float xOffset, float yOffset, float xPrecision, float yPrecision, 134091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown long downTimeNanos, long eventTimeNanos, 1341fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerCount, PointerProperties[] pointerIds, PointerCoords[] pointerCoords); 134299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeCopy(long destNativePtr, long sourceNativePtr, 134391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown boolean keepHistory); 134499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeDispose(long nativePtr); 134599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeAddBatch(long nativePtr, long eventTimeNanos, 134691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown PointerCoords[] pointerCoords, int metaState); 134791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 134899a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetDeviceId(long nativePtr); 134999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetSource(long nativePtr); 135099a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeSetSource(long nativePtr, int source); 135199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetAction(long nativePtr); 135299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetAction(long nativePtr, int action); 135399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native boolean nativeIsTouchEvent(long nativePtr); 135499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetFlags(long nativePtr); 135599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetFlags(long nativePtr, int flags); 135699a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetEdgeFlags(long nativePtr); 135799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetEdgeFlags(long nativePtr, int action); 135899a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetMetaState(long nativePtr); 135999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetButtonState(long nativePtr); 136099a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeOffsetLocation(long nativePtr, float deltaX, float deltaY); 136199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetXOffset(long nativePtr); 136299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetYOffset(long nativePtr); 136399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetXPrecision(long nativePtr); 136499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetYPrecision(long nativePtr); 136599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeGetDownTimeNanos(long nativePtr); 136699a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetDownTimeNanos(long nativePtr, long downTime); 136799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat 136899a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetPointerCount(long nativePtr); 136999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetPointerId(long nativePtr, int pointerIndex); 137099a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetToolType(long nativePtr, int pointerIndex); 137199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeFindPointerIndex(long nativePtr, int pointerId); 137299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat 137399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetHistorySize(long nativePtr); 137499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeGetEventTimeNanos(long nativePtr, int historyPos); 137599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetRawAxisValue(long nativePtr, 137691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int axis, int pointerIndex, int historyPos); 137799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetAxisValue(long nativePtr, 137891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int axis, int pointerIndex, int historyPos); 137999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeGetPointerCoords(long nativePtr, 138091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int pointerIndex, int historyPos, PointerCoords outPointerCoords); 138199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeGetPointerProperties(long nativePtr, 1382fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerIndex, PointerProperties outPointerProperties); 138391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 138499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeScale(long nativePtr, float scale); 138599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeTransform(long nativePtr, Matrix matrix); 138691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 138799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeReadFromParcel(long nativePtr, Parcel parcel); 138899a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeWriteToParcel(long nativePtr, Parcel parcel); 138991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 1390337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright private static native String nativeAxisToString(int axis); 1391337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright private static native int nativeAxisFromString(String label); 1392337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright 139391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private MotionEvent() { 139491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 139520e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown 139691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 139791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown protected void finalize() throws Throwable { 139891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown try { 139991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (mNativePtr != 0) { 140091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeDispose(mNativePtr); 140191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mNativePtr = 0; 140291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 140391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } finally { 140491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown super.finalize(); 140591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 14069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1407cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 140891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static private MotionEvent obtain() { 140946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown final MotionEvent ev; 141046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown synchronized (gRecyclerLock) { 14111f2451007c660091b7b090c1ea332f9044515d2dJeff Brown ev = gRecyclerTop; 14121f2451007c660091b7b090c1ea332f9044515d2dJeff Brown if (ev == null) { 141391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return new MotionEvent(); 141446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 141546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown gRecyclerTop = ev.mNext; 14165c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown gRecyclerUsed -= 1; 141746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 141846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown ev.mNext = null; 141932cbc3855c2a971aa5a801fd339fb6a37db91a1aJeff Brown ev.prepareForReuse(); 142046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown return ev; 142146b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 142291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 142353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan /** 142453071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * Create a new MotionEvent, filling in all of the basic values that 142553071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * define the motion. 1426fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 142753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param downTime The time (in ms) when the user originally pressed down to start 142853071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1429c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The the time (in ms) when this specific event was generated. This 143053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * must be obtained from {@link SystemClock#uptimeMillis()}. 1431cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1432fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that will be in this event. 1433fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerProperties An array of <em>pointerCount</em> values providing 1434fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a {@link PointerProperties} property object for each pointer, which must 1435fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * include the pointer identifier. 1436fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCoords An array of <em>pointerCount</em> values providing 1437c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * a {@link PointerCoords} coordinate object for each pointer. 143853071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param metaState The state of any meta / modifier keys that were in effect when 143953071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * the event was generated. 1440fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param buttonState The state of buttons that are pressed. 144153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param xPrecision The precision of the X coordinate being reported. 144253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param yPrecision The precision of the Y coordinate being reported. 144353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param deviceId The id for the device that this event came from. An id of 144453071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * zero indicates that the event didn't come from a physical device; other 144553071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * numbers are arbitrary and you shouldn't depend on the values. 144685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 144753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * MotionEvent. 1448c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param source The source of this event. 144985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param flags The motion event flags. 145053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan */ 1451c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown static public MotionEvent obtain(long downTime, long eventTime, 1452fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int action, int pointerCount, PointerProperties[] pointerProperties, 1453fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerCoords[] pointerCoords, int metaState, int buttonState, 1454fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown float xPrecision, float yPrecision, int deviceId, 145585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown int edgeFlags, int source, int flags) { 145691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 145791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 1458fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown deviceId, source, action, flags, edgeFlags, metaState, buttonState, 145991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 0, 0, xPrecision, yPrecision, 146091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown downTime * NS_PER_MS, eventTime * NS_PER_MS, 1461fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCount, pointerProperties, pointerCoords); 146253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan return ev; 146353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan } 146491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 14659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, filling in all of the basic values that 14679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * define the motion. 1468fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1469fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param downTime The time (in ms) when the user originally pressed down to start 1470fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1471fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param eventTime The the time (in ms) when this specific event was generated. This 1472fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * must be obtained from {@link SystemClock#uptimeMillis()}. 1473fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1474fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that will be in this event. 1475fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIds An array of <em>pointerCount</em> values providing 1476fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * an identifier for each pointer. 1477fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCoords An array of <em>pointerCount</em> values providing 1478fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a {@link PointerCoords} coordinate object for each pointer. 1479fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param metaState The state of any meta / modifier keys that were in effect when 1480fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the event was generated. 1481fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param xPrecision The precision of the X coordinate being reported. 1482fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param yPrecision The precision of the Y coordinate being reported. 1483fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param deviceId The id for the device that this event came from. An id of 1484fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * zero indicates that the event didn't come from a physical device; other 1485fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * numbers are arbitrary and you shouldn't depend on the values. 1486fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 1487fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * MotionEvent. 1488fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param source The source of this event. 1489fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param flags The motion event flags. 1490fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1491fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @deprecated Use {@link #obtain(long, long, int, int, PointerProperties[], PointerCoords[], int, int, float, float, int, int, int, int)} 1492fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * instead. 1493fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1494fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown @Deprecated 1495fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown static public MotionEvent obtain(long downTime, long eventTime, 1496fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int action, int pointerCount, int[] pointerIds, PointerCoords[] pointerCoords, 1497fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int metaState, float xPrecision, float yPrecision, int deviceId, 1498fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int edgeFlags, int source, int flags) { 1499fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 1500fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(pointerCount); 1501fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 1502fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 1503fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[i].clear(); 1504fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[i].id = pointerIds[i]; 1505fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1506fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return obtain(downTime, eventTime, action, pointerCount, pp, 1507fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCoords, metaState, 0, xPrecision, yPrecision, deviceId, 1508fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown edgeFlags, source, flags); 1509fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1510fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1511fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1512fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1513fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Create a new MotionEvent, filling in all of the basic values that 1514fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * define the motion. 1515cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 1516cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param downTime The time (in ms) when the user originally pressed down to start 15179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1518cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param eventTime The the time (in ms) when this specific event was generated. This 15199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * must be obtained from {@link SystemClock#uptimeMillis()}. 1520cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The X coordinate of this event. 15229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The Y coordinate of this event. 1523cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param pressure The current pressure of this event. The pressure generally 1524cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * ranges from 0 (no pressure at all) to 1 (normal pressure), however 1525cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * values higher than 1 may be generated depending on the calibration of 15269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the input device. 15279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param size A scaled value of the approximate size of the area being pressed when 1528cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * touched with the finger. The actual value in pixels corresponding to the finger 15299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * touch is normalized with a device specific range of values 15309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and scaled to a value between 0 and 1. 15319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param metaState The state of any meta / modifier keys that were in effect when 15329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. 15339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param xPrecision The precision of the X coordinate being reported. 15349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param yPrecision The precision of the Y coordinate being reported. 15359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deviceId The id for the device that this event came from. An id of 15369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * zero indicates that the event didn't come from a physical device; other 15379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * numbers are arbitrary and you shouldn't depend on the values. 153885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 15399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MotionEvent. 15409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public MotionEvent obtain(long downTime, long eventTime, int action, 15429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float x, float y, float pressure, float size, int metaState, 15439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float xPrecision, float yPrecision, int deviceId, int edgeFlags) { 1544fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 1545fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 1546fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(1); 1547fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 1548fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[0].clear(); 1549fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[0].id = 0; 1550fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1551fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords pc[] = gSharedTempPointerCoords; 1552fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].clear(); 1553fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].x = x; 1554fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].y = y; 1555fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].pressure = pressure; 1556fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].size = size; 1557fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 155891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 1559fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown deviceId, InputDevice.SOURCE_UNKNOWN, action, 0, edgeFlags, metaState, 0, 156091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 0, 0, xPrecision, yPrecision, 156191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown downTime * NS_PER_MS, eventTime * NS_PER_MS, 1562fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1, pp, pc); 156391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return ev; 156491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 15659822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 15669822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 15679822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 15689822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Create a new MotionEvent, filling in all of the basic values that 15699822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * define the motion. 15709822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * 15719822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param downTime The time (in ms) when the user originally pressed down to start 15729822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 15739822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param eventTime The the time (in ms) when this specific event was generated. This 15749822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * must be obtained from {@link SystemClock#uptimeMillis()}. 1575cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1576fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that are active in this event. 15779822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param x The X coordinate of this event. 15789822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param y The Y coordinate of this event. 15799822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param pressure The current pressure of this event. The pressure generally 15809822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * ranges from 0 (no pressure at all) to 1 (normal pressure), however 15819822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * values higher than 1 may be generated depending on the calibration of 15829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * the input device. 15839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param size A scaled value of the approximate size of the area being pressed when 15849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touched with the finger. The actual value in pixels corresponding to the finger 15859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touch is normalized with a device specific range of values 15869822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * and scaled to a value between 0 and 1. 15879822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState The state of any meta / modifier keys that were in effect when 15889822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * the event was generated. 15899822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param xPrecision The precision of the X coordinate being reported. 15909822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param yPrecision The precision of the Y coordinate being reported. 15919822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param deviceId The id for the device that this event came from. An id of 15929822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * zero indicates that the event didn't come from a physical device; other 15939822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * numbers are arbitrary and you shouldn't depend on the values. 159485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 15959822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * MotionEvent. 15965c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * 15975c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * @deprecated Use {@link #obtain(long, long, int, float, float, float, float, int, float, float, int, int)} 15985c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * instead. 15999822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 16005c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown @Deprecated 16019822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn static public MotionEvent obtain(long downTime, long eventTime, int action, 1602fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerCount, float x, float y, float pressure, float size, int metaState, 16039822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn float xPrecision, float yPrecision, int deviceId, int edgeFlags) { 16045c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown return obtain(downTime, eventTime, action, x, y, pressure, size, 16055c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown metaState, xPrecision, yPrecision, deviceId, edgeFlags); 16069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1607cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, filling in a subset of the basic motion 16109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values. Those not specified here are: device id (always 0), pressure 16119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and size (always 1), x and y precision (always 1), and edgeFlags (always 0). 1612cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 1613cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param downTime The time (in ms) when the user originally pressed down to start 16149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1615cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param eventTime The the time (in ms) when this specific event was generated. This 16169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * must be obtained from {@link SystemClock#uptimeMillis()}. 1617cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 16189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The X coordinate of this event. 16199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The Y coordinate of this event. 16209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param metaState The state of any meta / modifier keys that were in effect when 16219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. 16229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public MotionEvent obtain(long downTime, long eventTime, int action, 16249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float x, float y, int metaState) { 16255c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown return obtain(downTime, eventTime, action, x, y, 1.0f, 1.0f, 16265c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown metaState, 1.0f, 1.0f, 0, 0); 16278169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima } 16288169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima 16299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, copying from an existing one. 16319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 163291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static public MotionEvent obtain(MotionEvent other) { 163391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (other == null) { 163491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown throw new IllegalArgumentException("other motion event must not be null"); 163591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 163691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 163791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 163891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, true /*keepHistory*/); 16399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ev; 16409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1641cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16438df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn * Create a new MotionEvent, copying from an existing one, but not including 16448df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn * any historical point information. 16458df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn */ 164691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static public MotionEvent obtainNoHistory(MotionEvent other) { 164791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (other == null) { 164891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown throw new IllegalArgumentException("other motion event must not be null"); 164991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 165091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 165191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 165291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, false /*keepHistory*/); 16538df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn return ev; 16548df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn } 16558df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn 165621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 165721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 165821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public MotionEvent copy() { 165921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown return obtain(this); 166021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 166121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 16628df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn /** 16639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Recycle the MotionEvent, to be re-used by a later caller. After calling 16649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this function you must not ever touch the event again. 16659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 166692cc2d8dc35f2bdd1bb95ab24787066371064899Jeff Brown @Override 16675c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown public final void recycle() { 166832cbc3855c2a971aa5a801fd339fb6a37db91a1aJeff Brown super.recycle(); 16699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (gRecyclerLock) { 16719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (gRecyclerUsed < MAX_RECYCLED) { 16729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gRecyclerUsed++; 16739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNext = gRecyclerTop; 16749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gRecyclerTop = this; 16759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16789ea77fc821918ea562ff4907945b865e39e0201aJeff Brown 16795c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown /** 16809ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * Applies a scale factor to all points within this event. 16819ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * 16829ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * This method is used to adjust touch events to simulate different density 16839ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * displays for compatibility mode. The values returned by {@link #getRawX()}, 16849ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * {@link #getRawY()}, {@link #getXPrecision()} and {@link #getYPrecision()} 16859ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * are also affected by the scale factor. 16865c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * 16879ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * @param scale The scale factor to apply. 16885c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * @hide 16895c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown */ 16905c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown public final void scale(float scale) { 16919ea77fc821918ea562ff4907945b865e39e0201aJeff Brown if (scale != 1.0f) { 16929ea77fc821918ea562ff4907945b865e39e0201aJeff Brown nativeScale(mNativePtr, scale); 16939ea77fc821918ea562ff4907945b865e39e0201aJeff Brown } 169491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 169591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 169691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 169791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 169891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final int getDeviceId() { 169991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetDeviceId(mNativePtr); 170091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 170191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 170291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 170391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 170491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final int getSource() { 170591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetSource(mNativePtr); 170691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 170791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 170891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 170991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 171091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final void setSource(int source) { 171191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetSource(mNativePtr, source); 17125c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown } 1713cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 17149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1715cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Return the kind of action being performed. 1716cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Consider using {@link #getActionMasked} and {@link #getActionIndex} to retrieve 1717cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * the separate masked action and pointer index. 1718cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The action, such as {@link #ACTION_DOWN} or 1719cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * the combination of {@link #ACTION_POINTER_DOWN} with a shifted pointer index. 17209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getAction() { 172291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAction(mNativePtr); 17239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1726cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Return the masked action being performed, without pointer index information. 1727cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Use {@link #getActionIndex} to return the index associated with pointer actions. 1728cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The action, such as {@link #ACTION_DOWN} or {@link #ACTION_POINTER_DOWN}. 1729b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 1730b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public final int getActionMasked() { 173191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAction(mNativePtr) & ACTION_MASK; 1732b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn } 1733b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 1734b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 1735b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * For {@link #ACTION_POINTER_DOWN} or {@link #ACTION_POINTER_UP} 1736b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * as returned by {@link #getActionMasked}, this returns the associated 1737cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * pointer index. 1738cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * The index may be used with {@link #getPointerId(int)}, 1739b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * {@link #getX(int)}, {@link #getY(int)}, {@link #getPressure(int)}, 1740b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * and {@link #getSize(int)} to get information about the pointer that has 1741b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * gone down or up. 1742cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The index associated with the action. 1743b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 1744b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public final int getActionIndex() { 174591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return (nativeGetAction(mNativePtr) & ACTION_POINTER_INDEX_MASK) 174691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown >> ACTION_POINTER_INDEX_SHIFT; 1747b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn } 1748b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 1749b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 175033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * Returns true if this motion event is a touch event. 175133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * <p> 1752a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * Specifically excludes pointer events with action {@link #ACTION_HOVER_MOVE}, 1753a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link #ACTION_HOVER_ENTER}, {@link #ACTION_HOVER_EXIT}, or {@link #ACTION_SCROLL} 1754a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * because they are not actually touch events (the pointer is not down). 175533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 175633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * @return True if this motion event is a touch event. 175733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * @hide 175833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown */ 175933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown public final boolean isTouchEvent() { 176056194ebec6212e229f4ccdaa4b187166d20013efJeff Brown return nativeIsTouchEvent(mNativePtr); 176133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown } 176233bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown 176333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown /** 176485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * Gets the motion event flags. 176585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * 176685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @see #FLAG_WINDOW_IS_OBSCURED 176785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown */ 176885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown public final int getFlags() { 176991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetFlags(mNativePtr); 177085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown } 177185a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown 177221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 177321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 177421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public final boolean isTainted() { 177521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown final int flags = getFlags(); 177621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown return (flags & FLAG_TAINTED) != 0; 177721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 177821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 177921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 178021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 178121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public final void setTainted(boolean tainted) { 178221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown final int flags = getFlags(); 178321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown nativeSetFlags(mNativePtr, tainted ? flags | FLAG_TAINTED : flags & ~FLAG_TAINTED); 178421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 178521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 1786ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav /** @hide */ 1787ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav public final boolean isTargetAccessibilityFocus() { 1788ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav final int flags = getFlags(); 1789ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav return (flags & FLAG_TARGET_ACCESSIBILITY_FOCUS) != 0; 1790ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav } 1791ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 1792ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav /** @hide */ 1793ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav public final void setTargetAccessibilityFocus(boolean targetsFocus) { 1794ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav final int flags = getFlags(); 1795ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav nativeSetFlags(mNativePtr, targetsFocus 1796ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav ? flags | FLAG_TARGET_ACCESSIBILITY_FOCUS 1797ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav : flags & ~FLAG_TARGET_ACCESSIBILITY_FOCUS); 1798ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav } 1799ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 180085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown /** 1801cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * Returns the time (in ms) when the user originally pressed down to start 1802cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * a stream of position events. 18039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getDownTime() { 180591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetDownTimeNanos(mNativePtr) / NS_PER_MS; 18069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1809fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Sets the time (in ms) when the user originally pressed down to start 1810fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a stream of position events. 1811fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1812fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 1813fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1814fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final void setDownTime(long downTime) { 1815fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeSetDownTimeNanos(mNativePtr, downTime * NS_PER_MS); 1816fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1817fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1818fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1819b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Retrieve the time this event occurred, 1820b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 1821b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 1822b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time this event occurred, 1823b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 18249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1825b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown @Override 18269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getEventTime() { 182791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT) / NS_PER_MS; 18289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1831b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Retrieve the time this event occurred, 1832b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 1833b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond precision. 1834b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 183553071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * The value is in nanosecond precision but it may not have nanosecond accuracy. 1836b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 1837b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 1838b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time this event occurred, 1839b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 1840b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond precision. 184153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * 184253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @hide 184353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan */ 1844b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown @Override 184553071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan public final long getEventTimeNano() { 184691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT); 184753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan } 184853071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan 184953071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan /** 18500dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getX(int)} for the first pointer index (may be an 18510dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 185291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 185391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 18549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getX() { 185691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); 18579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18600dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getY(int)} for the first pointer index (may be an 18610dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 186291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 186391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 18649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getY() { 186691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); 18679822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 18689822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 18699822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 18700dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getPressure(int)} for the first pointer index (may be an 18710dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 187291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 187391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 18749822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 18759822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getPressure() { 187691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, HISTORY_CURRENT); 18779822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 18789822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 18799822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 18800dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getSize(int)} for the first pointer index (may be an 18810dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 188291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 188391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 18849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 18859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getSize() { 188691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, HISTORY_CURRENT); 18879822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 1888c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1889c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1890c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getTouchMajor(int)} for the first pointer index (may be an 1891c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 189291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 189391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 1894c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1895c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMajor() { 189691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, HISTORY_CURRENT); 1897c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 1898c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1899c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1900c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getTouchMinor(int)} for the first pointer index (may be an 1901c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 190291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 190391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 1904c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1905c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMinor() { 190691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, HISTORY_CURRENT); 1907c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 1908c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1909c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1910c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getToolMajor(int)} for the first pointer index (may be an 1911c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 191291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 191391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 1914c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1915c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMajor() { 191691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, HISTORY_CURRENT); 1917c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 1918c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1919c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1920c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getToolMinor(int)} for the first pointer index (may be an 1921c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 192291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 192391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 1924c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1925c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMinor() { 192691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, HISTORY_CURRENT); 1927c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 192891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 1929c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1930c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getOrientation(int)} for the first pointer index (may be an 1931c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 193291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 193391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 1934c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1935c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getOrientation() { 193691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, HISTORY_CURRENT); 193791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 193891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 193991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 194091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getAxisValue(int)} for the first pointer index (may be an 194191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * arbitrary pointer identifier). 194291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 194391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 194491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 194591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 194691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 194791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 194891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getAxisValue(int axis) { 194991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, 0, HISTORY_CURRENT); 1950c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 19519822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 19529822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 19530dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * The number of pointers of data contained in this event. Always 19540dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * >= 1. 19550dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 19560dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final int getPointerCount() { 195791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetPointerCount(mNativePtr); 19580dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 19590dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn 19600dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 19610dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Return the pointer identifier associated with a particular pointer 19620dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * data index is this event. The identifier tells you the actual pointer 19630dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * number associated with the data, accounting for individual pointers 19640dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * going up and down since the start of the current gesture. 19650dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 19660dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 19670dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 1968d41ba666d12a24ee4624ea9a009151e6165e3775Dianne Hackborn public final int getPointerId(int pointerIndex) { 196991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetPointerId(mNativePtr, pointerIndex); 19700dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 1971fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1972fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1973fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets the tool type of a pointer for the given pointer index. 1974fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The tool type indicates the type of tool used to make contact such 1975fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * as a finger or stylus, if known. 1976fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1977fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 1978fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 1979fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The tool type of the pointer. 1980fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1981fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_UNKNOWN 1982fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_FINGER 1983fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_STYLUS 1984fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_MOUSE 1985fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1986fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getToolType(int pointerIndex) { 1987fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return nativeGetToolType(mNativePtr, pointerIndex); 1988fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1989fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 19900dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 19910dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Given a pointer identifier, find the index of its data in the event. 19920dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 19930dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerId The identifier of the pointer to be found. 19940dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @return Returns either the index of the pointer (for use with 1995b0d6ba1ec4f71b96cab7d1ff62b846d5cf162c4fGilles Debunne * {@link #getX(int)} et al.), or -1 if there is no data available for 19960dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * that pointer identifier. 19970dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 19980dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final int findPointerIndex(int pointerId) { 199991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeFindPointerIndex(mNativePtr, pointerId); 20000dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 2001fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 20020dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 20030dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the X coordinate of this event for the given pointer 20040dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 20050dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 20069822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Whole numbers are pixels; the 20079822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * value may have a fraction for input devices that are sub-pixel precise. 20080dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 20090dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 201091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 201191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 20129822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 20130dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getX(int pointerIndex) { 201491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, HISTORY_CURRENT); 20159822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 20169822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 20179822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 20180dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the Y coordinate of this event for the given pointer 20190dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 20200dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 20219822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Whole numbers are pixels; the 20229822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * value may have a fraction for input devices that are sub-pixel precise. 20230dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 20240dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 202591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 202691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 20279822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 20280dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getY(int pointerIndex) { 202991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, pointerIndex, HISTORY_CURRENT); 20309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20330dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the current pressure of this event for the given pointer 20340dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 20350dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 20369822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * The pressure generally 2037cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * ranges from 0 (no pressure at all) to 1 (normal pressure), however 2038cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * values higher than 1 may be generated depending on the calibration of 20399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the input device. 20400dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 20410dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 204291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 204391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 20449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20450dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getPressure(int pointerIndex) { 204691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, HISTORY_CURRENT); 20479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20500dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a scaled value of the approximate size for the given pointer 20510dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 20520dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 20530dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * This represents some approximation of the area of the screen being 20540dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * pressed; the actual value in pixels corresponding to the 20559822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touch is normalized with the device specific range of values 2056cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * and scaled to a value between 0 and 1. The value of size can be used to 20579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * determine fat touch events. 20580dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 20590dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 206091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 206191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 20629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20630dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getSize(int pointerIndex) { 206491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, HISTORY_CURRENT); 20659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2066c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2067c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2068c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the major axis of an ellipse that describes the touch 2069c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * area at the point of contact for the given pointer 2070c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2071c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2072c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2073c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 207491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 207591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2076c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2077c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMajor(int pointerIndex) { 207891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, HISTORY_CURRENT); 2079c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2080c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2081c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2082c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the minor axis of an ellipse that describes the touch 2083c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * area at the point of contact for the given pointer 2084c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2085c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2086c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2087c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 208891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 208991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2090c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2091c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMinor(int pointerIndex) { 209291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, HISTORY_CURRENT); 2093c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2094c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2095c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2096c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the major axis of an ellipse that describes the size of 2097c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool for the given pointer 2098c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2099c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2100c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 2101c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 2102c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2103c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 210491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 210591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2106c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2107c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMajor(int pointerIndex) { 210891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, HISTORY_CURRENT); 2109c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2110c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2111c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2112c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the minor axis of an ellipse that describes the size of 2113c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool for the given pointer 2114c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2115c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2116c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 2117c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 2118c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2119c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 212091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 212191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2122c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2123c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMinor(int pointerIndex) { 212491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, HISTORY_CURRENT); 2125c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2126c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2127c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2128c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the orientation of the touch area and tool area in radians clockwise from vertical 2129c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * for the given pointer <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2130c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 21316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 2132c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 2133c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 2134c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the left. 21356d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 2136c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (finger pointing fully right). 2137c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2138c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 213991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 214091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 2141c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2142c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getOrientation(int pointerIndex) { 214391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, HISTORY_CURRENT); 2144c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 214591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 214691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 214791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns the value of the requested axis for the given pointer <em>index</em> 214891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (use {@link #getPointerId(int)} to find the pointer identifier for this index). 214991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 215091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 215191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 215291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 215391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value of the axis, or 0 if the axis is not available. 215491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 215591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 215691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 215791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 215891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getAxisValue(int axis, int pointerIndex) { 215991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, pointerIndex, HISTORY_CURRENT); 216091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 216191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 2162c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2163c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Populates a {@link PointerCoords} object with pointer coordinate data for 2164c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the specified pointer index. 2165c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2166c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2167c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param outPointerCoords The pointer coordinate object to populate. 216991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 217091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see PointerCoords 2171c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2172c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void getPointerCoords(int pointerIndex, PointerCoords outPointerCoords) { 217391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeGetPointerCoords(mNativePtr, pointerIndex, HISTORY_CURRENT, outPointerCoords); 2174c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 21759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2177fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Populates a {@link PointerProperties} object with pointer properties for 2178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the specified pointer index. 2179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2180fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2181fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2182fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param outPointerProperties The pointer properties object to populate. 2183fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2184fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see PointerProperties 2185fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2186fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final void getPointerProperties(int pointerIndex, 2187fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerProperties outPointerProperties) { 2188fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, pointerIndex, outPointerProperties); 2189fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2190fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2191fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 21929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the state of any meta / modifier keys that were in effect when 21939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. This is the same values as those 21949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned by {@link KeyEvent#getMetaState() KeyEvent.getMetaState}. 21959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 21969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer in which each bit set to 1 represents a pressed 21979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * meta key 21989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 21999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see KeyEvent#getMetaState() 22009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getMetaState() { 220291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetMetaState(mNativePtr); 22039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 22049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 22059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2206fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets the state of all buttons that are pressed such as a mouse or stylus button. 2207fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2208fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The button state. 2209fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2210fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_PRIMARY 2211fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_SECONDARY 2212fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_TERTIARY 2213fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_FORWARD 2214fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_BACK 2215fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2216fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getButtonState() { 2217fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return nativeGetButtonState(mNativePtr); 2218fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2219fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2220fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 22219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the original raw X coordinate of this event. For touch 22229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events on the screen, this is the original location of the event 22239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the screen, before it had been adjusted for the containing window 22249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and views. 222591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2226072137c80a9ce30a1c79cc416932a24bd2e4dccbMichael Wright * @see #getX(int) 222791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 22289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getRawX() { 223091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetRawAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); 22319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 223291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 22339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the original raw Y coordinate of this event. For touch 22359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events on the screen, this is the original location of the event 22369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the screen, before it had been adjusted for the containing window 22379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and views. 223891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2239072137c80a9ce30a1c79cc416932a24bd2e4dccbMichael Wright * @see #getY(int) 224091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 22419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getRawY() { 224391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetRawAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); 22449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 22459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 22469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the precision of the X coordinates being reported. You can 224891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * multiply this number with {@link #getX} to find the actual hardware 22499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value of the X coordinate. 22509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the precision of X coordinates being reported. 225191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 225291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 22539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getXPrecision() { 225591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetXPrecision(mNativePtr); 22569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2257cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 22589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the precision of the Y coordinates being reported. You can 226091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * multiply this number with {@link #getY} to find the actual hardware 22619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value of the Y coordinate. 22629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the precision of Y coordinates being reported. 226391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 226491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 22659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getYPrecision() { 226791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetYPrecision(mNativePtr); 22689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2269cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 22709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the number of historical points in this event. These are 22729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * movements that have occurred between this event and the previous event. 22739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This only applies to ACTION_MOVE events -- all other actions will have 22749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a size of 0. 2275cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 22769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the number of historical points in the event. 22779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getHistorySize() { 227991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetHistorySize(mNativePtr); 22809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2281cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 22829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the time that a historical movement occurred between this event 2284b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base. 2285b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 2286b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * This only applies to ACTION_MOVE events. 2287b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 2288cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 22899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 22909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2291b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time that a historical movement occurred between this 2292b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * event and the previous event, 2293b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 2294cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 22959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 22969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getEventTime 22979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getHistoricalEventTime(int pos) { 229991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, pos) / NS_PER_MS; 23009822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 23019822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 23029822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 2303b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Returns the time that a historical movement occurred between this event 2304b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base 2305b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * but with nanosecond (instead of millisecond) precision. 2306b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 2307b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * This only applies to ACTION_MOVE events. 2308b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p><p> 2309b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * The value is in nanosecond precision but it may not have nanosecond accuracy. 2310b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 2311b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2312b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @param pos Which historical value to return; must be less than 2313b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * {@link #getHistorySize} 2314b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time that a historical movement occurred between this 2315b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * event and the previous event, 2316b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 2317b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond (instead of millisecond) precision. 2318b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2319b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @see #getHistorySize 2320b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @see #getEventTime 2321b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2322b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @hide 2323b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown */ 2324b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown public final long getHistoricalEventTimeNano(int pos) { 2325b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown return nativeGetEventTimeNanos(mNativePtr, pos); 2326b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown } 2327b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown 2328b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown /** 232991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalX(int, int)} for the first pointer index (may be an 23300dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 233191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 233291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 233391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 233491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 233591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 233691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX() 233791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 23389822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23399822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalX(int pos) { 234091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, 0, pos); 23419822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 23429822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 23439822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 234491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalY(int, int)} for the first pointer index (may be an 23450dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 234691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 234791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 234891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 234991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 235091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 235191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY() 235291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 23539822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23549822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalY(int pos) { 235591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, 0, pos); 23569822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 23579822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 23589822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 235991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalPressure(int, int)} for the first pointer index (may be an 23600dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 236191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 236291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 236391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 236491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 236591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 236691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure() 236791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 23689822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23699822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalPressure(int pos) { 237091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, pos); 23719822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 23729822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 23739822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 237491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalSize(int, int)} for the first pointer index (may be an 23750dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 237691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 237791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 237891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 237991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 238091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 238191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize() 238291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 23839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalSize(int pos) { 238591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, pos); 23869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2387cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 23889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 238991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalTouchMajor(int, int)} for the first pointer index (may be an 2390c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 239191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 239291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 239391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 239491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 239591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 239691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor() 239791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2398c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2399c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMajor(int pos) { 240091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, pos); 2401c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2402c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2403c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 240491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalTouchMinor(int, int)} for the first pointer index (may be an 2405c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 240691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 240791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 240891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 240991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 241091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 241191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor() 241291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2413c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2414c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMinor(int pos) { 241591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, pos); 2416c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2417c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2418c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 241991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalToolMajor(int, int)} for the first pointer index (may be an 2420c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 242191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 242291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 242391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 242491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 242591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 242691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor() 242791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2428c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2429c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMajor(int pos) { 243091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, pos); 2431c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2432c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2433c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 243491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalToolMinor(int, int)} for the first pointer index (may be an 2435c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 243691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 243791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 243891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 243991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 244091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 244191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor() 244291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2443c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2444c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMinor(int pos) { 244591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, pos); 2446c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2447c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2448c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 244991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalOrientation(int, int)} for the first pointer index (may be an 2450c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 245191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 245291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 245391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 245491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 245591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 245691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation() 245791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 2458c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2459c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalOrientation(int pos) { 246091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, pos); 2461c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 246291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 246391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 246491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalAxisValue(int, int, int)} for the first pointer index (may be an 246591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * arbitrary pointer identifier). 246691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 246791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 246891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 246991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 247091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 247191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 247291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getAxisValue(int) 247391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 247491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 247591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 247691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getHistoricalAxisValue(int axis, int pos) { 247791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, 0, pos); 247891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 247991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 2480c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 24810dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical X coordinate, as per {@link #getX(int)}, that 24820dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 24830dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2484cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24850dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 24860dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 24879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 24889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2489cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 249191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX(int) 249291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 24939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24940dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalX(int pointerIndex, int pos) { 249591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, pos); 24969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2497cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 24989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24990dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical Y coordinate, as per {@link #getY(int)}, that 25000dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 25010dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2502cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 25030dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 25040dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 25059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 25069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2507cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 25089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 250991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY(int) 251091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 25119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25120dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalY(int pointerIndex, int pos) { 251391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, pointerIndex, pos); 25149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2515cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 25169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 25170dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical pressure coordinate, as per {@link #getPressure(int)}, 25180dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * that occurred between this event and the previous event for the given 25190dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * pointer. Only applies to ACTION_MOVE events. 2520cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 25210dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 25220dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 25239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 25249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 25250dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 25269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 252791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure(int) 252891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 25299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25300dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalPressure(int pointerIndex, int pos) { 253191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, pos); 25329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2533cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 25349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 25350dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical size coordinate, as per {@link #getSize(int)}, that 25360dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 25370dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2538cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 25390dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 25400dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 25419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 25429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 25430dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 25449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 254591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize(int) 254691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 25479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25480dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalSize(int pointerIndex, int pos) { 254991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, pos); 25509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2551c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2552c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2553c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical touch major axis coordinate, as per {@link #getTouchMajor(int)}, that 2554c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2555c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2556c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2557c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2558c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2559c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2560c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2561c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2562c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 256391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor(int) 256491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2565c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2566c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMajor(int pointerIndex, int pos) { 256791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, pos); 2568c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2569cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 25709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2571c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical touch minor axis coordinate, as per {@link #getTouchMinor(int)}, that 2572c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2573c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2574c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2575c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2576c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2577c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2578c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2579c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2580c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 258191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor(int) 258291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2583c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2584c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMinor(int pointerIndex, int pos) { 258591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, pos); 2586c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2587c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2588c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2589c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical tool major axis coordinate, as per {@link #getToolMajor(int)}, that 2590c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2591c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2592c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2593c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2594c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2595c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2596c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2597c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2598c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 259991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor(int) 260091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2601c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2602c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMajor(int pointerIndex, int pos) { 260391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, pos); 2604c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2605c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2606c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2607c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical tool minor axis coordinate, as per {@link #getToolMinor(int)}, that 2608c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2609c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2610c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2611c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2612c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2613c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2614c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2615c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2616c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 261791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor(int) 261891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2619c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2620c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMinor(int pointerIndex, int pos) { 262191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, pos); 2622c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2623c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2624c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2625c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical orientation coordinate, as per {@link #getOrientation(int)}, that 2626c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2627c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2628c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2629c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2630c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2631c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2632c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2633c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2634c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 263591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation(int) 263691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 26379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2638c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalOrientation(int pointerIndex, int pos) { 263991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, pos); 264091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 264191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 264291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 264391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns the historical value of the requested axis, as per {@link #getAxisValue(int, int)}, 264491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * occurred between this event and the previous event for the given pointer. 264591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Only applies to ACTION_MOVE events. 264691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 264791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 264891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 264991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 265091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 265191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 265291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value of the axis, or 0 if the axis is not available. 265391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 265491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 265591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 265691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 265791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getHistoricalAxisValue(int axis, int pointerIndex, int pos) { 265891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, pointerIndex, pos); 26599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2660cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2662c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Populates a {@link PointerCoords} object with historical pointer coordinate data, 2663c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * as per {@link #getPointerCoords}, that occurred between this event and the previous 2664c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * event for the given pointer. 2665c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2666c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2667c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2668c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2669c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2670c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2671c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param outPointerCoords The pointer coordinate object to populate. 2672c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2673c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 2674c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getPointerCoords 267591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see PointerCoords 2676c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2677c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void getHistoricalPointerCoords(int pointerIndex, int pos, 2678c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown PointerCoords outPointerCoords) { 267991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeGetPointerCoords(mNativePtr, pointerIndex, pos, outPointerCoords); 2680c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2681c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2682c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 268346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Returns a bitfield indicating which edges, if any, were touched by this 2684cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * MotionEvent. For touch events, clients can use this to determine if the 2685cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * user's finger was touching the edge of the display. 2686cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 2687d41cff2d3a95963a7aa348e502c6d42bae367235Jeff Brown * This property is only set for {@link #ACTION_DOWN} events. 2688d41cff2d3a95963a7aa348e502c6d42bae367235Jeff Brown * 26899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_LEFT 26909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_TOP 26919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_RIGHT 26929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_BOTTOM 26939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getEdgeFlags() { 269591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEdgeFlags(mNativePtr); 26969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2697cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 269985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * Sets the bitfield indicating which edges, if any, were touched by this 2700cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * MotionEvent. 2701cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 27029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getEdgeFlags() 27039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 27049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setEdgeFlags(int flags) { 270591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetEdgeFlags(mNativePtr, flags); 27069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 27089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 27099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets this event's action. 27109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 27119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setAction(int action) { 271291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetAction(mNativePtr, action); 27139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 27149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 27159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 27169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Adjust this event's location. 27179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaX Amount to add to the current X coordinate of the event. 27189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaY Amount to add to the current Y coordinate of the event. 27199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 27209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void offsetLocation(float deltaX, float deltaY) { 27219ea77fc821918ea562ff4907945b865e39e0201aJeff Brown if (deltaX != 0.0f || deltaY != 0.0f) { 27229ea77fc821918ea562ff4907945b865e39e0201aJeff Brown nativeOffsetLocation(mNativePtr, deltaX, deltaY); 27239ea77fc821918ea562ff4907945b865e39e0201aJeff Brown } 27249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2725cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 27269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 27279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set this event's location. Applies {@link #offsetLocation} with a 27289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * delta from the current location to the given new location. 2729cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 27309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x New absolute X location. 27319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y New absolute Y location. 27329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 27339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setLocation(float x, float y) { 273491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float oldX = getX(); 273591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float oldY = getY(); 27369ea77fc821918ea562ff4907945b865e39e0201aJeff Brown offsetLocation(x - oldX, y - oldY); 27375c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown } 27385c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown 273920e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown /** 274020e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * Applies a transformation matrix to all of the points in the event. 274120e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * 274220e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * @param matrix The transformation matrix to apply. 274320e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown */ 274420e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown public final void transform(Matrix matrix) { 274520e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown if (matrix == null) { 274620e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown throw new IllegalArgumentException("matrix must not be null"); 274720e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown } 274820e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown 274991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeTransform(mNativePtr, matrix); 27509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2751cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 27529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 27539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Add a new movement to the batch of movements in this event. The event's 2754c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * current location, position and size is updated to the new values. 2755c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The current values in the event are added to a list of historical values. 275691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2757cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 2758cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 2759c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The time stamp (in ms) for this data. 27609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The new X position. 27619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The new Y position. 27629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pressure The new pressure. 27639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param size The new size. 27649822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState Meta key state. 27659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 27669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void addBatch(long eventTime, float x, float y, 27679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float pressure, float size, int metaState) { 2768fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 2769fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(1); 2770fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 2771fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].clear(); 2772fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].x = x; 2773fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].y = y; 2774fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].pressure = pressure; 2775fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].size = size; 2776fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2777fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pc, metaState); 277891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 27799822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 2780cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 27819822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 2782c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Add a new movement to the batch of movements in this event. The event's 2783c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * current location, position and size is updated to the new values. 2784c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The current values in the event are added to a list of historical values. 278591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2786cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 27879822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * 2788c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The time stamp (in ms) for this data. 2789c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerCoords The new pointer coordinates. 27909822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState Meta key state. 27919822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 2792c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void addBatch(long eventTime, PointerCoords[] pointerCoords, int metaState) { 279391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pointerCoords, metaState); 27949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2795cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 2796fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 27979d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * Adds all of the movement samples of the specified event to this one if 27989d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * it is compatible. To be compatible, the event must have the same device id, 27999d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * source, action, flags, pointer count, pointer properties. 28009d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * 28019d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 28029d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * 28039d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @param event The event whose movements samples should be added to this one 28049d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * if possible. 28059d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @return True if batching was performed or false if batching was not possible. 28069d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @hide 28079d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown */ 28089d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public final boolean addBatch(MotionEvent event) { 28099d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int action = nativeGetAction(mNativePtr); 28109d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (action != ACTION_MOVE && action != ACTION_HOVER_MOVE) { 28119d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 28129d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28139d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (action != nativeGetAction(event.mNativePtr)) { 28149d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 28159d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28169d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28179d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (nativeGetDeviceId(mNativePtr) != nativeGetDeviceId(event.mNativePtr) 28189d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown || nativeGetSource(mNativePtr) != nativeGetSource(event.mNativePtr) 28199d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown || nativeGetFlags(mNativePtr) != nativeGetFlags(event.mNativePtr)) { 28209d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 28219d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28229d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28239d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 28249d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (pointerCount != nativeGetPointerCount(event.mNativePtr)) { 28259d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 28269d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28279d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28289d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown synchronized (gSharedTempLock) { 28299d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown ensureSharedTempPointerCapacity(Math.max(pointerCount, 2)); 28309d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 28319d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 28329d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28339d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int i = 0; i < pointerCount; i++) { 28349d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerProperties(mNativePtr, i, pp[0]); 28359d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerProperties(event.mNativePtr, i, pp[1]); 28369d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (!pp[0].equals(pp[1])) { 28379d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 28389d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28399d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28409d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28419d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int metaState = nativeGetMetaState(event.mNativePtr); 28429d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int historySize = nativeGetHistorySize(event.mNativePtr); 28439d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int h = 0; h <= historySize; h++) { 28449d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int historyPos = (h == historySize ? HISTORY_CURRENT : h); 28459d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28469d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int i = 0; i < pointerCount; i++) { 28479d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerCoords(event.mNativePtr, i, historyPos, pc[i]); 28489d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28499d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28509d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final long eventTimeNanos = nativeGetEventTimeNanos(event.mNativePtr, historyPos); 28519d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeAddBatch(mNativePtr, eventTimeNanos, pc, metaState); 28529d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28539d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28549d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return true; 28559d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28569d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28579d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown /** 2858fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns true if all points in the motion event are completely within the specified bounds. 2859fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2860fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2861fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final boolean isWithinBoundsNoHistory(float left, float top, 2862fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown float right, float bottom) { 2863fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 2864fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 2865fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final float x = nativeGetAxisValue(mNativePtr, AXIS_X, i, HISTORY_CURRENT); 2866fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final float y = nativeGetAxisValue(mNativePtr, AXIS_Y, i, HISTORY_CURRENT); 2867fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (x < left || x > right || y < top || y > bottom) { 2868fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return false; 2869fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2870fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2871fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return true; 2872fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2873fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2874fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final float clamp(float value, float low, float high) { 2875fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (value < low) { 2876fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return low; 2877fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else if (value > high) { 2878fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return high; 2879fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2880fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return value; 2881fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2882fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2883fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 2884fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a new motion events whose points have been clamped to the specified bounds. 2885fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2886fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2887fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final MotionEvent clampNoHistory(float left, float top, float right, float bottom) { 2888fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 2889fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 2890fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 2891fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2892fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(pointerCount); 2893fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 2894fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 2895fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2896fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 2897fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, i, pp[i]); 2898fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerCoords(mNativePtr, i, HISTORY_CURRENT, pc[i]); 2899fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[i].x = clamp(pc[i].x, left, right); 2900fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[i].y = clamp(pc[i].y, top, bottom); 2901fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2902fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 2903fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), 2904fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetAction(mNativePtr), nativeGetFlags(mNativePtr), 2905fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), 2906fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetButtonState(mNativePtr), 2907fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), 2908fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), 2909fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDownTimeNanos(mNativePtr), 2910fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT), 2911fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCount, pp, pc); 2912fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return ev; 2913fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2914fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2915fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2916fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 2917fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets an integer where each pointer id present in the event is marked as a bit. 2918fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2919fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2920fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getPointerIdBits() { 2921fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int idBits = 0; 2922fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 2923fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 2924fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown idBits |= 1 << nativeGetPointerId(mNativePtr, i); 2925fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2926fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return idBits; 2927fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2928fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2929fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 2930fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Splits a motion event such that it includes only a subset of pointer ids. 2931fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2932fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2933fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final MotionEvent split(int idBits) { 2934fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 2935fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 2936fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldPointerCount = nativeGetPointerCount(mNativePtr); 2937fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(oldPointerCount); 2938fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 2939fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 2940fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int[] map = gSharedTempPointerIndexMap; 2941fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2942fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldAction = nativeGetAction(mNativePtr); 2943fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldActionMasked = oldAction & ACTION_MASK; 2944fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldActionPointerIndex = (oldAction & ACTION_POINTER_INDEX_MASK) 2945fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown >> ACTION_POINTER_INDEX_SHIFT; 2946fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newActionPointerIndex = -1; 2947fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newPointerCount = 0; 2948fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newIdBits = 0; 2949fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < oldPointerCount; i++) { 2950fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, i, pp[newPointerCount]); 2951fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int idBit = 1 << pp[newPointerCount].id; 2952fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if ((idBit & idBits) != 0) { 2953fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (i == oldActionPointerIndex) { 2954fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newActionPointerIndex = newPointerCount; 2955fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2956fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown map[newPointerCount] = i; 2957fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newPointerCount += 1; 2958fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newIdBits |= idBit; 2959fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2960fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2961fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2962fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (newPointerCount == 0) { 2963fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown throw new IllegalArgumentException("idBits did not match any ids in the event"); 2964fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2965fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2966fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int newAction; 2967fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (oldActionMasked == ACTION_POINTER_DOWN || oldActionMasked == ACTION_POINTER_UP) { 2968fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (newActionPointerIndex < 0) { 2969fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // An unrelated pointer changed. 2970fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = ACTION_MOVE; 2971fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else if (newPointerCount == 1) { 2972fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // The first/last pointer went down/up. 2973fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldActionMasked == ACTION_POINTER_DOWN 2974fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ? ACTION_DOWN : ACTION_UP; 2975fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 2976fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // A secondary pointer went down/up. 2977fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldActionMasked 2978fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown | (newActionPointerIndex << ACTION_POINTER_INDEX_SHIFT); 2979fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2980fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 2981fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Simple up/down/cancel/move or other motion action. 2982fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldAction; 2983fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2984fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2985fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int historySize = nativeGetHistorySize(mNativePtr); 2986fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int h = 0; h <= historySize; h++) { 2987fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int historyPos = h == historySize ? HISTORY_CURRENT : h; 2988fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2989fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < newPointerCount; i++) { 2990fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerCoords(mNativePtr, map[i], historyPos, pc[i]); 2991fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2992fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2993fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final long eventTimeNanos = nativeGetEventTimeNanos(mNativePtr, historyPos); 2994fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (h == 0) { 2995fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 2996fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), 2997fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction, nativeGetFlags(mNativePtr), 2998fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), 2999fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetButtonState(mNativePtr), 3000fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), 3001fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), 3002fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDownTimeNanos(mNativePtr), eventTimeNanos, 3003fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newPointerCount, pp, pc); 3004fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 3005fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeAddBatch(ev.mNativePtr, eventTimeNanos, pc, 0); 3006fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3007fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3008fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return ev; 3009fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3010fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3011fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 30129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 30139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 3014fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown StringBuilder msg = new StringBuilder(); 3015fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append("MotionEvent { action=").append(actionToString(getAction())); 3016fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3017fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = getPointerCount(); 3018fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 3019fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", id[").append(i).append("]=").append(getPointerId(i)); 3020fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", x[").append(i).append("]=").append(getX(i)); 3021fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", y[").append(i).append("]=").append(getY(i)); 3022fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", toolType[").append(i).append("]=").append( 3023fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolTypeToString(getToolType(i))); 3024fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3025fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 30268134681b25dfff814ffeaad8ff70e84316c1869fJeff Brown msg.append(", buttonState=").append(MotionEvent.buttonStateToString(getButtonState())); 3027fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", metaState=").append(KeyEvent.metaStateToString(getMetaState())); 3028fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", flags=0x").append(Integer.toHexString(getFlags())); 3029fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", edgeFlags=0x").append(Integer.toHexString(getEdgeFlags())); 3030fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", pointerCount=").append(pointerCount); 3031fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", historySize=").append(getHistorySize()); 3032fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", eventTime=").append(getEventTime()); 3033fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", downTime=").append(getDownTime()); 3034fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", deviceId=").append(getDeviceId()); 3035fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", source=0x").append(Integer.toHexString(getSource())); 3036fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(" }"); 3037fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return msg.toString(); 3038497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 3039497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown 3040497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown /** 30414dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * Returns a string that represents the symbolic name of the specified unmasked action 304291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * such as "ACTION_DOWN", "ACTION_POINTER_DOWN(3)" or an equivalent numeric constant 304391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * such as "35" if unknown. 3044497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * 30454dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @param action The unmasked action. 3046497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * @return The symbolic name of the specified action. 30474dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @see #getAction() 3048497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown */ 3049497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown public static String actionToString(int action) { 3050497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown switch (action) { 3051497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_DOWN: 3052497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_DOWN"; 3053497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_UP: 3054497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_UP"; 3055497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_CANCEL: 3056497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_CANCEL"; 305733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown case ACTION_OUTSIDE: 305833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown return "ACTION_OUTSIDE"; 3059497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_MOVE: 3060497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_MOVE"; 3061cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown case ACTION_HOVER_MOVE: 3062cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown return "ACTION_HOVER_MOVE"; 306333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown case ACTION_SCROLL: 306433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown return "ACTION_SCROLL"; 3065a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown case ACTION_HOVER_ENTER: 3066a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown return "ACTION_HOVER_ENTER"; 3067a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown case ACTION_HOVER_EXIT: 3068a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown return "ACTION_HOVER_EXIT"; 3069497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 3070497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown int index = (action & ACTION_POINTER_INDEX_MASK) >> ACTION_POINTER_INDEX_SHIFT; 3071497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown switch (action & ACTION_MASK) { 3072497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_POINTER_DOWN: 3073497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_POINTER_DOWN(" + index + ")"; 3074497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_POINTER_UP: 3075497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_POINTER_UP(" + index + ")"; 3076497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown default: 3077497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return Integer.toString(action); 3078497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 30799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 30809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 308191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 308291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns a string that represents the symbolic name of the specified axis 30836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * such as "AXIS_X" or an equivalent numeric constant such as "42" if unknown. 308491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 30854dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @param axis The axis. 308691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The symbolic name of the specified axis. 308791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 308891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static String axisToString(int axis) { 3089337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright String symbolicName = nativeAxisToString(axis); 3090337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright return symbolicName != null ? LABEL_PREFIX + symbolicName : Integer.toString(axis); 30916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 30926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 30936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 3094cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Gets an axis by its symbolic name such as "AXIS_X" or an 3095cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * equivalent numeric constant such as "42". 30966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 30976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @param symbolicName The symbolic name of the axis. 30986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @return The axis or -1 if not found. 30994dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @see KeyEvent#keyCodeToString(int) 31006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 31016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static int axisFromString(String symbolicName) { 3102337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright if (symbolicName.startsWith(LABEL_PREFIX)) { 3103337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright symbolicName = symbolicName.substring(LABEL_PREFIX.length()); 3104973efa0813260c24390d46b07e524de605630180Michael Wright int axis = nativeAxisFromString(symbolicName); 3105973efa0813260c24390d46b07e524de605630180Michael Wright if (axis >= 0) { 3106973efa0813260c24390d46b07e524de605630180Michael Wright return axis; 3107973efa0813260c24390d46b07e524de605630180Michael Wright } 31086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 31096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown try { 31106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return Integer.parseInt(symbolicName, 10); 31116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } catch (NumberFormatException ex) { 31126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return -1; 311391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 311491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 311591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3116fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3117fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a string that represents the symbolic name of the specified combined 3118fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * button state flags such as "0", "BUTTON_PRIMARY", 3119fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * "BUTTON_PRIMARY|BUTTON_SECONDARY" or an equivalent numeric constant such as "0x10000000" 3120fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * if unknown. 3121fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3122fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param buttonState The button state. 3123fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The symbolic name of the specified combined button state flags. 3124fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3125fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3126fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static String buttonStateToString(int buttonState) { 3127fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (buttonState == 0) { 3128fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return "0"; 3129fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3130fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown StringBuilder result = null; 3131fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int i = 0; 3132fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown while (buttonState != 0) { 3133fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final boolean isSet = (buttonState & 1) != 0; 3134fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown buttonState >>>= 1; // unsigned shift! 3135fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (isSet) { 3136fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final String name = BUTTON_SYMBOLIC_NAMES[i]; 3137fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (result == null) { 3138fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (buttonState == 0) { 3139fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return name; 3140fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3141fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result = new StringBuilder(name); 3142fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 3143fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result.append('|'); 3144fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result.append(name); 3145fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3146fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3147fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown i += 1; 3148fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3149fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return result.toString(); 3150fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3151fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3152fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3153fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a string that represents the symbolic name of the specified tool type 3154fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as "TOOL_TYPE_FINGER" or an equivalent numeric constant such as "42" if unknown. 3155fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3156fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param toolType The tool type. 3157fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The symbolic name of the specified tool type. 3158fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3159fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3160fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static String toolTypeToString(int toolType) { 3161fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown String symbolicName = TOOL_TYPE_SYMBOLIC_NAMES.get(toolType); 3162fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return symbolicName != null ? symbolicName : Integer.toString(toolType); 3163fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3164fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3165cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan /** 3166cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * Checks if a mouse or stylus button (or combination of buttons) is pressed. 3167cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @param button Button (or combination of buttons). 3168cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @return True if specified buttons are pressed. 3169cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * 3170cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_PRIMARY 3171cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_SECONDARY 3172cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_TERTIARY 3173cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_FORWARD 3174cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_BACK 3175cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan */ 3176cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan public final boolean isButtonPressed(int button) { 3177cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan if (button == 0) { 3178cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan return false; 3179cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan } 3180cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan return (getButtonState() & button) == button; 3181cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan } 3182cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan 31839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<MotionEvent> CREATOR 31849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<MotionEvent>() { 31859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MotionEvent createFromParcel(Parcel in) { 31866ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown in.readInt(); // skip token, we already know this is a MotionEvent 31876ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown return MotionEvent.createFromParcelBody(in); 31889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MotionEvent[] newArray(int size) { 31919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new MotionEvent[size]; 31929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 31949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31956ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown /** @hide */ 31966ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown public static MotionEvent createFromParcelBody(Parcel in) { 319791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 319891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeReadFromParcel(ev.mNativePtr, in); 31996ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown return ev; 32006ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown } 320191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3202c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale /** @hide */ 3203c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale @Override 3204c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale public final void cancel() { 3205c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale setAction(ACTION_CANCEL); 3206c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale } 3207c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale 32089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel out, int flags) { 32096ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown out.writeInt(PARCEL_TOKEN_MOTION_EVENT); 321091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeWriteToParcel(mNativePtr, out); 32119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 321291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3213c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3214c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Transfer object for pointer coordinates. 3215c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 3216fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Objects of this type can be used to specify the pointer coordinates when 3217fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * creating new {@link MotionEvent} objects and to query pointer coordinates 3218fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * in bulk. 3219c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 3220c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Refer to {@link InputDevice} for information about how different kinds of 3221c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * input devices and sources represent pointer coordinates. 3222c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3223c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final class PointerCoords { 322491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final int INITIAL_PACKED_AXIS_VALUES = 8; 32256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown private long mPackedAxisBits; 322691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private float[] mPackedAxisValues; 322791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 322891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 322991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Creates a pointer coords object with all axes initialized to zero. 323091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 323191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public PointerCoords() { 323291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 323391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 323491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 323591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Creates a pointer coords object as a copy of the 323691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * contents of another pointer coords object. 323791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 323891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param other The pointer coords object to copy. 323991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 324091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public PointerCoords(PointerCoords other) { 324191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown copyFrom(other); 324291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 324391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3244fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** @hide */ 3245fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static PointerCoords[] createArray(int size) { 3246fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerCoords[] array = new PointerCoords[size]; 3247fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < size; i++) { 3248fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown array[i] = new PointerCoords(); 3249fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3250fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return array; 3251fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3252fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3253c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 32546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The X component of the pointer movement. 325591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 325691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 3257c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3258c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float x; 3259c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3260c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 32616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The Y component of the pointer movement. 326291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 326391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 3264c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3265c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float y; 3266c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3267c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 326891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * A normalized value that describes the pressure applied to the device 326991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * by a finger or other tool. 3270c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), 327191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * although values higher than 1 may be generated depending on the calibration of 3272c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the input device. 327391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 327491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_PRESSURE 3275c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3276c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float pressure; 3277c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3278c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 327991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * A normalized value that describes the approximate size of the pointer touch area 328091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * in relation to the maximum detectable size of the device. 328191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * It represents some approximation of the area of the screen being 3282c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * pressed; the actual value in pixels corresponding to the 3283c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touch is normalized with the device specific range of values 3284c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * and scaled to a value between 0 and 1. The value of size can be used to 3285c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * determine fat touch events. 328691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 328791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_SIZE 3288c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3289c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float size; 3290c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3291c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3292c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the major axis of an ellipse that describes the touch area at 3293c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the point of contact. 329491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 329591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 329691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 329791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOUCH_MAJOR 3298c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3299c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float touchMajor; 3300c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3301c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3302c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the minor axis of an ellipse that describes the touch area at 3303c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the point of contact. 330491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 330591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 330691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 330791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOUCH_MINOR 3308c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3309c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float touchMinor; 3310c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3311c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3312c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the major axis of an ellipse that describes the size of 3313c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool. 3314c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 3315c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 331691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 331791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 331891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 331991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOOL_MAJOR 3320c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3321c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float toolMajor; 3322c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3323c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3324c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the minor axis of an ellipse that describes the size of 3325c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool. 3326c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 3327c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 332891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 332991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 333091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 333191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOOL_MINOR 3332c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3333c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float toolMinor; 3334c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3335c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3336c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The orientation of the touch area and tool area in radians clockwise from vertical. 33376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 3338c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 3339c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 3340c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the left. 33416d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 3342c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (finger pointing fully right). 334391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 334491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_ORIENTATION 3345c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3346c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float orientation; 334791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 334891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 334991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Clears the contents of this object. 335091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Resets all axes to zero. 335191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 335291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void clear() { 335391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = 0; 335491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 335591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = 0; 335691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = 0; 335791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = 0; 335891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = 0; 335991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = 0; 336091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = 0; 336191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = 0; 336291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = 0; 336391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = 0; 3364c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 336591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 336691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 336791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Copies the contents of another pointer coords object. 336891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 336991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param other The pointer coords object to copy. 337091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 337191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void copyFrom(PointerCoords other) { 33726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = other.mPackedAxisBits; 337391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = bits; 337491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (bits != 0) { 337591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown final float[] otherValues = other.mPackedAxisValues; 33766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int count = Long.bitCount(bits); 337791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] values = mPackedAxisValues; 337891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (values == null || count > values.length) { 337991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = new float[otherValues.length]; 338091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 338191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 338291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(otherValues, 0, values, 0, count); 338391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 338491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 338591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = other.x; 338691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = other.y; 338791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = other.pressure; 338891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = other.size; 338991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = other.touchMajor; 339091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = other.touchMinor; 339191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = other.toolMajor; 339291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = other.toolMinor; 339391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = other.orientation; 3394c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 339591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 339691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 339791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Gets the value associated with the specified axis. 339891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 339991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 340091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value associated with the axis, or 0 if none. 340191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 340291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 340391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 340491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 340591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public float getAxisValue(int axis) { 340691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown switch (axis) { 340791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_X: 340891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return x; 340991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_Y: 341091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return y; 341191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_PRESSURE: 341291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return pressure; 341391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_SIZE: 341491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return size; 341591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MAJOR: 341691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return touchMajor; 341791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MINOR: 341891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return touchMinor; 341991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MAJOR: 342091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return toolMajor; 342191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MINOR: 342291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return toolMinor; 342391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_ORIENTATION: 342491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return orientation; 342591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown default: { 34266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown if (axis < 0 || axis > 63) { 34276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown throw new IllegalArgumentException("Axis out of range."); 34286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 34296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = mPackedAxisBits; 34309adca065148f704187866c53cceda8e0050b1f35Michael Wright final long axisBit = 0x8000000000000000L >>> axis; 343191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if ((bits & axisBit) == 0) { 343291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return 0; 343391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 34349adca065148f704187866c53cceda8e0050b1f35Michael Wright final int index = Long.bitCount(bits & ~(0xFFFFFFFFFFFFFFFFL >>> axis)); 343591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return mPackedAxisValues[index]; 343691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 343791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 3438c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 343991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 344091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 344191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Sets the value associated with the specified axis. 344291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 344391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to assign. 344491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param value The value to set. 344591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 344691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 344791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 344891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 344991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void setAxisValue(int axis, float value) { 345091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown switch (axis) { 345191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_X: 345291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = value; 345391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 345491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_Y: 345591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = value; 345691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 345791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_PRESSURE: 345891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = value; 345991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 346091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_SIZE: 346191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = value; 346291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 346391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MAJOR: 346491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = value; 346591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 346691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MINOR: 346791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = value; 346891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 346991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MAJOR: 347091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = value; 347191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 347291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MINOR: 347391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = value; 347491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 347591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_ORIENTATION: 347691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = value; 347791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 347891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown default: { 34796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown if (axis < 0 || axis > 63) { 34806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown throw new IllegalArgumentException("Axis out of range."); 34816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 34826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = mPackedAxisBits; 34839adca065148f704187866c53cceda8e0050b1f35Michael Wright final long axisBit = 0x8000000000000000L >>> axis; 34849adca065148f704187866c53cceda8e0050b1f35Michael Wright final int index = Long.bitCount(bits & ~(0xFFFFFFFFFFFFFFFFL >>> axis)); 348591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] values = mPackedAxisValues; 348691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if ((bits & axisBit) == 0) { 348791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (values == null) { 348891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = new float[INITIAL_PACKED_AXIS_VALUES]; 348991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 349091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } else { 34916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int count = Long.bitCount(bits); 349291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (count < values.length) { 349391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (index != count) { 349491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, index, values, index + 1, 349591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown count - index); 349691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 349791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } else { 349891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] newValues = new float[count * 2]; 349991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, 0, newValues, 0, index); 350091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, index, newValues, index + 1, 350191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown count - index); 350291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = newValues; 350391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 350491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 350591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 350691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = bits | axisBit; 350791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 350891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values[index] = value; 350991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 351091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 3511c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 3512c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 3513fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3514fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3515fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Transfer object for pointer properties. 3516fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3517fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Objects of this type can be used to specify the pointer id and tool type 3518fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when creating new {@link MotionEvent} objects and to query pointer properties in bulk. 3519fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3520fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final class PointerProperties { 3521fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3522fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Creates a pointer properties object with an invalid pointer id. 3523fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3524fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public PointerProperties() { 3525fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown clear(); 3526fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3527fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3528fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3529fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Creates a pointer properties object as a copy of the contents of 3530fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * another pointer properties object. 3531fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param other 3532fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3533fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public PointerProperties(PointerProperties other) { 3534fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown copyFrom(other); 3535fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3536fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3537fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** @hide */ 3538fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static PointerProperties[] createArray(int size) { 3539fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerProperties[] array = new PointerProperties[size]; 3540fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < size; i++) { 3541fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown array[i] = new PointerProperties(); 3542fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3543fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return array; 3544fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3545fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3546fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3547fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer id. 3548fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Initially set to {@link #INVALID_POINTER_ID} (-1). 3549fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3550fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent#getPointerId(int) 3551fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3552fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public int id; 3553fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3554fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3555fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer tool type. 3556fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Initially set to 0. 3557fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3558fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent#getToolType(int) 3559fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3560fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public int toolType; 3561fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3562fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3563fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Resets the pointer properties to their initial values. 3564fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3565fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public void clear() { 3566fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown id = INVALID_POINTER_ID; 3567fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolType = TOOL_TYPE_UNKNOWN; 3568fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3569fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3570fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3571fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Copies the contents of another pointer properties object. 3572fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3573fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param other The pointer properties object to copy. 3574fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3575fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public void copyFrom(PointerProperties other) { 3576fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown id = other.id; 3577fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolType = other.toolType; 3578fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 35799d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 35809d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown @Override 35819d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public boolean equals(Object other) { 35829d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (other instanceof PointerProperties) { 35839d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return equals((PointerProperties)other); 35849d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 35859d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 35869d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 35879d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 35889d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown private boolean equals(PointerProperties other) { 35899d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return other != null && id == other.id && toolType == other.toolType; 35909d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 35919d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 35929d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown @Override 35939d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public int hashCode() { 35949d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return id | (toolType << 8); 35959d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 3596fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 35979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3598