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; 170fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 171fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 172fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * An invalid pointer id. 173fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 174fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This value (-1) can be used as a placeholder to indicate that a pointer id 175fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * has not been assigned or is not available. It cannot appear as 176fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a pointer id inside a {@link MotionEvent}. 177fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int INVALID_POINTER_ID = -1; 179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1819822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Bit mask of the parts of the action code that are the action itself. 1829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 1839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_MASK = 0xff; 1849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 1859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 186fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A pressed gesture has started, the 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * motion contains the initial starting location. 188fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 189fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This is also a good time to check the button state to distinguish 190fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * secondary and tertiary button clicks and handle them appropriately. 191fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getButtonState} to retrieve the button state. 192fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_DOWN = 0; 1959822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 197fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A pressed gesture has finished, the 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * motion contains the final release location as well as any intermediate 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * points since the last down or move event. 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_UP = 1; 2029822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 204fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A change has happened during a 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * press gesture (between {@link #ACTION_DOWN} and {@link #ACTION_UP}). 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The motion contains the most recent point, as well as any intermediate 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * points since the last down or move event. 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_MOVE = 2; 2109822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 212fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The current gesture has been aborted. 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You will not receive any more points in it. You should treat this as 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an up event, but not perform any action that you normally would. 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_CANCEL = 3; 2179822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 219fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A movement has happened outside of the 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * normal bounds of the UI element. This does not provide a full gesture, 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * but only the initial location of the movement/touch. 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_OUTSIDE = 4; 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2259822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 226fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A non-primary pointer has gone down. 227fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 228fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. 229fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 230fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the 231fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * unmasked action returned by {@link #getAction}. 232fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 2339822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 2349822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_DOWN = 5; 2359822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2369822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 237fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A non-primary pointer has gone up. 238fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 239fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. 240fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 241fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the 242fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * unmasked action returned by {@link #getAction}. 243fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 2449822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 245b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_UP = 6; 246cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown 247cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown /** 248fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A change happened but the pointer 249cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * is not down (unlike {@link #ACTION_MOVE}). The motion contains the most 250cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * recent point, as well as any intermediate points since the last 251cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * hover move event. 25233bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * <p> 253a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer. 254a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 25533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * This action is not a touch event so it is delivered to 25633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 25733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 25833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 259cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown */ 260cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown public static final int ACTION_HOVER_MOVE = 7; 261cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown 2629822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 263fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The motion event contains relative 26433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * vertical and/or horizontal scroll offsets. Use {@link #getAxisValue(int)} 26533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * to retrieve the information from {@link #AXIS_VSCROLL} and {@link #AXIS_HSCROLL}. 26633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * The pointer may or may not be down when this event is dispatched. 267fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 268a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer, which 269a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * may not be the window or view currently touched. 270fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 27133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * This action is not a touch event so it is delivered to 27233bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 27333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 27433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 27533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown */ 27633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown public static final int ACTION_SCROLL = 8; 27733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown 27833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown /** 279fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The pointer is not down but has entered the 280a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * boundaries of a window or view. 281a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * <p> 282a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer. 283a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 284a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is not a touch event so it is delivered to 285a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 286a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 287a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p> 288a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown */ 289a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown public static final int ACTION_HOVER_ENTER = 9; 290a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown 291a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown /** 292fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The pointer is not down but has exited the 293a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * boundaries of a window or view. 294a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * <p> 295a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view that was previously under the pointer. 296a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 297a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is not a touch event so it is delivered to 298a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 299a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 300a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p> 301a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown */ 302a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown public static final int ACTION_HOVER_EXIT = 10; 303a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown 304a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown /** 305b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * Bits in the action code that represent a pointer index, used with 306b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * {@link #ACTION_POINTER_DOWN} and {@link #ACTION_POINTER_UP}. Shifting 307b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * down by {@link #ACTION_POINTER_INDEX_SHIFT} provides the actual pointer 308b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * index where the data for the pointer going up or down can be found; you can 309b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * get its identifier with {@link #getPointerId(int)} and the actual 310b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data with {@link #getX(int)} etc. 311fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 312fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getActionIndex 3139822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 314b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_INDEX_MASK = 0xff00; 3159822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3169822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 317b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * Bit shift for the action bits holding the pointer index as 318b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * defined by {@link #ACTION_POINTER_INDEX_MASK}. 319fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 320fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getActionIndex 3219822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 322b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_INDEX_SHIFT = 8; 323fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3249822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 325b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 326b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 3279822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 328b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 329b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_1_DOWN = ACTION_POINTER_DOWN | 0x0000; 330b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 331b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 332b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 333b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 334b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 335b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 336b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_2_DOWN = ACTION_POINTER_DOWN | 0x0100; 3379822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3389822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 339b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 340b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 3419822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 342b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 343b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_3_DOWN = ACTION_POINTER_DOWN | 0x0200; 344b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 345b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 346b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 347b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 348b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 349b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3509822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_1_UP = ACTION_POINTER_UP | 0x0000; 3519822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3529822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 353b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 354b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 3559822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 356b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3579822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_2_UP = ACTION_POINTER_UP | 0x0100; 3589822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3599822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 360b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 361b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 3629822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 363b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3649822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_3_UP = ACTION_POINTER_UP | 0x0200; 3659822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3669822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 367b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_MASK} to match 368b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * the actual data contained in these bits. 3699822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 370b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3710dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public static final int ACTION_POINTER_ID_MASK = 0xff00; 3729822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3739822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 374b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_SHIFT} to match 375b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * the actual data contained in these bits. 3769822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 377b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3780dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public static final int ACTION_POINTER_ID_SHIFT = 8; 3799822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 38085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown /** 38185a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * This flag indicates that the window that received this motion event is partly 38285a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * or wholly obscured by another visible window above it. This flag is set to true 38385a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * even if the event did not directly pass through the obscured area. 38485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * A security sensitive application can check this flag to identify situations in which 38585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * a malicious application may have covered up part of its content for the purpose 38685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * of misleading the user or hijacking touches. An appropriate response might be 38785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * to drop the suspect touches or to take additional precautions to confirm the user's 38885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * actual intent. 38985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown */ 39085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown public static final int FLAG_WINDOW_IS_OBSCURED = 0x1; 391cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 3929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 39321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * Private flag that indicates when the system has detected that this motion event 39421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * may be inconsistent with respect to the sequence of previously delivered motion events, 39521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * such as when a pointer move event is sent but the pointer is not down. 39621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * 39721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @hide 39821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @see #isTainted 39921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @see #setTainted 40021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown */ 40121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public static final int FLAG_TAINTED = 0x80000000; 40221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 40321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the top edge of the screen. 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_TOP = 0x00000001; 407cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the bottom edge of the screen. 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_BOTTOM = 0x00000002; 412cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the left edge of the screen. 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_LEFT = 0x00000004; 417cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the right edge of the screen. 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_RIGHT = 0x00000008; 422cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 42391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 424fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: X axis of a motion event. 4256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 4276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the absolute X screen position of the center of 4286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * the touch contact area. The units are display pixels. 4296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the absolute X surface position of the center of the touch 430cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 431cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * to query the effective range of values. 4326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, reports the absolute X screen position of the mouse pointer. 4336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 4346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, reports the relative horizontal displacement of the trackball. 4356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 4366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute X position of the joystick. 4376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 4386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 4396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 44091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 44191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX(int) 44291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalX(int, int) 44391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#x 44491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 4459822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 44691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_X = 0; 44791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 44891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 449fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Y axis of a motion event. 4506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 4526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the absolute Y screen position of the center of 4536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * the touch contact area. The units are display pixels. 4546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the absolute Y surface position of the center of the touch 4556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 4566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 4576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, reports the absolute Y screen position of the mouse pointer. 4586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 4596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, reports the relative vertical displacement of the trackball. 4606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up) to 1.0 (down). 4616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Y position of the joystick. 4626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up or far) to 1.0 (down or near). 4636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 4646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 46591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 46691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY(int) 46791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalY(int, int) 46891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#y 46991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 470c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 47191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_Y = 1; 472c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 47391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 474fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Pressure axis of a motion event. 4756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 477cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a touch screen or touch pad, reports the approximate pressure applied to the surface 4786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * by a finger or other tool. The value is normalized to a range from 4796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 0 (no pressure at all) to 1 (normal pressure), although values higher than 1 4806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * may be generated depending on the calibration of the input device. 4816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, the value is set to 1 if the trackball button is pressed 4826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or 0 otherwise. 4836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, the value is set to 1 if the primary mouse button is pressed 4846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or 0 otherwise. 4856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 4866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 48791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 48891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure(int) 48991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalPressure(int, int) 49091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#pressure 49191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 492c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 49391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_PRESSURE = 2; 49491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 49591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 496fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Size axis of a motion event. 4976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 4996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen or touch pad, reports the approximate size of the contact area in 5006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * relation to the maximum detectable size for the device. The value is normalized 5016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to a range from 0 (smallest detectable size) to 1 (largest detectable size), 502cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * although it is not a linear scale. This value is of limited use. 5036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * To obtain calibrated size information, use 5046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * {@link #AXIS_TOUCH_MAJOR} or {@link #AXIS_TOOL_MAJOR}. 5056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 50791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 50891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize(int) 50991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalSize(int, int) 51091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#size 51191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 512c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 51391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_SIZE = 3; 514c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 51591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 516fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: TouchMajor axis of a motion event. 5176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the major axis of an ellipse that 5206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 5226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the major axis of an ellipse that 5236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 52891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 52991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor(int) 53091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalTouchMajor(int, int) 53191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#touchMajor 53291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 533c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 53491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOUCH_MAJOR = 4; 53591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 53691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 537fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: TouchMinor axis of a motion event. 5386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the minor axis of an ellipse that 5416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 5436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the minor axis of an ellipse that 5446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 5506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 55191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 55291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor(int) 55391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalTouchMinor(int, int) 55491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#touchMinor 55591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 556c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 55791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOUCH_MINOR = 5; 558c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 55991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 560fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: ToolMajor axis of a motion event. 5616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the major axis of an ellipse that 5646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 5656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the major axis of an ellipse that 5666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 5676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 5726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The tool size may be larger than the touch size since the tool may not be fully 5746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * in contact with the touch sensor. 5756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 57691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 57791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor(int) 57891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalToolMajor(int, int) 57991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#toolMajor 58091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 5819822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 58291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOOL_MAJOR = 6; 58391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 58491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 585fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: ToolMinor axis of a motion event. 5866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the minor axis of an ellipse that 5896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 5906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the minor axis of an ellipse that 5916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 5926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 5976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 5986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The tool size may be larger than the touch size since the tool may not be fully 5996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * in contact with the touch sensor. 6006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 60191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 60291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor(int) 60391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalToolMinor(int, int) 60491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#toolMinor 60591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 6061e8dfc73fba88766ee3c25ae7b3bb1850319b11dDianne Hackborn */ 60791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOOL_MINOR = 7; 60891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 60991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 610fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Orientation axis of a motion event. 6116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen or touch pad, reports the orientation of the finger 6146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or tool in radians relative to the vertical plane of the device. 6156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 61691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 61791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 61891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * indicates that the major axis of contact is oriented to the left. 61991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 62091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (finger pointing fully right). 62165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <li>For a stylus, the orientation indicates the direction in which the stylus 62265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * is pointing in relation to the vertical axis of the current orientation of the screen. 62365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * The range is from -PI radians to PI radians, where 0 is pointing up, 62465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * -PI/2 radians is pointing left, -PI or PI radians is pointing down, and PI/2 radians 62565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * is pointing right. See also {@link #AXIS_TILT}. 6266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 62891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 62991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation(int) 63091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalOrientation(int, int) 63191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#orientation 63291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 6339e2ad36be87f2703b3d737189944d82f93bd4f27Jeff Brown */ 63491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_ORIENTATION = 8; 63591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 6366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 637fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Vertical Scroll axis of a motion event. 6386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 640cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a mouse, reports the relative movement of the vertical scroll wheel. 64133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * The value is normalized to a range from -1.0 (down) to 1.0 (up). 6426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * This axis should be used to scroll views vertically. 6456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 6466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 6476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 6486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 6496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 6506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 6516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 6526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_VSCROLL = 9; 6536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 6546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 655fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Horizontal Scroll axis of a motion event. 6566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 658cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a mouse, reports the relative movement of the horizontal scroll wheel. 6596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 6606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * This axis should be used to scroll views horizontally. 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_HSCROLL = 10; 6716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 6726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 673fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Z axis of a motion event. 6746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Z position of the joystick. 6776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (high) to 1.0 (low). 6786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <em>On game pads with two analog joysticks, this axis is often reinterpreted 6796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to report the absolute X position of the second joystick instead.</em> 6806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 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_Z = 11; 6896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 6906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 691fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: X Rotation axis of a motion event. 6926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the X axis. 6956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 6966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 6986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 6996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RX = 12; 7056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 707fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Y Rotation axis of a motion event. 7086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the Y axis. 7116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RY = 13; 7216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 723fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Z Rotation axis of a motion event. 7246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the Z axis. 7276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <em>On game pads with two analog joysticks, this axis is often reinterpreted 7296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to report the absolute Y position of the second joystick instead.</em> 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_RZ = 14; 7396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 741fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Hat X axis of a motion event. 7426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute X position of the directional hat control. 7456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 7466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HAT_X = 15; 7556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 757fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Hat Y axis of a motion event. 7586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Y position of the directional hat control. 7616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up) to 1.0 (down). 7626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HAT_Y = 16; 7716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 773fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Left Trigger axis of a motion event. 7746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute position of the left trigger control. 7776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). 7786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_LTRIGGER = 17; 7876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 789fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Right Trigger axis of a motion event. 7906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute position of the right trigger control. 7936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). 7946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 8016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 8026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RTRIGGER = 18; 8036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 8046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 805fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Throttle axis of a motion event. 8063a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8073a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8083a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the throttle control. 8093a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (fully open) to 1.0 (fully closed). 8103a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8113a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8123a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8133a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8143a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8153a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8163a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8173a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8183a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_THROTTLE = 19; 8193a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8203a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 821fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Rudder axis of a motion event. 8223a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8233a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8243a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the rudder control. 8253a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). 8263a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8273a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8283a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8293a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8303a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8313a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8323a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8333a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8343a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_RUDDER = 20; 8353a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8363a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 837fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Wheel axis of a motion event. 8383a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8393a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8403a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the steering wheel control. 8413a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). 8423a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8433a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8443a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8453a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8463a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8473a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8483a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8493a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8503a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_WHEEL = 21; 8513a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8523a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 853fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Gas axis of a motion event. 8543a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8553a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8563a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the gas (accelerator) control. 8573a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (no acceleration) 8583a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * to 1.0 (maximum acceleration). 8593a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8603a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8613a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8623a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8633a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8643a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8653a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8663a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8673a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_GAS = 22; 8683a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8693a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 870fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Brake axis of a motion event. 8713a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8723a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8733a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the brake control. 8743a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (no braking) to 1.0 (maximum braking). 8753a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8763a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8773a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8783a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8793a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8803a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8813a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8823a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8833a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_BRAKE = 23; 8843a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8853a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 886fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Distance axis of a motion event. 887fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 888fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <ul> 889fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <li>For a stylus, reports the distance of the stylus from the screen. 89065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * A value of 0.0 indicates direct contact and larger values indicate increasing 89165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * distance from the surface. 892fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </ul> 893fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 894fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 895fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getAxisValue(int, int) 896fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getHistoricalAxisValue(int, int, int) 897fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 898fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see InputDevice#getMotionRange 899fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 900fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int AXIS_DISTANCE = 24; 901fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 902fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 90365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * Axis constant: Tilt axis of a motion event. 90465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <p> 90565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <ul> 90665fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <li>For a stylus, reports the tilt angle of the stylus in radians where 90765fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * 0 radians indicates that the stylus is being held perpendicular to the 90865fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * surface, and PI/2 radians indicates that the stylus is being held flat 90965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * against the surface. 91065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * </ul> 91165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * </p> 91265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * 91365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see #getAxisValue(int, int) 91465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see #getHistoricalAxisValue(int, int, int) 91565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int, int) 91665fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see InputDevice#getMotionRange 91765fd251c3913fc921468a3dad190810db19eb9dfJeff Brown */ 91865fd251c3913fc921468a3dad190810db19eb9dfJeff Brown public static final int AXIS_TILT = 25; 91965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown 92065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown /** 921fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 1 axis of a motion event. 9226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_1 = 32; 9306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 932fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 2 axis of a motion event. 9336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_2 = 33; 9416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 943fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 3 axis of a motion event. 9446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_3 = 34; 9526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 954fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 4 axis of a motion event. 9556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_4 = 35; 9636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 965fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 5 axis of a motion event. 9666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_5 = 36; 9746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 976fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 6 axis of a motion event. 9776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_6 = 37; 9856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 987fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 7 axis of a motion event. 9886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 9896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 9906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 9916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 9946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 9956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_7 = 38; 9966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 9976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 998fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 8 axis of a motion event. 9996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_8 = 39; 10076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1009fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 9 axis of a motion event. 10106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_9 = 40; 10186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1020fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 10 axis of a motion event. 10216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_10 = 41; 10296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1031fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 11 axis of a motion event. 10326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_11 = 42; 10406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1042fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 12 axis of a motion event. 10436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_12 = 43; 10516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1053fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 13 axis of a motion event. 10546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_13 = 44; 10626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1064fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 14 axis of a motion event. 10656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_14 = 45; 10736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1075fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 15 axis of a motion event. 10766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_15 = 46; 10846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1086fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 16 axis of a motion event. 10876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_16 = 47; 10956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // NOTE: If you add a new axis here you must also add it to: 10976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // native/include/android/input.h 10986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // frameworks/base/include/ui/KeycodeLabels.h 10996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // Symbolic names of all axes. 11016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown private static final SparseArray<String> AXIS_SYMBOLIC_NAMES = new SparseArray<String>(); 1102fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown static { 11036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown SparseArray<String> names = AXIS_SYMBOLIC_NAMES; 11046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_X, "AXIS_X"); 11056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_Y, "AXIS_Y"); 11066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_PRESSURE, "AXIS_PRESSURE"); 11076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_SIZE, "AXIS_SIZE"); 11086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOUCH_MAJOR, "AXIS_TOUCH_MAJOR"); 11096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOUCH_MINOR, "AXIS_TOUCH_MINOR"); 11106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOOL_MAJOR, "AXIS_TOOL_MAJOR"); 11116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOOL_MINOR, "AXIS_TOOL_MINOR"); 11126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_ORIENTATION, "AXIS_ORIENTATION"); 11136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_VSCROLL, "AXIS_VSCROLL"); 11146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HSCROLL, "AXIS_HSCROLL"); 11156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_Z, "AXIS_Z"); 11166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RX, "AXIS_RX"); 11176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RY, "AXIS_RY"); 11186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RZ, "AXIS_RZ"); 11196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HAT_X, "AXIS_HAT_X"); 11206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HAT_Y, "AXIS_HAT_Y"); 11216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_LTRIGGER, "AXIS_LTRIGGER"); 11226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RTRIGGER, "AXIS_RTRIGGER"); 11233a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_THROTTLE, "AXIS_THROTTLE"); 11243a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_RUDDER, "AXIS_RUDDER"); 11253a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_WHEEL, "AXIS_WHEEL"); 11263a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_GAS, "AXIS_GAS"); 11273a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_BRAKE, "AXIS_BRAKE"); 1128fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(AXIS_DISTANCE, "AXIS_DISTANCE"); 112965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown names.append(AXIS_TILT, "AXIS_TILT"); 11306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_1, "AXIS_GENERIC_1"); 11316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_2, "AXIS_GENERIC_2"); 11326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_3, "AXIS_GENERIC_3"); 11336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_4, "AXIS_GENERIC_4"); 11346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_5, "AXIS_GENERIC_5"); 11356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_6, "AXIS_GENERIC_6"); 11366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_7, "AXIS_GENERIC_7"); 11376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_8, "AXIS_GENERIC_8"); 11386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_9, "AXIS_GENERIC_9"); 11396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_10, "AXIS_GENERIC_10"); 11406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_11, "AXIS_GENERIC_11"); 11416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_12, "AXIS_GENERIC_12"); 11426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_13, "AXIS_GENERIC_13"); 11436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_14, "AXIS_GENERIC_14"); 11446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_15, "AXIS_GENERIC_15"); 11456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_16, "AXIS_GENERIC_16"); 11466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 11476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 1148fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 114949754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Button constant: Primary button (left mouse button). 115049754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * 115149754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * This button constant is not set in response to simple touches with a finger 115249754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * or stylus tip. The user must actually push a button. 1153fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1154fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1155fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1156fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_PRIMARY = 1 << 0; 1157fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1158fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 115953ca3f13e70fda98aa9f39bb0c15afaf435e3904Jeff Brown * Button constant: Secondary button (right mouse button, stylus first button). 1160fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1161fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1162fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1163fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_SECONDARY = 1 << 1; 1164fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1165fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 116653ca3f13e70fda98aa9f39bb0c15afaf435e3904Jeff Brown * Button constant: Tertiary button (middle mouse button, stylus second button). 1167fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1168fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1169fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1170fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_TERTIARY = 1 << 2; 1171fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1172fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1173fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Button constant: Back button pressed (mouse back button). 1174fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 1175fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The system may send a {@link KeyEvent#KEYCODE_BACK} key press to the application 1176fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when this button is pressed. 1177fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1180fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1181fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_BACK = 1 << 3; 1182fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1183fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1184fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Button constant: Forward button pressed (mouse forward button). 1185fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 1186fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The system may send a {@link KeyEvent#KEYCODE_FORWARD} key press to the application 1187fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when this button is pressed. 1188fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1189fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1190fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1191fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1192fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_FORWARD = 1 << 4; 1193fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1194fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // NOTE: If you add a new axis here you must also add it to: 1195fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // native/include/android/input.h 1196fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1197fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Symbolic names of all button states in bit order from least significant 1198fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // to most significant. 1199fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final String[] BUTTON_SYMBOLIC_NAMES = new String[] { 1200fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_PRIMARY", 1201fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_SECONDARY", 1202fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_TERTIARY", 1203fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_BACK", 1204fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_FORWARD", 120553ca3f13e70fda98aa9f39bb0c15afaf435e3904Jeff Brown "0x00000020", 1206fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000040", 1207fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000080", 1208fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000100", 1209fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000200", 1210fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000400", 1211fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000800", 1212fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00001000", 1213fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00002000", 1214fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00004000", 1215fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00008000", 1216fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00010000", 1217fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00020000", 1218fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00040000", 1219fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00080000", 1220fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00100000", 1221fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00200000", 1222fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00400000", 1223fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00800000", 1224fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x01000000", 1225fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x02000000", 1226fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x04000000", 1227fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x08000000", 1228fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x10000000", 1229fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x20000000", 1230fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x40000000", 1231fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x80000000", 1232fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown }; 1233fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1234fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1235fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Tool type constant: Unknown tool type. 1236fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This constant is used when the tool type is not known or is not relevant, 1237fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as for a trackball or other non-pointing device. 1238fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1239fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1240fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1241fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_UNKNOWN = 0; 1242fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1243fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 124449754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a finger. 1245fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1246fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1247fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1248fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_FINGER = 1; 1249fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1250fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 125149754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a stylus. 1252fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1253fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1254fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1255fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_STYLUS = 2; 1256fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1257fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 125849754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a mouse or trackpad. 1259fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1260fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1261fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1262fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_MOUSE = 3; 1263fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1264fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 126549754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is an eraser or a stylus being used in an inverted posture. 1266fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1267fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1268fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 126949754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown public static final int TOOL_TYPE_ERASER = 4; 1270fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1271fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // NOTE: If you add a new tool type here you must also add it to: 1272fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // native/include/android/input.h 1273fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1274fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Symbolic names of all tool types. 1275fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final SparseArray<String> TOOL_TYPE_SYMBOLIC_NAMES = new SparseArray<String>(); 12766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown static { 1277fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown SparseArray<String> names = TOOL_TYPE_SYMBOLIC_NAMES; 1278fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_UNKNOWN, "TOOL_TYPE_UNKNOWN"); 1279fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_FINGER, "TOOL_TYPE_FINGER"); 1280fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_STYLUS, "TOOL_TYPE_STYLUS"); 1281fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_MOUSE, "TOOL_TYPE_MOUSE"); 128249754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown names.append(TOOL_TYPE_ERASER, "TOOL_TYPE_ERASER"); 12836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 12846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 128591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Private value for history pos that obtains the current sample. 128691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final int HISTORY_CURRENT = -0x80000000; 128791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 12881f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static final int MAX_RECYCLED = 10; 12891f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static final Object gRecyclerLock = new Object(); 12901f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static int gRecyclerUsed; 12911f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static MotionEvent gRecyclerTop; 1292cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 129391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Shared temporary objects used when translating coordinates supplied by 129491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // the caller into single element PointerCoords and pointer id arrays. 1295fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final Object gSharedTempLock = new Object(); 1296fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static PointerCoords[] gSharedTempPointerCoords; 1297fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static PointerProperties[] gSharedTempPointerProperties; 1298fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static int[] gSharedTempPointerIndexMap; 1299fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1300fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final void ensureSharedTempPointerCapacity(int desiredCapacity) { 1301fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (gSharedTempPointerCoords == null 1302fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown || gSharedTempPointerCoords.length < desiredCapacity) { 1303fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int capacity = gSharedTempPointerCoords != null ? gSharedTempPointerCoords.length : 8; 1304fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown while (capacity < desiredCapacity) { 1305fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown capacity *= 2; 1306fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1307fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerCoords = PointerCoords.createArray(capacity); 1308fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerProperties = PointerProperties.createArray(capacity); 1309fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerIndexMap = new int[capacity]; 1310fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1311fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 131291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 131391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Pointer to the native MotionEvent object that contains the actual data. 131491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private int mNativePtr; 13158169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima 13169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private MotionEvent mNext; 13179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 131891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeInitialize(int nativePtr, 1319fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int deviceId, int source, int action, int flags, int edgeFlags, 1320fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int metaState, int buttonState, 132191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float xOffset, float yOffset, float xPrecision, float yPrecision, 132291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown long downTimeNanos, long eventTimeNanos, 1323fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerCount, PointerProperties[] pointerIds, PointerCoords[] pointerCoords); 132491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeCopy(int destNativePtr, int sourceNativePtr, 132591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown boolean keepHistory); 132691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeDispose(int nativePtr); 132791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeAddBatch(int nativePtr, long eventTimeNanos, 132891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown PointerCoords[] pointerCoords, int metaState); 132991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 133091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetDeviceId(int nativePtr); 133191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetSource(int nativePtr); 133291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeSetSource(int nativePtr, int source); 133391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetAction(int nativePtr); 133491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeSetAction(int nativePtr, int action); 133556194ebec6212e229f4ccdaa4b187166d20013efJeff Brown private static native boolean nativeIsTouchEvent(int nativePtr); 133691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetFlags(int nativePtr); 133721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown private static native void nativeSetFlags(int nativePtr, int flags); 133891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetEdgeFlags(int nativePtr); 133991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeSetEdgeFlags(int nativePtr, int action); 134091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetMetaState(int nativePtr); 1341fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static native int nativeGetButtonState(int nativePtr); 134291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeOffsetLocation(int nativePtr, float deltaX, float deltaY); 1343fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static native float nativeGetXOffset(int nativePtr); 1344fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static native float nativeGetYOffset(int nativePtr); 134591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native float nativeGetXPrecision(int nativePtr); 134691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native float nativeGetYPrecision(int nativePtr); 134791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native long nativeGetDownTimeNanos(int nativePtr); 1348fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static native void nativeSetDownTimeNanos(int nativePtr, long downTime); 134991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 135091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetPointerCount(int nativePtr); 135191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetPointerId(int nativePtr, int pointerIndex); 1352fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static native int nativeGetToolType(int nativePtr, int pointerIndex); 135391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeFindPointerIndex(int nativePtr, int pointerId); 135491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 135591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeGetHistorySize(int nativePtr); 135691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native long nativeGetEventTimeNanos(int nativePtr, int historyPos); 135791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native float nativeGetRawAxisValue(int nativePtr, 135891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int axis, int pointerIndex, int historyPos); 135991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native float nativeGetAxisValue(int nativePtr, 136091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int axis, int pointerIndex, int historyPos); 136191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeGetPointerCoords(int nativePtr, 136291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int pointerIndex, int historyPos, PointerCoords outPointerCoords); 1363fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static native void nativeGetPointerProperties(int nativePtr, 1364fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerIndex, PointerProperties outPointerProperties); 136591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 136691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeScale(int nativePtr, float scale); 136791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeTransform(int nativePtr, Matrix matrix); 136891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 136991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native int nativeReadFromParcel(int nativePtr, Parcel parcel); 137091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static native void nativeWriteToParcel(int nativePtr, Parcel parcel); 137191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 137291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private MotionEvent() { 137391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 137420e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown 137591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 137691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown protected void finalize() throws Throwable { 137791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown try { 137891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (mNativePtr != 0) { 137991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeDispose(mNativePtr); 138091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mNativePtr = 0; 138191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 138291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } finally { 138391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown super.finalize(); 138491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 13859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1386cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 138791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static private MotionEvent obtain() { 138846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown final MotionEvent ev; 138946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown synchronized (gRecyclerLock) { 13901f2451007c660091b7b090c1ea332f9044515d2dJeff Brown ev = gRecyclerTop; 13911f2451007c660091b7b090c1ea332f9044515d2dJeff Brown if (ev == null) { 139291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return new MotionEvent(); 139346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 139446b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown gRecyclerTop = ev.mNext; 13955c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown gRecyclerUsed -= 1; 139646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 139746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown ev.mNext = null; 139832cbc3855c2a971aa5a801fd339fb6a37db91a1aJeff Brown ev.prepareForReuse(); 139946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown return ev; 140046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 140191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 140253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan /** 140353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * Create a new MotionEvent, filling in all of the basic values that 140453071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * define the motion. 1405fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 140653071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param downTime The time (in ms) when the user originally pressed down to start 140753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1408c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The the time (in ms) when this specific event was generated. This 140953071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * must be obtained from {@link SystemClock#uptimeMillis()}. 1410cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1411fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that will be in this event. 1412fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerProperties An array of <em>pointerCount</em> values providing 1413fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a {@link PointerProperties} property object for each pointer, which must 1414fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * include the pointer identifier. 1415fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCoords An array of <em>pointerCount</em> values providing 1416c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * a {@link PointerCoords} coordinate object for each pointer. 141753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param metaState The state of any meta / modifier keys that were in effect when 141853071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * the event was generated. 1419fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param buttonState The state of buttons that are pressed. 142053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param xPrecision The precision of the X coordinate being reported. 142153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param yPrecision The precision of the Y coordinate being reported. 142253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param deviceId The id for the device that this event came from. An id of 142353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * zero indicates that the event didn't come from a physical device; other 142453071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * numbers are arbitrary and you shouldn't depend on the values. 142585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 142653071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * MotionEvent. 1427c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param source The source of this event. 142885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param flags The motion event flags. 142953071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan */ 1430c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown static public MotionEvent obtain(long downTime, long eventTime, 1431fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int action, int pointerCount, PointerProperties[] pointerProperties, 1432fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerCoords[] pointerCoords, int metaState, int buttonState, 1433fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown float xPrecision, float yPrecision, int deviceId, 143485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown int edgeFlags, int source, int flags) { 143591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 143691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 1437fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown deviceId, source, action, flags, edgeFlags, metaState, buttonState, 143891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 0, 0, xPrecision, yPrecision, 143991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown downTime * NS_PER_MS, eventTime * NS_PER_MS, 1440fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCount, pointerProperties, pointerCoords); 144153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan return ev; 144253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan } 144391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 14449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 14459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, filling in all of the basic values that 14469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * define the motion. 1447fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1448fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param downTime The time (in ms) when the user originally pressed down to start 1449fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1450fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param eventTime The the time (in ms) when this specific event was generated. This 1451fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * must be obtained from {@link SystemClock#uptimeMillis()}. 1452fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1453fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that will be in this event. 1454fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIds An array of <em>pointerCount</em> values providing 1455fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * an identifier for each pointer. 1456fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCoords An array of <em>pointerCount</em> values providing 1457fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a {@link PointerCoords} coordinate object for each pointer. 1458fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param metaState The state of any meta / modifier keys that were in effect when 1459fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the event was generated. 1460fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param xPrecision The precision of the X coordinate being reported. 1461fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param yPrecision The precision of the Y coordinate being reported. 1462fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param deviceId The id for the device that this event came from. An id of 1463fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * zero indicates that the event didn't come from a physical device; other 1464fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * numbers are arbitrary and you shouldn't depend on the values. 1465fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 1466fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * MotionEvent. 1467fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param source The source of this event. 1468fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param flags The motion event flags. 1469fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1470fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @deprecated Use {@link #obtain(long, long, int, int, PointerProperties[], PointerCoords[], int, int, float, float, int, int, int, int)} 1471fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * instead. 1472fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1473fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown @Deprecated 1474fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown static public MotionEvent obtain(long downTime, long eventTime, 1475fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int action, int pointerCount, int[] pointerIds, PointerCoords[] pointerCoords, 1476fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int metaState, float xPrecision, float yPrecision, int deviceId, 1477fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int edgeFlags, int source, int flags) { 1478fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 1479fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(pointerCount); 1480fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 1481fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 1482fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[i].clear(); 1483fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[i].id = pointerIds[i]; 1484fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1485fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return obtain(downTime, eventTime, action, pointerCount, pp, 1486fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCoords, metaState, 0, xPrecision, yPrecision, deviceId, 1487fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown edgeFlags, source, flags); 1488fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1489fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1490fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1491fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1492fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Create a new MotionEvent, filling in all of the basic values that 1493fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * define the motion. 1494cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 1495cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param downTime The time (in ms) when the user originally pressed down to start 14969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1497cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param eventTime The the time (in ms) when this specific event was generated. This 14989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * must be obtained from {@link SystemClock#uptimeMillis()}. 1499cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 15009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The X coordinate of this event. 15019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The Y coordinate of this event. 1502cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param pressure The current pressure of this event. The pressure generally 1503cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * ranges from 0 (no pressure at all) to 1 (normal pressure), however 1504cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * values higher than 1 may be generated depending on the calibration of 15059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the input device. 15069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param size A scaled value of the approximate size of the area being pressed when 1507cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * touched with the finger. The actual value in pixels corresponding to the finger 15089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * touch is normalized with a device specific range of values 15099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and scaled to a value between 0 and 1. 15109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param metaState The state of any meta / modifier keys that were in effect when 15119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. 15129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param xPrecision The precision of the X coordinate being reported. 15139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param yPrecision The precision of the Y coordinate being reported. 15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deviceId The id for the device that this event came from. An id of 15159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * zero indicates that the event didn't come from a physical device; other 15169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * numbers are arbitrary and you shouldn't depend on the values. 151785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 15189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MotionEvent. 15199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 15209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public MotionEvent obtain(long downTime, long eventTime, int action, 15219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float x, float y, float pressure, float size, int metaState, 15229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float xPrecision, float yPrecision, int deviceId, int edgeFlags) { 1523fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 1524fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 1525fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(1); 1526fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 1527fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[0].clear(); 1528fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[0].id = 0; 1529fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1530fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords pc[] = gSharedTempPointerCoords; 1531fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].clear(); 1532fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].x = x; 1533fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].y = y; 1534fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].pressure = pressure; 1535fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].size = size; 1536fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 153791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 1538fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown deviceId, InputDevice.SOURCE_UNKNOWN, action, 0, edgeFlags, metaState, 0, 153991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 0, 0, xPrecision, yPrecision, 154091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown downTime * NS_PER_MS, eventTime * NS_PER_MS, 1541fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1, pp, pc); 154291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return ev; 154391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 15449822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 15459822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 15469822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 15479822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Create a new MotionEvent, filling in all of the basic values that 15489822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * define the motion. 15499822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * 15509822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param downTime The time (in ms) when the user originally pressed down to start 15519822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 15529822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param eventTime The the time (in ms) when this specific event was generated. This 15539822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * must be obtained from {@link SystemClock#uptimeMillis()}. 1554cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1555fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that are active in this event. 15569822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param x The X coordinate of this event. 15579822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param y The Y coordinate of this event. 15589822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param pressure The current pressure of this event. The pressure generally 15599822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * ranges from 0 (no pressure at all) to 1 (normal pressure), however 15609822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * values higher than 1 may be generated depending on the calibration of 15619822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * the input device. 15629822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param size A scaled value of the approximate size of the area being pressed when 15639822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touched with the finger. The actual value in pixels corresponding to the finger 15649822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touch is normalized with a device specific range of values 15659822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * and scaled to a value between 0 and 1. 15669822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState The state of any meta / modifier keys that were in effect when 15679822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * the event was generated. 15689822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param xPrecision The precision of the X coordinate being reported. 15699822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param yPrecision The precision of the Y coordinate being reported. 15709822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param deviceId The id for the device that this event came from. An id of 15719822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * zero indicates that the event didn't come from a physical device; other 15729822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * numbers are arbitrary and you shouldn't depend on the values. 157385a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 15749822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * MotionEvent. 15755c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * 15765c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * @deprecated Use {@link #obtain(long, long, int, float, float, float, float, int, float, float, int, int)} 15775c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * instead. 15789822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 15795c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown @Deprecated 15809822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn static public MotionEvent obtain(long downTime, long eventTime, int action, 1581fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerCount, float x, float y, float pressure, float size, int metaState, 15829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn float xPrecision, float yPrecision, int deviceId, int edgeFlags) { 15835c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown return obtain(downTime, eventTime, action, x, y, pressure, size, 15845c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown metaState, xPrecision, yPrecision, deviceId, edgeFlags); 15859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1586cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 15879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, filling in a subset of the basic motion 15899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values. Those not specified here are: device id (always 0), pressure 15909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and size (always 1), x and y precision (always 1), and edgeFlags (always 0). 1591cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 1592cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param downTime The time (in ms) when the user originally pressed down to start 15939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1594cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param eventTime The the time (in ms) when this specific event was generated. This 15959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * must be obtained from {@link SystemClock#uptimeMillis()}. 1596cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 15979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The X coordinate of this event. 15989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The Y coordinate of this event. 15999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param metaState The state of any meta / modifier keys that were in effect when 16009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. 16019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public MotionEvent obtain(long downTime, long eventTime, int action, 16039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float x, float y, int metaState) { 16045c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown return obtain(downTime, eventTime, action, x, y, 1.0f, 1.0f, 16055c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown metaState, 1.0f, 1.0f, 0, 0); 16068169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima } 16078169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima 16089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, copying from an existing one. 16109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 161191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static public MotionEvent obtain(MotionEvent other) { 161291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (other == null) { 161391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown throw new IllegalArgumentException("other motion event must not be null"); 161491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 161591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 161691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 161791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, true /*keepHistory*/); 16189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ev; 16199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1620cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 16219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 16228df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn * Create a new MotionEvent, copying from an existing one, but not including 16238df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn * any historical point information. 16248df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn */ 162591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static public MotionEvent obtainNoHistory(MotionEvent other) { 162691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (other == null) { 162791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown throw new IllegalArgumentException("other motion event must not be null"); 162891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 162991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 163091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 163191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, false /*keepHistory*/); 16328df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn return ev; 16338df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn } 16348df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn 163521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 163621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 163721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public MotionEvent copy() { 163821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown return obtain(this); 163921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 164021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 16418df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn /** 16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Recycle the MotionEvent, to be re-used by a later caller. After calling 16439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this function you must not ever touch the event again. 16449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 164592cc2d8dc35f2bdd1bb95ab24787066371064899Jeff Brown @Override 16465c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown public final void recycle() { 164732cbc3855c2a971aa5a801fd339fb6a37db91a1aJeff Brown super.recycle(); 16489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 16499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (gRecyclerLock) { 16509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (gRecyclerUsed < MAX_RECYCLED) { 16519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gRecyclerUsed++; 16529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNext = gRecyclerTop; 16539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gRecyclerTop = this; 16549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 16579ea77fc821918ea562ff4907945b865e39e0201aJeff Brown 16585c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown /** 16599ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * Applies a scale factor to all points within this event. 16609ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * 16619ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * This method is used to adjust touch events to simulate different density 16629ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * displays for compatibility mode. The values returned by {@link #getRawX()}, 16639ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * {@link #getRawY()}, {@link #getXPrecision()} and {@link #getYPrecision()} 16649ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * are also affected by the scale factor. 16655c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * 16669ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * @param scale The scale factor to apply. 16675c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * @hide 16685c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown */ 16695c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown public final void scale(float scale) { 16709ea77fc821918ea562ff4907945b865e39e0201aJeff Brown if (scale != 1.0f) { 16719ea77fc821918ea562ff4907945b865e39e0201aJeff Brown nativeScale(mNativePtr, scale); 16729ea77fc821918ea562ff4907945b865e39e0201aJeff Brown } 167391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 167491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 167591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 167691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 167791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final int getDeviceId() { 167891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetDeviceId(mNativePtr); 167991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 168091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 168191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 168291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 168391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final int getSource() { 168491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetSource(mNativePtr); 168591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 168691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 168791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 168891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 168991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final void setSource(int source) { 169091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetSource(mNativePtr, source); 16915c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown } 1692cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 16939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1694cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Return the kind of action being performed. 1695cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Consider using {@link #getActionMasked} and {@link #getActionIndex} to retrieve 1696cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * the separate masked action and pointer index. 1697cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The action, such as {@link #ACTION_DOWN} or 1698cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * the combination of {@link #ACTION_POINTER_DOWN} with a shifted pointer index. 16999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getAction() { 170191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAction(mNativePtr); 17029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1705cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Return the masked action being performed, without pointer index information. 1706cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Use {@link #getActionIndex} to return the index associated with pointer actions. 1707cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The action, such as {@link #ACTION_DOWN} or {@link #ACTION_POINTER_DOWN}. 1708b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 1709b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public final int getActionMasked() { 171091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAction(mNativePtr) & ACTION_MASK; 1711b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn } 1712b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 1713b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 1714b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * For {@link #ACTION_POINTER_DOWN} or {@link #ACTION_POINTER_UP} 1715b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * as returned by {@link #getActionMasked}, this returns the associated 1716cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * pointer index. 1717cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * The index may be used with {@link #getPointerId(int)}, 1718b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * {@link #getX(int)}, {@link #getY(int)}, {@link #getPressure(int)}, 1719b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * and {@link #getSize(int)} to get information about the pointer that has 1720b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * gone down or up. 1721cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The index associated with the action. 1722b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 1723b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public final int getActionIndex() { 172491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return (nativeGetAction(mNativePtr) & ACTION_POINTER_INDEX_MASK) 172591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown >> ACTION_POINTER_INDEX_SHIFT; 1726b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn } 1727b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 1728b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 172933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * Returns true if this motion event is a touch event. 173033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * <p> 1731a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * Specifically excludes pointer events with action {@link #ACTION_HOVER_MOVE}, 1732a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link #ACTION_HOVER_ENTER}, {@link #ACTION_HOVER_EXIT}, or {@link #ACTION_SCROLL} 1733a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * because they are not actually touch events (the pointer is not down). 173433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 173533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * @return True if this motion event is a touch event. 173633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * @hide 173733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown */ 173833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown public final boolean isTouchEvent() { 173956194ebec6212e229f4ccdaa4b187166d20013efJeff Brown return nativeIsTouchEvent(mNativePtr); 174033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown } 174133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown 174233bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown /** 174385a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * Gets the motion event flags. 174485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * 174585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @see #FLAG_WINDOW_IS_OBSCURED 174685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown */ 174785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown public final int getFlags() { 174891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetFlags(mNativePtr); 174985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown } 175085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown 175121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 175221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 175321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public final boolean isTainted() { 175421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown final int flags = getFlags(); 175521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown return (flags & FLAG_TAINTED) != 0; 175621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 175721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 175821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 175921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 176021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public final void setTainted(boolean tainted) { 176121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown final int flags = getFlags(); 176221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown nativeSetFlags(mNativePtr, tainted ? flags | FLAG_TAINTED : flags & ~FLAG_TAINTED); 176321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 176421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 176585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown /** 1766cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * Returns the time (in ms) when the user originally pressed down to start 1767cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * a stream of position events. 17689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getDownTime() { 177091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetDownTimeNanos(mNativePtr) / NS_PER_MS; 17719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1774fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Sets the time (in ms) when the user originally pressed down to start 1775fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a stream of position events. 1776fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1777fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 1778fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1779fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final void setDownTime(long downTime) { 1780fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeSetDownTimeNanos(mNativePtr, downTime * NS_PER_MS); 1781fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1782fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1783fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1784b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Retrieve the time this event occurred, 1785b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 1786b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 1787b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time this event occurred, 1788b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 17899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1790b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown @Override 17919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getEventTime() { 179291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT) / NS_PER_MS; 17939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1796b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Retrieve the time this event occurred, 1797b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 1798b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond precision. 1799b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 180053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * The value is in nanosecond precision but it may not have nanosecond accuracy. 1801b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 1802b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 1803b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time this event occurred, 1804b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 1805b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond precision. 180653071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * 180753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @hide 180853071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan */ 1809b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown @Override 181053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan public final long getEventTimeNano() { 181191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT); 181253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan } 181353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan 181453071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan /** 18150dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getX(int)} for the first pointer index (may be an 18160dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 181791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 181891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 18199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getX() { 182191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); 18229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 18250dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getY(int)} for the first pointer index (may be an 18260dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 182791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 182891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 18299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getY() { 183191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); 18329822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 18339822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 18349822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 18350dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getPressure(int)} for the first pointer index (may be an 18360dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 183791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 183891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 18399822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 18409822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getPressure() { 184191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, HISTORY_CURRENT); 18429822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 18439822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 18449822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 18450dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getSize(int)} for the first pointer index (may be an 18460dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 184791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 184891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 18499822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 18509822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getSize() { 185191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, HISTORY_CURRENT); 18529822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 1853c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1854c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1855c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getTouchMajor(int)} for the first pointer index (may be an 1856c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 185791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 185891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 1859c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1860c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMajor() { 186191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, HISTORY_CURRENT); 1862c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 1863c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1864c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1865c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getTouchMinor(int)} for the first pointer index (may be an 1866c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 186791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 186891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 1869c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1870c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMinor() { 187191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, HISTORY_CURRENT); 1872c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 1873c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1874c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1875c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getToolMajor(int)} for the first pointer index (may be an 1876c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 187791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 187891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 1879c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1880c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMajor() { 188191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, HISTORY_CURRENT); 1882c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 1883c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1884c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1885c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getToolMinor(int)} for the first pointer index (may be an 1886c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 188791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 188891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 1889c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1890c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMinor() { 189191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, HISTORY_CURRENT); 1892c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 189391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 1894c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1895c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getOrientation(int)} for the first pointer index (may be an 1896c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 189791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 189891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 1899c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 1900c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getOrientation() { 190191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, HISTORY_CURRENT); 190291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 190391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 190491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 190591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getAxisValue(int)} for the first pointer index (may be an 190691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * arbitrary pointer identifier). 190791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 190891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 190991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 191091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 191191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 191291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 191391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getAxisValue(int axis) { 191491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, 0, HISTORY_CURRENT); 1915c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 19169822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 19179822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 19180dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * The number of pointers of data contained in this event. Always 19190dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * >= 1. 19200dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 19210dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final int getPointerCount() { 192291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetPointerCount(mNativePtr); 19230dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 19240dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn 19250dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 19260dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Return the pointer identifier associated with a particular pointer 19270dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * data index is this event. The identifier tells you the actual pointer 19280dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * number associated with the data, accounting for individual pointers 19290dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * going up and down since the start of the current gesture. 19300dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 19310dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 19320dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 1933d41ba666d12a24ee4624ea9a009151e6165e3775Dianne Hackborn public final int getPointerId(int pointerIndex) { 193491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetPointerId(mNativePtr, pointerIndex); 19350dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 1936fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1937fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1938fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets the tool type of a pointer for the given pointer index. 1939fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The tool type indicates the type of tool used to make contact such 1940fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * as a finger or stylus, if known. 1941fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1942fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 1943fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 1944fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The tool type of the pointer. 1945fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1946fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_UNKNOWN 1947fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_FINGER 1948fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_STYLUS 1949fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_MOUSE 1950fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_INDIRECT_FINGER 1951fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_INDIRECT_STYLUS 1952fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1953fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getToolType(int pointerIndex) { 1954fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return nativeGetToolType(mNativePtr, pointerIndex); 1955fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1956fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 19570dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 19580dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Given a pointer identifier, find the index of its data in the event. 19590dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 19600dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerId The identifier of the pointer to be found. 19610dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @return Returns either the index of the pointer (for use with 1962b0d6ba1ec4f71b96cab7d1ff62b846d5cf162c4fGilles Debunne * {@link #getX(int)} et al.), or -1 if there is no data available for 19630dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * that pointer identifier. 19640dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 19650dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final int findPointerIndex(int pointerId) { 196691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeFindPointerIndex(mNativePtr, pointerId); 19670dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 1968fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 19690dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 19700dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the X coordinate of this event for the given pointer 19710dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 19720dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 19739822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Whole numbers are pixels; the 19749822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * value may have a fraction for input devices that are sub-pixel precise. 19750dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 19760dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 197791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 197891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 19799822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 19800dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getX(int pointerIndex) { 198191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, HISTORY_CURRENT); 19829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 19839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 19849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 19850dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the Y coordinate of this event for the given pointer 19860dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 19870dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 19889822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Whole numbers are pixels; the 19899822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * value may have a fraction for input devices that are sub-pixel precise. 19900dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 19910dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 199291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 199391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 19949822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 19950dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getY(int pointerIndex) { 199691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, pointerIndex, HISTORY_CURRENT); 19979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 19989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20000dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the current pressure of this event for the given pointer 20010dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 20020dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 20039822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * The pressure generally 2004cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * ranges from 0 (no pressure at all) to 1 (normal pressure), however 2005cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * values higher than 1 may be generated depending on the calibration of 20069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the input device. 20070dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 20080dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 200991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 201091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 20119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20120dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getPressure(int pointerIndex) { 201391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, HISTORY_CURRENT); 20149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 20159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 20169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 20170dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a scaled value of the approximate size for the given pointer 20180dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 20190dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 20200dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * This represents some approximation of the area of the screen being 20210dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * pressed; the actual value in pixels corresponding to the 20229822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touch is normalized with the device specific range of values 2023cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * and scaled to a value between 0 and 1. The value of size can be used to 20249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * determine fat touch events. 20250dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 20260dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 202791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 202891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 20299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 20300dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getSize(int pointerIndex) { 203191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, HISTORY_CURRENT); 20329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2033c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2034c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2035c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the major axis of an ellipse that describes the touch 2036c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * area at the point of contact for the given pointer 2037c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2038c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2039c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2040c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 204191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 204291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2043c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2044c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMajor(int pointerIndex) { 204591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, HISTORY_CURRENT); 2046c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2047c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2048c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2049c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the minor axis of an ellipse that describes the touch 2050c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * area at the point of contact for the given pointer 2051c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2052c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2053c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2054c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 205591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 205691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2057c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2058c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMinor(int pointerIndex) { 205991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, HISTORY_CURRENT); 2060c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2061c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2062c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2063c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the major axis of an ellipse that describes the size of 2064c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool for the given pointer 2065c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2066c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2067c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 2068c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 2069c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2070c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 207191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 207291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2073c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2074c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMajor(int pointerIndex) { 207591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, HISTORY_CURRENT); 2076c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2077c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2078c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2079c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the minor axis of an ellipse that describes the size of 2080c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool for the given pointer 2081c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2082c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2083c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 2084c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 2085c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2086c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 208791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 208891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2089c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2090c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMinor(int pointerIndex) { 209191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, HISTORY_CURRENT); 2092c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2093c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2094c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2095c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the orientation of the touch area and tool area in radians clockwise from vertical 2096c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * for the given pointer <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2097c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 20986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 2099c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 2100c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 2101c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the left. 21026d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 2103c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (finger pointing fully right). 2104c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2105c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 210691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 210791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 2108c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2109c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getOrientation(int pointerIndex) { 211091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, HISTORY_CURRENT); 2111c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 211291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 211391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 211491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns the value of the requested axis for the given pointer <em>index</em> 211591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (use {@link #getPointerId(int)} to find the pointer identifier for this index). 211691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 211791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 211891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 211991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 212091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value of the axis, or 0 if the axis is not available. 212191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 212291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 212391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 212491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 212591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getAxisValue(int axis, int pointerIndex) { 212691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, pointerIndex, HISTORY_CURRENT); 212791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 212891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 2129c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2130c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Populates a {@link PointerCoords} object with pointer coordinate data for 2131c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the specified pointer index. 2132c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2133c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2134c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2135c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param outPointerCoords The pointer coordinate object to populate. 213691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 213791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see PointerCoords 2138c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2139c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void getPointerCoords(int pointerIndex, PointerCoords outPointerCoords) { 214091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeGetPointerCoords(mNativePtr, pointerIndex, HISTORY_CURRENT, outPointerCoords); 2141c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 21429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2144fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Populates a {@link PointerProperties} object with pointer properties for 2145fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the specified pointer index. 2146fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2147fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2148fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2149fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param outPointerProperties The pointer properties object to populate. 2150fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2151fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see PointerProperties 2152fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2153fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final void getPointerProperties(int pointerIndex, 2154fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerProperties outPointerProperties) { 2155fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, pointerIndex, outPointerProperties); 2156fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2157fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2158fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 21599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the state of any meta / modifier keys that were in effect when 21609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. This is the same values as those 21619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned by {@link KeyEvent#getMetaState() KeyEvent.getMetaState}. 21629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 21639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer in which each bit set to 1 represents a pressed 21649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * meta key 21659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 21669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see KeyEvent#getMetaState() 21679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 21689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getMetaState() { 216991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetMetaState(mNativePtr); 21709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2173fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets the state of all buttons that are pressed such as a mouse or stylus button. 2174fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2175fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The button state. 2176fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2177fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_PRIMARY 2178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_SECONDARY 2179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_TERTIARY 2180fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_FORWARD 2181fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_BACK 2182fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2183fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getButtonState() { 2184fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return nativeGetButtonState(mNativePtr); 2185fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2186fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2187fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 21889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the original raw X coordinate of this event. For touch 21899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events on the screen, this is the original location of the event 21909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the screen, before it had been adjusted for the containing window 21919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and views. 219291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 219391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see getX() 219491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 21959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 21969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getRawX() { 219791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetRawAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); 21989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 219991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 22009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the original raw Y coordinate of this event. For touch 22029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events on the screen, this is the original location of the event 22039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the screen, before it had been adjusted for the containing window 22049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and views. 220591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 220691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see getY() 220791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 22089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getRawY() { 221091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetRawAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); 22119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 22129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 22139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the precision of the X coordinates being reported. You can 221591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * multiply this number with {@link #getX} to find the actual hardware 22169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value of the X coordinate. 22179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the precision of X coordinates being reported. 221891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 221991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 22209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getXPrecision() { 222291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetXPrecision(mNativePtr); 22239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2224cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 22259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the precision of the Y coordinates being reported. You can 222791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * multiply this number with {@link #getY} to find the actual hardware 22289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value of the Y coordinate. 22299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the precision of Y coordinates being reported. 223091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 223191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 22329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getYPrecision() { 223491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetYPrecision(mNativePtr); 22359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2236cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 22379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the number of historical points in this event. These are 22399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * movements that have occurred between this event and the previous event. 22409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This only applies to ACTION_MOVE events -- all other actions will have 22419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a size of 0. 2242cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 22439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the number of historical points in the event. 22449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getHistorySize() { 224691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetHistorySize(mNativePtr); 22479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2248cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 22499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 22509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the time that a historical movement occurred between this event 2251b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base. 2252b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 2253b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * This only applies to ACTION_MOVE events. 2254b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 2255cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 22569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 22579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2258b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time that a historical movement occurred between this 2259b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * event and the previous event, 2260b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 2261cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 22629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 22639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getEventTime 22649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 22659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getHistoricalEventTime(int pos) { 226691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, pos) / NS_PER_MS; 22679822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 22689822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 22699822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 2270b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Returns the time that a historical movement occurred between this event 2271b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base 2272b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * but with nanosecond (instead of millisecond) precision. 2273b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 2274b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * This only applies to ACTION_MOVE events. 2275b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p><p> 2276b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * The value is in nanosecond precision but it may not have nanosecond accuracy. 2277b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 2278b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2279b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @param pos Which historical value to return; must be less than 2280b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * {@link #getHistorySize} 2281b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time that a historical movement occurred between this 2282b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * event and the previous event, 2283b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 2284b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond (instead of millisecond) precision. 2285b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2286b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @see #getHistorySize 2287b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @see #getEventTime 2288b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2289b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @hide 2290b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown */ 2291b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown public final long getHistoricalEventTimeNano(int pos) { 2292b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown return nativeGetEventTimeNanos(mNativePtr, pos); 2293b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown } 2294b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown 2295b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown /** 229691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalX(int, int)} for the first pointer index (may be an 22970dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 229891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 229991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 230091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 230191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 230291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 230391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX() 230491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 23059822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23069822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalX(int pos) { 230791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, 0, pos); 23089822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 23099822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 23109822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 231191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalY(int, int)} for the first pointer index (may be an 23120dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 231391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 231491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 231591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 231691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 231791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 231891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY() 231991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 23209822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23219822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalY(int pos) { 232291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, 0, pos); 23239822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 23249822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 23259822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 232691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalPressure(int, int)} for the first pointer index (may be an 23270dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 232891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 232991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 233091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 233191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 233291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 233391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure() 233491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 23359822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23369822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalPressure(int pos) { 233791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, pos); 23389822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 23399822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 23409822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 234191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalSize(int, int)} for the first pointer index (may be an 23420dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 234391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 234491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 234591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 234691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 234791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 234891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize() 234991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 23509822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 23519822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalSize(int pos) { 235291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, pos); 23539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2354cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 23559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 235691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalTouchMajor(int, int)} for the first pointer index (may be an 2357c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 235891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 235991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 236091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 236191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 236291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 236391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor() 236491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2365c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2366c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMajor(int pos) { 236791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, pos); 2368c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2369c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2370c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 237191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalTouchMinor(int, int)} for the first pointer index (may be an 2372c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 237391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 237491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 237591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 237691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 237791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 237891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor() 237991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2380c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2381c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMinor(int pos) { 238291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, pos); 2383c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2384c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2385c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 238691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalToolMajor(int, int)} for the first pointer index (may be an 2387c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 238891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 238991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 239091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 239191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 239291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 239391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor() 239491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2395c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2396c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMajor(int pos) { 239791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, pos); 2398c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2399c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2400c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 240191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalToolMinor(int, int)} for the first pointer index (may be an 2402c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 240391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 240491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 240591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 240691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 240791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 240891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor() 240991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2410c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2411c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMinor(int pos) { 241291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, pos); 2413c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2414c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2415c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 241691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalOrientation(int, int)} for the first pointer index (may be an 2417c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 241891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 241991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 242091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 242191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 242291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 242391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation() 242491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 2425c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2426c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalOrientation(int pos) { 242791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, pos); 2428c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 242991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 243091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 243191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalAxisValue(int, int, int)} for the first pointer index (may be an 243291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * arbitrary pointer identifier). 243391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 243491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 243591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 243691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 243791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 243891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 243991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getAxisValue(int) 244091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 244191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 244291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 244391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getHistoricalAxisValue(int axis, int pos) { 244491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, 0, pos); 244591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 244691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 2447c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 24480dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical X coordinate, as per {@link #getX(int)}, that 24490dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 24500dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2451cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24520dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 24530dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 24549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 24559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2456cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 245891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX(int) 245991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 24609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24610dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalX(int pointerIndex, int pos) { 246291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, pos); 24639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2464cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 24659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24660dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical Y coordinate, as per {@link #getY(int)}, that 24670dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 24680dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2469cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24700dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 24710dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 24729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 24739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2474cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 247691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY(int) 247791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 24789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24790dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalY(int pointerIndex, int pos) { 248091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, pointerIndex, pos); 24819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2482cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 24839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24840dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical pressure coordinate, as per {@link #getPressure(int)}, 24850dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * that occurred between this event and the previous event for the given 24860dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * pointer. Only applies to ACTION_MOVE events. 2487cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24880dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 24890dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 24909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 24919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 24920dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 24939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 249491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure(int) 249591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 24969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24970dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalPressure(int pointerIndex, int pos) { 249891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, pos); 24999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2500cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 25019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 25020dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical size coordinate, as per {@link #getSize(int)}, that 25030dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 25040dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2505cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 25060dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 25070dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 25089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 25099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 25100dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 25119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 251291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize(int) 251391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 25149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 25150dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalSize(int pointerIndex, int pos) { 251691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, pos); 25179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2518c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2519c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2520c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical touch major axis coordinate, as per {@link #getTouchMajor(int)}, that 2521c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2522c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2523c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2524c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2525c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2526c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2527c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2528c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2529c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 253091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor(int) 253191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2532c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2533c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMajor(int pointerIndex, int pos) { 253491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, pos); 2535c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2536cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 25379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2538c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical touch minor axis coordinate, as per {@link #getTouchMinor(int)}, that 2539c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2540c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2541c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2542c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2543c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2544c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2545c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2546c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2547c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 254891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor(int) 254991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2550c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2551c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMinor(int pointerIndex, int pos) { 255291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, pos); 2553c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2554c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2555c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2556c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical tool major axis coordinate, as per {@link #getToolMajor(int)}, that 2557c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2558c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2559c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2560c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2561c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2562c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2563c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2564c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2565c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 256691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor(int) 256791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2568c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2569c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMajor(int pointerIndex, int pos) { 257091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, pos); 2571c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2572c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2573c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2574c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical tool minor axis coordinate, as per {@link #getToolMinor(int)}, that 2575c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2576c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2577c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2578c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2579c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2580c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2581c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2582c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2583c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 258491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor(int) 258591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2586c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2587c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMinor(int pointerIndex, int pos) { 258891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, pos); 2589c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2590c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2591c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2592c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical orientation coordinate, as per {@link #getOrientation(int)}, that 2593c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2594c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2595c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2596c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2597c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2598c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2599c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2600c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2601c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 260291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation(int) 260391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 26049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2605c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalOrientation(int pointerIndex, int pos) { 260691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, pos); 260791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 260891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 260991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 261091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns the historical value of the requested axis, as per {@link #getAxisValue(int, int)}, 261191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * occurred between this event and the previous event for the given pointer. 261291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Only applies to ACTION_MOVE events. 261391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 261491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 261591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 261691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 261791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 261891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 261991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value of the axis, or 0 if the axis is not available. 262091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 262191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 262291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 262391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 262491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getHistoricalAxisValue(int axis, int pointerIndex, int pos) { 262591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, pointerIndex, pos); 26269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2627cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2629c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Populates a {@link PointerCoords} object with historical pointer coordinate data, 2630c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * as per {@link #getPointerCoords}, that occurred between this event and the previous 2631c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * event for the given pointer. 2632c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2633c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2634c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2635c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2636c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2637c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2638c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param outPointerCoords The pointer coordinate object to populate. 2639c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2640c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 2641c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getPointerCoords 264291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see PointerCoords 2643c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2644c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void getHistoricalPointerCoords(int pointerIndex, int pos, 2645c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown PointerCoords outPointerCoords) { 264691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeGetPointerCoords(mNativePtr, pointerIndex, pos, outPointerCoords); 2647c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2648c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2649c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 265046b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Returns a bitfield indicating which edges, if any, were touched by this 2651cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * MotionEvent. For touch events, clients can use this to determine if the 2652cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * user's finger was touching the edge of the display. 2653cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 2654d41cff2d3a95963a7aa348e502c6d42bae367235Jeff Brown * This property is only set for {@link #ACTION_DOWN} events. 2655d41cff2d3a95963a7aa348e502c6d42bae367235Jeff Brown * 26569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_LEFT 26579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_TOP 26589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_RIGHT 26599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_BOTTOM 26609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getEdgeFlags() { 266291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEdgeFlags(mNativePtr); 26639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2664cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 266685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * Sets the bitfield indicating which edges, if any, were touched by this 2667cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * MotionEvent. 2668cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getEdgeFlags() 26709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setEdgeFlags(int flags) { 267291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetEdgeFlags(mNativePtr, flags); 26739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets this event's action. 26779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setAction(int action) { 267991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetAction(mNativePtr, action); 26809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 26819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 26829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Adjust this event's location. 26849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaX Amount to add to the current X coordinate of the event. 26859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaY Amount to add to the current Y coordinate of the event. 26869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void offsetLocation(float deltaX, float deltaY) { 26889ea77fc821918ea562ff4907945b865e39e0201aJeff Brown if (deltaX != 0.0f || deltaY != 0.0f) { 26899ea77fc821918ea562ff4907945b865e39e0201aJeff Brown nativeOffsetLocation(mNativePtr, deltaX, deltaY); 26909ea77fc821918ea562ff4907945b865e39e0201aJeff Brown } 26919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2692cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set this event's location. Applies {@link #offsetLocation} with a 26959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * delta from the current location to the given new location. 2696cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x New absolute X location. 26989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y New absolute Y location. 26999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 27009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setLocation(float x, float y) { 270191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float oldX = getX(); 270291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float oldY = getY(); 27039ea77fc821918ea562ff4907945b865e39e0201aJeff Brown offsetLocation(x - oldX, y - oldY); 27045c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown } 27055c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown 270620e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown /** 270720e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * Applies a transformation matrix to all of the points in the event. 270820e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * 270920e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * @param matrix The transformation matrix to apply. 271020e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown */ 271120e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown public final void transform(Matrix matrix) { 271220e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown if (matrix == null) { 271320e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown throw new IllegalArgumentException("matrix must not be null"); 271420e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown } 271520e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown 271691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeTransform(mNativePtr, matrix); 27179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2718cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 27199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 27209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Add a new movement to the batch of movements in this event. The event's 2721c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * current location, position and size is updated to the new values. 2722c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The current values in the event are added to a list of historical values. 272391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2724cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 2725cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 2726c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The time stamp (in ms) for this data. 27279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The new X position. 27289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The new Y position. 27299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pressure The new pressure. 27309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param size The new size. 27319822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState Meta key state. 27329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 27339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void addBatch(long eventTime, float x, float y, 27349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float pressure, float size, int metaState) { 2735fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 2736fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(1); 2737fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 2738fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].clear(); 2739fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].x = x; 2740fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].y = y; 2741fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].pressure = pressure; 2742fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].size = size; 2743fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2744fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pc, metaState); 274591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 27469822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 2747cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 27489822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 2749c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Add a new movement to the batch of movements in this event. The event's 2750c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * current location, position and size is updated to the new values. 2751c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The current values in the event are added to a list of historical values. 275291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2753cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 27549822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * 2755c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The time stamp (in ms) for this data. 2756c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerCoords The new pointer coordinates. 27579822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState Meta key state. 27589822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 2759c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void addBatch(long eventTime, PointerCoords[] pointerCoords, int metaState) { 276091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pointerCoords, metaState); 27619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2762cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 2763fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 27649d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * Adds all of the movement samples of the specified event to this one if 27659d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * it is compatible. To be compatible, the event must have the same device id, 27669d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * source, action, flags, pointer count, pointer properties. 27679d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * 27689d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 27699d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * 27709d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @param event The event whose movements samples should be added to this one 27719d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * if possible. 27729d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @return True if batching was performed or false if batching was not possible. 27739d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @hide 27749d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown */ 27759d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public final boolean addBatch(MotionEvent event) { 27769d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int action = nativeGetAction(mNativePtr); 27779d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (action != ACTION_MOVE && action != ACTION_HOVER_MOVE) { 27789d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 27799d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 27809d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (action != nativeGetAction(event.mNativePtr)) { 27819d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 27829d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 27839d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 27849d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (nativeGetDeviceId(mNativePtr) != nativeGetDeviceId(event.mNativePtr) 27859d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown || nativeGetSource(mNativePtr) != nativeGetSource(event.mNativePtr) 27869d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown || nativeGetFlags(mNativePtr) != nativeGetFlags(event.mNativePtr)) { 27879d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 27889d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 27899d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 27909d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 27919d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (pointerCount != nativeGetPointerCount(event.mNativePtr)) { 27929d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 27939d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 27949d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 27959d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown synchronized (gSharedTempLock) { 27969d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown ensureSharedTempPointerCapacity(Math.max(pointerCount, 2)); 27979d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 27989d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 27999d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28009d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int i = 0; i < pointerCount; i++) { 28019d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerProperties(mNativePtr, i, pp[0]); 28029d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerProperties(event.mNativePtr, i, pp[1]); 28039d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (!pp[0].equals(pp[1])) { 28049d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 28059d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28069d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28079d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28089d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int metaState = nativeGetMetaState(event.mNativePtr); 28099d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int historySize = nativeGetHistorySize(event.mNativePtr); 28109d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int h = 0; h <= historySize; h++) { 28119d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int historyPos = (h == historySize ? HISTORY_CURRENT : h); 28129d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28139d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int i = 0; i < pointerCount; i++) { 28149d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerCoords(event.mNativePtr, i, historyPos, pc[i]); 28159d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28169d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28179d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final long eventTimeNanos = nativeGetEventTimeNanos(event.mNativePtr, historyPos); 28189d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeAddBatch(mNativePtr, eventTimeNanos, pc, metaState); 28199d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28209d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28219d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return true; 28229d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 28239d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 28249d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown /** 2825fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns true if all points in the motion event are completely within the specified bounds. 2826fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2827fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2828fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final boolean isWithinBoundsNoHistory(float left, float top, 2829fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown float right, float bottom) { 2830fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 2831fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 2832fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final float x = nativeGetAxisValue(mNativePtr, AXIS_X, i, HISTORY_CURRENT); 2833fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final float y = nativeGetAxisValue(mNativePtr, AXIS_Y, i, HISTORY_CURRENT); 2834fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (x < left || x > right || y < top || y > bottom) { 2835fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return false; 2836fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2837fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2838fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return true; 2839fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2840fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2841fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final float clamp(float value, float low, float high) { 2842fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (value < low) { 2843fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return low; 2844fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else if (value > high) { 2845fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return high; 2846fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2847fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return value; 2848fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2849fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2850fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 2851fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a new motion events whose points have been clamped to the specified bounds. 2852fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2853fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2854fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final MotionEvent clampNoHistory(float left, float top, float right, float bottom) { 2855fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 2856fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 2857fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 2858fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2859fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(pointerCount); 2860fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 2861fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 2862fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2863fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 2864fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, i, pp[i]); 2865fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerCoords(mNativePtr, i, HISTORY_CURRENT, pc[i]); 2866fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[i].x = clamp(pc[i].x, left, right); 2867fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[i].y = clamp(pc[i].y, top, bottom); 2868fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2869fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 2870fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), 2871fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetAction(mNativePtr), nativeGetFlags(mNativePtr), 2872fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), 2873fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetButtonState(mNativePtr), 2874fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), 2875fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), 2876fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDownTimeNanos(mNativePtr), 2877fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT), 2878fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCount, pp, pc); 2879fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return ev; 2880fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2881fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2882fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2883fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 2884fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets an integer where each pointer id present in the event is marked as a bit. 2885fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2886fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2887fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getPointerIdBits() { 2888fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int idBits = 0; 2889fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 2890fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 2891fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown idBits |= 1 << nativeGetPointerId(mNativePtr, i); 2892fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2893fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return idBits; 2894fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2895fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2896fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 2897fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Splits a motion event such that it includes only a subset of pointer ids. 2898fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 2899fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2900fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final MotionEvent split(int idBits) { 2901fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 2902fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 2903fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldPointerCount = nativeGetPointerCount(mNativePtr); 2904fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(oldPointerCount); 2905fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 2906fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 2907fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int[] map = gSharedTempPointerIndexMap; 2908fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2909fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldAction = nativeGetAction(mNativePtr); 2910fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldActionMasked = oldAction & ACTION_MASK; 2911fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldActionPointerIndex = (oldAction & ACTION_POINTER_INDEX_MASK) 2912fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown >> ACTION_POINTER_INDEX_SHIFT; 2913fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newActionPointerIndex = -1; 2914fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newPointerCount = 0; 2915fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newIdBits = 0; 2916fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < oldPointerCount; i++) { 2917fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, i, pp[newPointerCount]); 2918fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int idBit = 1 << pp[newPointerCount].id; 2919fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if ((idBit & idBits) != 0) { 2920fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (i == oldActionPointerIndex) { 2921fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newActionPointerIndex = newPointerCount; 2922fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2923fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown map[newPointerCount] = i; 2924fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newPointerCount += 1; 2925fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newIdBits |= idBit; 2926fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2927fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2928fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2929fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (newPointerCount == 0) { 2930fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown throw new IllegalArgumentException("idBits did not match any ids in the event"); 2931fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2932fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2933fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int newAction; 2934fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (oldActionMasked == ACTION_POINTER_DOWN || oldActionMasked == ACTION_POINTER_UP) { 2935fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (newActionPointerIndex < 0) { 2936fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // An unrelated pointer changed. 2937fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = ACTION_MOVE; 2938fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else if (newPointerCount == 1) { 2939fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // The first/last pointer went down/up. 2940fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldActionMasked == ACTION_POINTER_DOWN 2941fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ? ACTION_DOWN : ACTION_UP; 2942fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 2943fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // A secondary pointer went down/up. 2944fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldActionMasked 2945fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown | (newActionPointerIndex << ACTION_POINTER_INDEX_SHIFT); 2946fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2947fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 2948fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Simple up/down/cancel/move or other motion action. 2949fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldAction; 2950fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2951fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2952fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int historySize = nativeGetHistorySize(mNativePtr); 2953fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int h = 0; h <= historySize; h++) { 2954fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int historyPos = h == historySize ? HISTORY_CURRENT : h; 2955fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2956fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < newPointerCount; i++) { 2957fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerCoords(mNativePtr, map[i], historyPos, pc[i]); 2958fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2959fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2960fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final long eventTimeNanos = nativeGetEventTimeNanos(mNativePtr, historyPos); 2961fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (h == 0) { 2962fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 2963fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), 2964fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction, nativeGetFlags(mNativePtr), 2965fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), 2966fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetButtonState(mNativePtr), 2967fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), 2968fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), 2969fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDownTimeNanos(mNativePtr), eventTimeNanos, 2970fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newPointerCount, pp, pc); 2971fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 2972fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeAddBatch(ev.mNativePtr, eventTimeNanos, pc, 0); 2973fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2974fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2975fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return ev; 2976fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2977fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2978fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 29799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 29809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 2981fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown StringBuilder msg = new StringBuilder(); 2982fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append("MotionEvent { action=").append(actionToString(getAction())); 2983fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2984fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = getPointerCount(); 2985fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 2986fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", id[").append(i).append("]=").append(getPointerId(i)); 2987fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", x[").append(i).append("]=").append(getX(i)); 2988fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", y[").append(i).append("]=").append(getY(i)); 2989fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", toolType[").append(i).append("]=").append( 2990fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolTypeToString(getToolType(i))); 2991fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2992fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 29938134681b25dfff814ffeaad8ff70e84316c1869fJeff Brown msg.append(", buttonState=").append(MotionEvent.buttonStateToString(getButtonState())); 2994fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", metaState=").append(KeyEvent.metaStateToString(getMetaState())); 2995fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", flags=0x").append(Integer.toHexString(getFlags())); 2996fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", edgeFlags=0x").append(Integer.toHexString(getEdgeFlags())); 2997fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", pointerCount=").append(pointerCount); 2998fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", historySize=").append(getHistorySize()); 2999fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", eventTime=").append(getEventTime()); 3000fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", downTime=").append(getDownTime()); 3001fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", deviceId=").append(getDeviceId()); 3002fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", source=0x").append(Integer.toHexString(getSource())); 3003fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(" }"); 3004fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return msg.toString(); 3005497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 3006497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown 3007497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown /** 3008497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * Returns a string that represents the symbolic name of the specified action 300991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * such as "ACTION_DOWN", "ACTION_POINTER_DOWN(3)" or an equivalent numeric constant 301091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * such as "35" if unknown. 3011497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * 3012497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * @param action The action. 3013497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * @return The symbolic name of the specified action. 3014497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * @hide 3015497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown */ 3016497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown public static String actionToString(int action) { 3017497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown switch (action) { 3018497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_DOWN: 3019497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_DOWN"; 3020497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_UP: 3021497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_UP"; 3022497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_CANCEL: 3023497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_CANCEL"; 302433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown case ACTION_OUTSIDE: 302533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown return "ACTION_OUTSIDE"; 3026497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_MOVE: 3027497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_MOVE"; 3028cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown case ACTION_HOVER_MOVE: 3029cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown return "ACTION_HOVER_MOVE"; 303033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown case ACTION_SCROLL: 303133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown return "ACTION_SCROLL"; 3032a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown case ACTION_HOVER_ENTER: 3033a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown return "ACTION_HOVER_ENTER"; 3034a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown case ACTION_HOVER_EXIT: 3035a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown return "ACTION_HOVER_EXIT"; 3036497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 3037497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown int index = (action & ACTION_POINTER_INDEX_MASK) >> ACTION_POINTER_INDEX_SHIFT; 3038497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown switch (action & ACTION_MASK) { 3039497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_POINTER_DOWN: 3040497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_POINTER_DOWN(" + index + ")"; 3041497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_POINTER_UP: 3042497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_POINTER_UP(" + index + ")"; 3043497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown default: 3044497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return Integer.toString(action); 3045497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 30469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 30479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 304891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 304991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns a string that represents the symbolic name of the specified axis 30506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * such as "AXIS_X" or an equivalent numeric constant such as "42" if unknown. 305191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 305291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis 305391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The symbolic name of the specified axis. 305491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 305591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static String axisToString(int axis) { 30566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown String symbolicName = AXIS_SYMBOLIC_NAMES.get(axis); 30576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return symbolicName != null ? symbolicName : Integer.toString(axis); 30586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 30596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 30606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 3061cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Gets an axis by its symbolic name such as "AXIS_X" or an 3062cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * equivalent numeric constant such as "42". 30636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 30646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @param symbolicName The symbolic name of the axis. 30656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @return The axis or -1 if not found. 30666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #keycodeToString 30676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 30686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static int axisFromString(String symbolicName) { 30696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown if (symbolicName == null) { 30706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown throw new IllegalArgumentException("symbolicName must not be null"); 30716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 30726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 30736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int count = AXIS_SYMBOLIC_NAMES.size(); 30746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown for (int i = 0; i < count; i++) { 30756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown if (symbolicName.equals(AXIS_SYMBOLIC_NAMES.valueAt(i))) { 30766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return i; 30776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 30786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 30796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 30806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown try { 30816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return Integer.parseInt(symbolicName, 10); 30826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } catch (NumberFormatException ex) { 30836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return -1; 308491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 308591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 308691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3087fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3088fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a string that represents the symbolic name of the specified combined 3089fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * button state flags such as "0", "BUTTON_PRIMARY", 3090fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * "BUTTON_PRIMARY|BUTTON_SECONDARY" or an equivalent numeric constant such as "0x10000000" 3091fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * if unknown. 3092fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3093fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param buttonState The button state. 3094fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The symbolic name of the specified combined button state flags. 3095fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3096fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3097fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static String buttonStateToString(int buttonState) { 3098fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (buttonState == 0) { 3099fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return "0"; 3100fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3101fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown StringBuilder result = null; 3102fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int i = 0; 3103fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown while (buttonState != 0) { 3104fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final boolean isSet = (buttonState & 1) != 0; 3105fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown buttonState >>>= 1; // unsigned shift! 3106fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (isSet) { 3107fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final String name = BUTTON_SYMBOLIC_NAMES[i]; 3108fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (result == null) { 3109fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (buttonState == 0) { 3110fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return name; 3111fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3112fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result = new StringBuilder(name); 3113fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 3114fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result.append('|'); 3115fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result.append(name); 3116fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3117fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3118fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown i += 1; 3119fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3120fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return result.toString(); 3121fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3122fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3123fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3124fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a string that represents the symbolic name of the specified tool type 3125fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as "TOOL_TYPE_FINGER" or an equivalent numeric constant such as "42" if unknown. 3126fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3127fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param toolType The tool type. 3128fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The symbolic name of the specified tool type. 3129fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3130fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3131fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static String toolTypeToString(int toolType) { 3132fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown String symbolicName = TOOL_TYPE_SYMBOLIC_NAMES.get(toolType); 3133fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return symbolicName != null ? symbolicName : Integer.toString(toolType); 3134fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3135fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 31369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<MotionEvent> CREATOR 31379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<MotionEvent>() { 31389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MotionEvent createFromParcel(Parcel in) { 31396ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown in.readInt(); // skip token, we already know this is a MotionEvent 31406ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown return MotionEvent.createFromParcelBody(in); 31419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MotionEvent[] newArray(int size) { 31449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new MotionEvent[size]; 31459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 31469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 31479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 31486ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown /** @hide */ 31496ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown public static MotionEvent createFromParcelBody(Parcel in) { 315091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 315191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeReadFromParcel(ev.mNativePtr, in); 31526ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown return ev; 31536ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown } 315491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 31559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel out, int flags) { 31566ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown out.writeInt(PARCEL_TOKEN_MOTION_EVENT); 315791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeWriteToParcel(mNativePtr, out); 31589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 315991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3160c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3161c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Transfer object for pointer coordinates. 3162c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 3163fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Objects of this type can be used to specify the pointer coordinates when 3164fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * creating new {@link MotionEvent} objects and to query pointer coordinates 3165fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * in bulk. 3166c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 3167c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Refer to {@link InputDevice} for information about how different kinds of 3168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * input devices and sources represent pointer coordinates. 3169c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3170c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final class PointerCoords { 317191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final int INITIAL_PACKED_AXIS_VALUES = 8; 31726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown private long mPackedAxisBits; 317391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private float[] mPackedAxisValues; 317491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 317591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 317691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Creates a pointer coords object with all axes initialized to zero. 317791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 317891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public PointerCoords() { 317991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 318091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 318191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 318291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Creates a pointer coords object as a copy of the 318391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * contents of another pointer coords object. 318491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 318591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param other The pointer coords object to copy. 318691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 318791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public PointerCoords(PointerCoords other) { 318891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown copyFrom(other); 318991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 319091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3191fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** @hide */ 3192fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static PointerCoords[] createArray(int size) { 3193fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerCoords[] array = new PointerCoords[size]; 3194fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < size; i++) { 3195fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown array[i] = new PointerCoords(); 3196fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3197fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return array; 3198fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3199fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3200c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 32016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The X component of the pointer movement. 320291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 320391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 3204c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3205c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float x; 3206c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3207c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 32086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The Y component of the pointer movement. 320991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 321091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 3211c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3212c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float y; 3213c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3214c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 321591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * A normalized value that describes the pressure applied to the device 321691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * by a finger or other tool. 3217c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), 321891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * although values higher than 1 may be generated depending on the calibration of 3219c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the input device. 322091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 322191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_PRESSURE 3222c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3223c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float pressure; 3224c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3225c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 322691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * A normalized value that describes the approximate size of the pointer touch area 322791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * in relation to the maximum detectable size of the device. 322891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * It represents some approximation of the area of the screen being 3229c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * pressed; the actual value in pixels corresponding to the 3230c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touch is normalized with the device specific range of values 3231c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * and scaled to a value between 0 and 1. The value of size can be used to 3232c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * determine fat touch events. 323391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 323491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_SIZE 3235c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3236c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float size; 3237c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3238c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3239c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the major axis of an ellipse that describes the touch area at 3240c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the point of contact. 324191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 324291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 324391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 324491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOUCH_MAJOR 3245c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3246c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float touchMajor; 3247c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3248c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3249c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the minor axis of an ellipse that describes the touch area at 3250c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the point of contact. 325191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 325291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 325391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 325491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOUCH_MINOR 3255c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3256c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float touchMinor; 3257c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3258c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3259c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the major axis of an ellipse that describes the size of 3260c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool. 3261c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 3262c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 326391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 326491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 326591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 326691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOOL_MAJOR 3267c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3268c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float toolMajor; 3269c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3270c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3271c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the minor axis of an ellipse that describes the size of 3272c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool. 3273c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 3274c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 327591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 327691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 327791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 327891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOOL_MINOR 3279c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3280c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float toolMinor; 3281c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3282c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3283c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The orientation of the touch area and tool area in radians clockwise from vertical. 32846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 3285c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 3286c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 3287c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the left. 32886d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 3289c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (finger pointing fully right). 329091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 329191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_ORIENTATION 3292c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3293c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float orientation; 329491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 329591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 329691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Clears the contents of this object. 329791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Resets all axes to zero. 329891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 329991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void clear() { 330091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = 0; 330191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 330291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = 0; 330391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = 0; 330491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = 0; 330591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = 0; 330691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = 0; 330791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = 0; 330891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = 0; 330991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = 0; 331091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = 0; 3311c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 331291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 331391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 331491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Copies the contents of another pointer coords object. 331591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 331691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param other The pointer coords object to copy. 331791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 331891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void copyFrom(PointerCoords other) { 33196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = other.mPackedAxisBits; 332091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = bits; 332191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (bits != 0) { 332291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown final float[] otherValues = other.mPackedAxisValues; 33236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int count = Long.bitCount(bits); 332491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] values = mPackedAxisValues; 332591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (values == null || count > values.length) { 332691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = new float[otherValues.length]; 332791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 332891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 332991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(otherValues, 0, values, 0, count); 333091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 333191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 333291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = other.x; 333391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = other.y; 333491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = other.pressure; 333591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = other.size; 333691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = other.touchMajor; 333791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = other.touchMinor; 333891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = other.toolMajor; 333991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = other.toolMinor; 334091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = other.orientation; 3341c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 334291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 334391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 334491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Gets the value associated with the specified axis. 334591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 334691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 334791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value associated with the axis, or 0 if none. 334891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 334991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 335091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 335191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 335291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public float getAxisValue(int axis) { 335391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown switch (axis) { 335491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_X: 335591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return x; 335691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_Y: 335791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return y; 335891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_PRESSURE: 335991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return pressure; 336091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_SIZE: 336191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return size; 336291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MAJOR: 336391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return touchMajor; 336491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MINOR: 336591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return touchMinor; 336691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MAJOR: 336791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return toolMajor; 336891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MINOR: 336991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return toolMinor; 337091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_ORIENTATION: 337191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return orientation; 337291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown default: { 33736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown if (axis < 0 || axis > 63) { 33746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown throw new IllegalArgumentException("Axis out of range."); 33756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 33766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = mPackedAxisBits; 33776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long axisBit = 1L << axis; 337891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if ((bits & axisBit) == 0) { 337991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return 0; 338091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 33816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int index = Long.bitCount(bits & (axisBit - 1L)); 338291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return mPackedAxisValues[index]; 338391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 338491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 3385c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 338691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 338791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 338891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Sets the value associated with the specified axis. 338991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 339091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to assign. 339191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param value The value to set. 339291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 339391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 339491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 339591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 339691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void setAxisValue(int axis, float value) { 339791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown switch (axis) { 339891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_X: 339991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = value; 340091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 340191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_Y: 340291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = value; 340391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 340491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_PRESSURE: 340591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = value; 340691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 340791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_SIZE: 340891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = value; 340991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 341091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MAJOR: 341191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = value; 341291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 341391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MINOR: 341491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = value; 341591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 341691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MAJOR: 341791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = value; 341891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 341991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MINOR: 342091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = value; 342191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 342291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_ORIENTATION: 342391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = value; 342491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 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; 34306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long axisBit = 1L << axis; 34316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int index = Long.bitCount(bits & (axisBit - 1L)); 343291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] values = mPackedAxisValues; 343391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if ((bits & axisBit) == 0) { 343491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (values == null) { 343591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = new float[INITIAL_PACKED_AXIS_VALUES]; 343691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 343791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } else { 34386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int count = Long.bitCount(bits); 343991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (count < values.length) { 344091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (index != count) { 344191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, index, values, index + 1, 344291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown count - index); 344391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 344491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } else { 344591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] newValues = new float[count * 2]; 344691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, 0, newValues, 0, index); 344791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, index, newValues, index + 1, 344891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown count - index); 344991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = newValues; 345091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 345191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 345291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 345391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = bits | axisBit; 345491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 345591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values[index] = value; 345691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 345791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 3458c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 3459c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 3460fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3461fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3462fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Transfer object for pointer properties. 3463fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3464fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Objects of this type can be used to specify the pointer id and tool type 3465fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when creating new {@link MotionEvent} objects and to query pointer properties in bulk. 3466fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3467fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final class PointerProperties { 3468fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3469fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Creates a pointer properties object with an invalid pointer id. 3470fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3471fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public PointerProperties() { 3472fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown clear(); 3473fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3474fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3475fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3476fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Creates a pointer properties object as a copy of the contents of 3477fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * another pointer properties object. 3478fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param other 3479fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3480fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public PointerProperties(PointerProperties other) { 3481fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown copyFrom(other); 3482fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3483fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3484fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** @hide */ 3485fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static PointerProperties[] createArray(int size) { 3486fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerProperties[] array = new PointerProperties[size]; 3487fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < size; i++) { 3488fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown array[i] = new PointerProperties(); 3489fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3490fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return array; 3491fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3492fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3493fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3494fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer id. 3495fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Initially set to {@link #INVALID_POINTER_ID} (-1). 3496fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3497fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent#getPointerId(int) 3498fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3499fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public int id; 3500fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3501fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3502fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer tool type. 3503fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Initially set to 0. 3504fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3505fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent#getToolType(int) 3506fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3507fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public int toolType; 3508fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3509fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3510fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Resets the pointer properties to their initial values. 3511fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3512fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public void clear() { 3513fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown id = INVALID_POINTER_ID; 3514fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolType = TOOL_TYPE_UNKNOWN; 3515fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3516fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3517fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3518fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Copies the contents of another pointer properties object. 3519fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3520fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param other The pointer properties object to copy. 3521fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3522fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public void copyFrom(PointerProperties other) { 3523fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown id = other.id; 3524fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolType = other.toolType; 3525fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 35269d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 35279d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown @Override 35289d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public boolean equals(Object other) { 35299d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (other instanceof PointerProperties) { 35309d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return equals((PointerProperties)other); 35319d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 35329d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 35339d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 35349d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 35359d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown private boolean equals(PointerProperties other) { 35369d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return other != null && id == other.id && toolType == other.toolType; 35379d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 35389d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 35399d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown @Override 35409d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public int hashCode() { 35419d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return id | (toolType << 8); 35429d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 3543fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 35449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3545