19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.view; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1920e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brownimport android.graphics.Matrix; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.SystemClock; 236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brownimport android.util.SparseArray; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 26fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Object used to report movement (mouse, pen, finger, trackball) events. 27fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events may hold either absolute or relative movements and other data, 28fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * depending on the type of device. 29fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 30fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Overview</h3> 31dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * <p> 32fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events describe movements in terms of an action code and a set of axis values. 33fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The action code specifies the state change that occurred such as a pointer going 34fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * down or up. The axis values describe the position and other movement properties. 35dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 36fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * For example, when the user first touches the screen, the system delivers a touch 37fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * event to the appropriate {@link View} with the action code {@link #ACTION_DOWN} 38fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * and a set of axis values that include the X and Y coordinates of the touch and 39fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * information about the pressure, size and orientation of the contact area. 4033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p><p> 41fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Some devices can report multiple movement traces at the same time. Multi-touch 42fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * screens emit one movement trace for each finger. The individual fingers or 43fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * other objects that generate movement traces are referred to as <em>pointers</em>. 44fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events contain information about all of the pointers that are currently active 45fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * even if some of them have not moved since the last event was delivered. 46dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 47fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The number of pointers only ever changes by one as individual pointers go up and down, 48dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * except when the gesture is canceled. 49dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 50fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Each pointer has a unique id that is assigned when it first goes down 51fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (indicated by {@link #ACTION_DOWN} or {@link #ACTION_POINTER_DOWN}). A pointer id 52fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * remains valid until the pointer eventually goes up (indicated by {@link #ACTION_UP} 53fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * or {@link #ACTION_POINTER_UP}) or when the gesture is canceled (indicated by 54fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #ACTION_CANCEL}). 55fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 56fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The MotionEvent class provides many methods to query the position and other properties of 57fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * pointers, such as {@link #getX(int)}, {@link #getY(int)}, {@link #getAxisValue}, 58fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #getPointerId(int)}, {@link #getToolType(int)}, and many others. Most of these 59fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * methods accept the pointer index as a parameter rather than the pointer id. 60fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer index of each pointer in the event ranges from 0 to one less than the value 61fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * returned by {@link #getPointerCount()}. 62dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 63fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The order in which individual pointers appear within a motion event is undefined. 64fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Thus the pointer index of a pointer can change from one event to the next but 65fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the pointer id of a pointer is guaranteed to remain constant as long as the pointer 66fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * remains active. Use the {@link #getPointerId(int)} method to obtain the 67fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * pointer id of a pointer to track it across all subsequent motion events in a gesture. 68fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Then for successive motion events, use the {@link #findPointerIndex(int)} method 69fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * to obtain the pointer index for a given pointer id in that motion event. 70fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 71fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Mouse and stylus buttons can be retrieved using {@link #getButtonState()}. It is a 72fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * good idea to check the button state while handling {@link #ACTION_DOWN} as part 73fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * of a touch event. The application may choose to perform some different action 74fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * if the touch event starts due to a secondary button click, such as presenting a 75fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * context menu. 76fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 77fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 78fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Batching</h3> 79fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 80dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * For efficiency, motion events with {@link #ACTION_MOVE} may batch together 81dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * multiple movement samples within a single object. The most current 82dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * pointer coordinates are available using {@link #getX(int)} and {@link #getY(int)}. 83dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * Earlier coordinates within the batch are accessed using {@link #getHistoricalX(int, int)} 84dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * and {@link #getHistoricalY(int, int)}. The coordinates are "historical" only 85dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * insofar as they are older than the current coordinates in the batch; however, 86dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * they are still distinct from any other coordinates reported in prior motion events. 87dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * To process all coordinates in the batch in time order, first consume the historical 88dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * coordinates then consume the current coordinates. 89dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 90dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * Example: Consuming all samples for all pointers in a motion event in time order. 91dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p><pre><code> 92dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * void printSamples(MotionEvent ev) { 93dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * final int historySize = ev.getHistorySize(); 94dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * final int pointerCount = ev.getPointerCount(); 95dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * for (int h = 0; h < historySize; h++) { 96dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf("At time %d:", ev.getHistoricalEventTime(h)); 97dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * for (int p = 0; p < pointerCount; p++) { 98dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf(" pointer %d: (%f,%f)", 99dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * ev.getPointerId(p), ev.getHistoricalX(p, h), ev.getHistoricalY(p, h)); 100dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 101dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 102dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf("At time %d:", ev.getEventTime()); 103dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * for (int p = 0; p < pointerCount; p++) { 104dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * System.out.printf(" pointer %d: (%f,%f)", 105dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * ev.getPointerId(p), ev.getX(p), ev.getY(p)); 106dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 107dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * } 108fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </code></pre></p> 109fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 110fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Device Types</h3> 111fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 112fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The interpretation of the contents of a MotionEvent varies significantly depending 113fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * on the source class of the device. 114fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 115fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * On pointing devices with source class {@link InputDevice#SOURCE_CLASS_POINTER} 116fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as touch screens, the pointer coordinates specify absolute 117fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * positions such as view X/Y coordinates. Each complete gesture is represented 118fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * by a sequence of motion events with actions that describe pointer state transitions 119fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * and movements. A gesture starts with a motion event with {@link #ACTION_DOWN} 120fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * that provides the location of the first pointer down. As each additional 121fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * pointer that goes down or up, the framework will generate a motion event with 122fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #ACTION_POINTER_DOWN} or {@link #ACTION_POINTER_UP} accordingly. 123fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Pointer movements are described by motion events with {@link #ACTION_MOVE}. 124fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Finally, a gesture end either when the final pointer goes up as represented 125fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * by a motion event with {@link #ACTION_UP} or when gesture is canceled 126fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * with {@link #ACTION_CANCEL}. 127fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 128fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Some pointing devices such as mice may support vertical and/or horizontal scrolling. 129fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * A scroll event is reported as a generic motion event with {@link #ACTION_SCROLL} that 130fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * includes the relative scroll offset in the {@link #AXIS_VSCROLL} and 131fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #AXIS_HSCROLL} axes. See {@link #getAxisValue(int)} for information 132fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * about retrieving these additional axes. 133fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 134fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * On trackball devices with source class {@link InputDevice#SOURCE_CLASS_TRACKBALL}, 135fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the pointer coordinates specify relative movements as X/Y deltas. 136fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * A trackball gesture consists of a sequence of movements described by motion 137fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * events with {@link #ACTION_MOVE} interspersed with occasional {@link #ACTION_DOWN} 138fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * or {@link #ACTION_UP} motion events when the trackball button is pressed or released. 139fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 140fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * On joystick devices with source class {@link InputDevice#SOURCE_CLASS_JOYSTICK}, 141fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the pointer coordinates specify the absolute position of the joystick axes. 142fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The joystick axis values are normalized to a range of -1.0 to 1.0 where 0.0 corresponds 143fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * to the center position. More information about the set of available axes and the 144fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * range of motion can be obtained using {@link InputDevice#getMotionRange}. 145fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Some common joystick axes are {@link #AXIS_X}, {@link #AXIS_Y}, 146fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * {@link #AXIS_HAT_X}, {@link #AXIS_HAT_Y}, {@link #AXIS_Z} and {@link #AXIS_RZ}. 147dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p><p> 148dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * Refer to {@link InputDevice} for more information about how different kinds of 149c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * input devices and sources represent pointer coordinates. 150dc1ab4b5cc274b7d744c11a939bb5910becec5e0Jeff Brown * </p> 151fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 152fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <h3>Consistency Guarantees</h3> 153fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 154fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Motion events are always delivered to views as a consistent stream of events. 155fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * What constitutes a consistent stream varies depending on the type of device. 156fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * For touch events, consistency implies that pointers go down one at a time, 157fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * move around as a group and then go up one at a time or are canceled. 158fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 159fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * While the framework tries to deliver consistent streams of motion events to 160fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * views, it cannot guarantee it. Some events may be dropped or modified by 161fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * containing views in the application before they are delivered thereby making 162fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the stream of events inconsistent. Views should always be prepared to 163fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * handle {@link #ACTION_CANCEL} and should tolerate anomalous 164fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * situations such as receiving a new {@link #ACTION_DOWN} without first having 165fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * received an {@link #ACTION_UP} for the prior gesture. 166fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownpublic final class MotionEvent extends InputEvent implements Parcelable { 16991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final long NS_PER_MS = 1000000; 170337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright private static final String LABEL_PREFIX = "AXIS_"; 171fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 172fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 173fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * An invalid pointer id. 174fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 175fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This value (-1) can be used as a placeholder to indicate that a pointer id 176fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * has not been assigned or is not available. It cannot appear as 177fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a pointer id inside a {@link MotionEvent}. 178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int INVALID_POINTER_ID = -1; 180fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Bit mask of the parts of the action code that are the action itself. 1839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 1849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_MASK = 0xff; 1859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 1869822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 187fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A pressed gesture has started, the 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * motion contains the initial starting location. 189fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 190fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This is also a good time to check the button state to distinguish 191fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * secondary and tertiary button clicks and handle them appropriately. 192fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getButtonState} to retrieve the button state. 193fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_DOWN = 0; 1969822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 198fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A pressed gesture has finished, the 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * motion contains the final release location as well as any intermediate 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * points since the last down or move event. 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_UP = 1; 2039822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 205fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A change has happened during a 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * press gesture (between {@link #ACTION_DOWN} and {@link #ACTION_UP}). 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The motion contains the most recent point, as well as any intermediate 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * points since the last down or move event. 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_MOVE = 2; 2119822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 213fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The current gesture has been aborted. 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You will not receive any more points in it. You should treat this as 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * an up event, but not perform any action that you normally would. 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_CANCEL = 3; 2189822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 220fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A movement has happened outside of the 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * normal bounds of the UI element. This does not provide a full gesture, 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * but only the initial location of the movement/touch. 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ACTION_OUTSIDE = 4; 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2269822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 227fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A non-primary pointer has gone down. 228fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 229fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. 230fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 231fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the 232fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * unmasked action returned by {@link #getAction}. 233fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 2349822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 2359822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_DOWN = 5; 2369822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 2379822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 238fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A non-primary pointer has gone up. 239fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 240fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Use {@link #getActionIndex} to retrieve the index of the pointer that changed. 241fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 242fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The index is encoded in the {@link #ACTION_POINTER_INDEX_MASK} bits of the 243fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * unmasked action returned by {@link #getAction}. 244fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 2459822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 246b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_UP = 6; 247cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown 248cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown /** 249fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: A change happened but the pointer 250cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * is not down (unlike {@link #ACTION_MOVE}). The motion contains the most 251cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * recent point, as well as any intermediate points since the last 252cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * hover move event. 25333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * <p> 254a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer. 255a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 25633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * This action is not a touch event so it is delivered to 25733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 25833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 25933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 260cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown */ 261cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown public static final int ACTION_HOVER_MOVE = 7; 262cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown 2639822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 264fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The motion event contains relative 26533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * vertical and/or horizontal scroll offsets. Use {@link #getAxisValue(int)} 26633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * to retrieve the information from {@link #AXIS_VSCROLL} and {@link #AXIS_HSCROLL}. 26733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * The pointer may or may not be down when this event is dispatched. 268fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 269a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer, which 270a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * may not be the window or view currently touched. 271fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p><p> 27233bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * This action is not a touch event so it is delivered to 27333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 27433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 27533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 27633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown */ 27733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown public static final int ACTION_SCROLL = 8; 27833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown 27933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown /** 280fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The pointer is not down but has entered the 281a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * boundaries of a window or view. 282a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * <p> 283a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view under the pointer. 284a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 285a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is not a touch event so it is delivered to 286a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 287a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 288a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p> 289a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown */ 290a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown public static final int ACTION_HOVER_ENTER = 9; 291a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown 292a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown /** 293fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Constant for {@link #getActionMasked}: The pointer is not down but has exited the 294a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * boundaries of a window or view. 295a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * <p> 296a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is always delivered to the window or view that was previously under the pointer. 297a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p><p> 298a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * This action is not a touch event so it is delivered to 299a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onGenericMotionEvent(MotionEvent)} rather than 300a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link View#onTouchEvent(MotionEvent)}. 301a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * </p> 302a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown */ 303a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown public static final int ACTION_HOVER_EXIT = 10; 304a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown 305a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown /** 3065bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Constant for {@link #getActionMasked}: A button has been pressed. 3075bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * 3085bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * <p> 3095bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Use {@link #getActionButton()} to get which button was pressed. 3105bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * </p><p> 3115bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * This action is not a touch event so it is delivered to 3125bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * {@link View#onGenericMotionEvent(MotionEvent)} rather than 3135bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * {@link View#onTouchEvent(MotionEvent)}. 3145bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * </p> 3155bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright */ 3165bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright public static final int ACTION_BUTTON_PRESS = 11; 3175bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright 3185bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright /** 3195bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Constant for {@link #getActionMasked}: A button has been released. 3205bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * 3215bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * <p> 3225bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Use {@link #getActionButton()} to get which button was released. 3235bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * </p><p> 3245bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * This action is not a touch event so it is delivered to 3255bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * {@link View#onGenericMotionEvent(MotionEvent)} rather than 3265bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * {@link View#onTouchEvent(MotionEvent)}. 3275bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * </p> 3285bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright */ 3295bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright public static final int ACTION_BUTTON_RELEASE = 12; 3305bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright 3315bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright /** 332b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * Bits in the action code that represent a pointer index, used with 333b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * {@link #ACTION_POINTER_DOWN} and {@link #ACTION_POINTER_UP}. Shifting 334b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * down by {@link #ACTION_POINTER_INDEX_SHIFT} provides the actual pointer 335b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * index where the data for the pointer going up or down can be found; you can 336b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * get its identifier with {@link #getPointerId(int)} and the actual 337b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data with {@link #getX(int)} etc. 338fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 339fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getActionIndex 3409822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 341b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_INDEX_MASK = 0xff00; 3429822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3439822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 344b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * Bit shift for the action bits holding the pointer index as 345b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * defined by {@link #ACTION_POINTER_INDEX_MASK}. 346fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 347fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getActionIndex 3489822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 349b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_INDEX_SHIFT = 8; 350fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3519822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 352b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 353b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 3549822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 355b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 356b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_1_DOWN = ACTION_POINTER_DOWN | 0x0000; 357b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 358b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 359b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 360b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 361b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 362b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 363b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_2_DOWN = ACTION_POINTER_DOWN | 0x0100; 3649822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3659822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 366b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 367b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_DOWN}. 3689822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 369b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 370b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public static final int ACTION_POINTER_3_DOWN = ACTION_POINTER_DOWN | 0x0200; 371b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 372b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 373b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 374b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 375b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 376b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3779822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_1_UP = ACTION_POINTER_UP | 0x0000; 3789822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3799822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 380b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 381b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 3829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 383b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_2_UP = ACTION_POINTER_UP | 0x0100; 3859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3869822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 387b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Use {@link #ACTION_POINTER_INDEX_MASK} to retrieve the 388b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * data index associated with {@link #ACTION_POINTER_UP}. 3899822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 390b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3919822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public static final int ACTION_POINTER_3_UP = ACTION_POINTER_UP | 0x0200; 3929822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 3939822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 394b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_MASK} to match 395b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * the actual data contained in these bits. 3969822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 397b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 3980dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public static final int ACTION_POINTER_ID_MASK = 0xff00; 3999822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 4009822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 401b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * @deprecated Renamed to {@link #ACTION_POINTER_INDEX_SHIFT} to match 402b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * the actual data contained in these bits. 4039822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 404b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn @Deprecated 4050dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public static final int ACTION_POINTER_ID_SHIFT = 8; 4069822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 40785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown /** 40885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * This flag indicates that the window that received this motion event is partly 40985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * or wholly obscured by another visible window above it. This flag is set to true 41085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * even if the event did not directly pass through the obscured area. 41185a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * A security sensitive application can check this flag to identify situations in which 41285a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * a malicious application may have covered up part of its content for the purpose 41385a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * of misleading the user or hijacking touches. An appropriate response might be 41485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * to drop the suspect touches or to take additional precautions to confirm the user's 41585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * actual intent. 41685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown */ 41785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown public static final int FLAG_WINDOW_IS_OBSCURED = 0x1; 418cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4200625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * This flag indicates that the window that received this motion event is partly 4210625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * or wholly obscured by another visible window above it. This flag is set to true 4220625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * even if the event did not directly pass through the obscured area. 4230625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * A security sensitive application can check this flag to identify situations in which 4240625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * a malicious application may have covered up part of its content for the purpose 4250625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * of misleading the user or hijacking touches. An appropriate response might be 4260625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * to drop the suspect touches or to take additional precautions to confirm the user's 4270625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * actual intent. 4280625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * 4290625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * Unlike FLAG_WINDOW_IS_OBSCURED, this is actually true. 4300625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright * @hide 4310625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright */ 4320625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright public static final int FLAG_WINDOW_IS_PARTIALLY_OBSCURED = 0x2; 4330625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright 4340625e11b3765890f7a8bda7006d1a8b29a492f7fMichael Wright /** 43521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * Private flag that indicates when the system has detected that this motion event 43621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * may be inconsistent with respect to the sequence of previously delivered motion events, 43721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * such as when a pointer move event is sent but the pointer is not down. 43821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * 43921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @hide 44021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @see #isTainted 44121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown * @see #setTainted 44221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown */ 44321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public static final int FLAG_TAINTED = 0x80000000; 44421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 44521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** 446ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * Private flag indicating that this event was synthesized by the system and 447ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * should be delivered to the accessibility focused view first. When being 448ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * dispatched such an event is not handled by predecessors of the accessibility 449ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * focused view and after the event reaches that view the flag is cleared and 450ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * normal event dispatch is performed. This ensures that the platform can click 451ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * on any view that has accessibility focus which is semantically equivalent to 452ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * asking the view to perform a click accessibility action but more generic as 453ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * views not implementing click action correctly can still be activated. 454ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * 455ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * @hide 456ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * @see #isTargetAccessibilityFocus() 457ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav * @see #setTargetAccessibilityFocus(boolean) 458ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav */ 459ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav public static final int FLAG_TARGET_ACCESSIBILITY_FOCUS = 0x40000000; 460ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 461ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 462ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav /** 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the top edge of the screen. 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_TOP = 0x00000001; 466cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the bottom edge of the screen. 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_BOTTOM = 0x00000002; 471cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the left edge of the screen. 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_LEFT = 0x00000004; 476cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag indicating the motion event intersected the right edge of the screen. 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int EDGE_RIGHT = 0x00000008; 481cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 48291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 483fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: X axis of a motion event. 4846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 4856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 4866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the absolute X screen position of the center of 4876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * the touch contact area. The units are display pixels. 4886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the absolute X surface position of the center of the touch 489cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 490cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * to query the effective range of values. 4916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, reports the absolute X screen position of the mouse pointer. 4926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 4936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, reports the relative horizontal displacement of the trackball. 4946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 4956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute X position of the joystick. 4966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 4976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 4986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 49991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 50091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX(int) 50191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalX(int, int) 50291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#x 50391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 5049822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 50591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_X = 0; 50691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 50791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 508fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Y axis of a motion event. 5096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the absolute Y screen position of the center of 5126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * the touch contact area. The units are display pixels. 5136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the absolute Y surface position of the center of the touch 5146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * contact area. The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, reports the absolute Y screen position of the mouse pointer. 5176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 5186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, reports the relative vertical displacement of the trackball. 5196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up) to 1.0 (down). 5206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Y position of the joystick. 5216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up or far) to 1.0 (down or near). 5226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 52491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 52591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY(int) 52691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalY(int, int) 52791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#y 52891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 529c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 53091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_Y = 1; 531c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 53291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 533fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Pressure axis of a motion event. 5346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 536cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a touch screen or touch pad, reports the approximate pressure applied to the surface 5376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * by a finger or other tool. The value is normalized to a range from 5386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 0 (no pressure at all) to 1 (normal pressure), although values higher than 1 5396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * may be generated depending on the calibration of the input device. 5406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a trackball, the value is set to 1 if the trackball button is pressed 5416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or 0 otherwise. 5426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a mouse, the value is set to 1 if the primary mouse button is pressed 5436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or 0 otherwise. 5446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 54691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 54791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure(int) 54891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalPressure(int, int) 54991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#pressure 55091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 551c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 55291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_PRESSURE = 2; 55391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 55491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 555fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Size axis of a motion event. 5566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen or touch pad, reports the approximate size of the contact area in 5596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * relation to the maximum detectable size for the device. The value is normalized 5606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to a range from 0 (smallest detectable size) to 1 (largest detectable size), 561cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * although it is not a linear scale. This value is of limited use. 5626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * To obtain calibrated size information, use 5636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * {@link #AXIS_TOUCH_MAJOR} or {@link #AXIS_TOOL_MAJOR}. 5646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 56691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 56791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize(int) 56891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalSize(int, int) 56991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#size 57091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 571c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 57291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_SIZE = 3; 573c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 57491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 575fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: TouchMajor axis of a motion event. 5766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the major axis of an ellipse that 5796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 5816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the major axis of an ellipse that 5826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 5836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 5846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 5856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 5866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 58791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 58891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor(int) 58991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalTouchMajor(int, int) 59091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#touchMajor 59191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 592c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 59391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOUCH_MAJOR = 4; 59491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 59591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 596fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: TouchMinor axis of a motion event. 5976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 5986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 5996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the minor axis of an ellipse that 6006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 6016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are display pixels. 6026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the minor axis of an ellipse that 6036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the touch area at the point of contact. 6046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 6056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 6066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 6096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 61091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 61191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor(int) 61291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalTouchMinor(int, int) 61391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#touchMinor 61491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 615c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 61691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOUCH_MINOR = 5; 617c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 61891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 619fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: ToolMajor axis of a motion event. 6206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the major axis of an ellipse that 6236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 6246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the major axis of an ellipse that 6256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 6266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 6276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 6286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 6316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The tool size may be larger than the touch size since the tool may not be fully 6336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * in contact with the touch sensor. 6346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 63591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 63691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor(int) 63791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalToolMajor(int, int) 63891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#toolMajor 63991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 6409822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 64191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOOL_MAJOR = 6; 64291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 64391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 644fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: ToolMinor axis of a motion event. 6456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen, reports the length of the minor axis of an ellipse that 6486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 6496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch pad, reports the length of the minor axis of an ellipse that 6506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * represents the size of the approaching finger or tool used to make contact. 6516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The units are device-dependent; use {@link InputDevice#getMotionRange(int)} 6526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to query the effective range of values. 6536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * When the touch is circular, the major and minor axis lengths will be equal to one another. 6566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 6576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The tool size may be larger than the touch size since the tool may not be fully 6586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * in contact with the touch sensor. 6596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 66091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 66191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor(int) 66291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalToolMinor(int, int) 66391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#toolMinor 66491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 6651e8dfc73fba88766ee3c25ae7b3bb1850319b11dDianne Hackborn */ 66691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_TOOL_MINOR = 7; 66791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 66891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 669fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Orientation axis of a motion event. 6706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 6726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a touch screen or touch pad, reports the orientation of the finger 6736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * or tool in radians relative to the vertical plane of the device. 6746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 67591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 67691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 67791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * indicates that the major axis of contact is oriented to the left. 67891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 67991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (finger pointing fully right). 68065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <li>For a stylus, the orientation indicates the direction in which the stylus 68165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * is pointing in relation to the vertical axis of the current orientation of the screen. 68265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * The range is from -PI radians to PI radians, where 0 is pointing up, 68365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * -PI/2 radians is pointing left, -PI or PI radians is pointing down, and PI/2 radians 68465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * is pointing right. See also {@link #AXIS_TILT}. 6856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 6866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 68791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 68891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation(int) 68991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistoricalOrientation(int, int) 69091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent.PointerCoords#orientation 69191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see InputDevice#getMotionRange 6929e2ad36be87f2703b3d737189944d82f93bd4f27Jeff Brown */ 69391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static final int AXIS_ORIENTATION = 8; 69491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 6956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 696fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Vertical Scroll axis of a motion event. 6976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 6986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 699cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a mouse, reports the relative movement of the vertical scroll wheel. 70033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * The value is normalized to a range from -1.0 (down) to 1.0 (up). 7016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 7036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * This axis should be used to scroll views vertically. 7046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_VSCROLL = 9; 7126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 714fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Horizontal Scroll axis of a motion event. 7156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 717cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * <li>For a mouse, reports the relative movement of the horizontal scroll wheel. 7186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 7196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p><p> 7216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * This axis should be used to scroll views horizontally. 7226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HSCROLL = 10; 7306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 732fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Z axis of a motion event. 7336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Z position of the joystick. 7366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (high) to 1.0 (low). 7376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <em>On game pads with two analog joysticks, this axis is often reinterpreted 7386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to report the absolute X position of the second joystick instead.</em> 7396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_Z = 11; 7486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 750fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: X Rotation axis of a motion event. 7516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the X axis. 7546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RX = 12; 7646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 766fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Y Rotation axis of a motion event. 7676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the Y axis. 7706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RY = 13; 7806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 782fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Z Rotation axis of a motion event. 7836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 7846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 7856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute rotation angle about the Z axis. 7866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (counter-clockwise) to 1.0 (clockwise). 7876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <em>On game pads with two analog joysticks, this axis is often reinterpreted 7886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * to report the absolute Y position of the second joystick instead.</em> 7896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 7906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 7916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 7926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 7936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 7946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 7956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 7966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 7976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RZ = 14; 7986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 7996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 800fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Hat X axis of a motion event. 8016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 8026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 8036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute X position of the directional hat control. 8046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (left) to 1.0 (right). 8056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 8066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 8076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 8086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 8096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 8126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 8136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HAT_X = 15; 8146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 8156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 816fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Hat Y axis of a motion event. 8176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 8186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 8196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute Y position of the directional hat control. 8206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from -1.0 (up) to 1.0 (down). 8216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 8226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 8236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 8246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 8256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 8286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 8296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_HAT_Y = 16; 8306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 8316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 832fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Left Trigger axis of a motion event. 8336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 8346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 8356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute position of the left trigger control. 8366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). 8376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 8386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 8396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 8406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 8416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 8446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 8456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_LTRIGGER = 17; 8466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 8476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 848fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Right Trigger axis of a motion event. 8496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <p> 8506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <ul> 8516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * <li>For a joystick, reports the absolute position of the right trigger control. 8526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The value is normalized to a range from 0.0 (released) to 1.0 (fully pressed). 8536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </ul> 8546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * </p> 8556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 8566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 8576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 8606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 8616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_RTRIGGER = 18; 8626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 8636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 864fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Throttle axis of a motion event. 8653a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8663a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8673a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the throttle control. 8683a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (fully open) to 1.0 (fully closed). 8693a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8703a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8713a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8723a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8733a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8743a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8753a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8763a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8773a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_THROTTLE = 19; 8783a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8793a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 880fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Rudder axis of a motion event. 8813a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8823a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8833a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the rudder control. 8843a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). 8853a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 8863a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 8873a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 8883a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 8893a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 8903a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 8913a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 8923a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 8933a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_RUDDER = 20; 8943a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 8953a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 896fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Wheel axis of a motion event. 8973a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 8983a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 8993a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the steering wheel control. 9003a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from -1.0 (turn left) to 1.0 (turn right). 9013a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 9023a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 9033a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 9043a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 9053a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9063a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9073a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 9083a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 9093a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_WHEEL = 21; 9103a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 9113a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 912fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Gas axis of a motion event. 9133a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 9143a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 9153a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the gas (accelerator) control. 9163a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (no acceleration) 9173a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * to 1.0 (maximum acceleration). 9183a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 9193a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 9203a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 9213a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 9223a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9233a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9243a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 9253a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 9263a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_GAS = 22; 9273a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 9283a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 929fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Brake axis of a motion event. 9303a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <p> 9313a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <ul> 9323a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * <li>For a joystick, reports the absolute position of the brake control. 9333a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * The value is normalized to a range from 0.0 (no braking) to 1.0 (maximum braking). 9343a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </ul> 9353a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * </p> 9363a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * 9373a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getAxisValue(int, int) 9383a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see #getHistoricalAxisValue(int, int, int) 9393a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 9403a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown * @see InputDevice#getMotionRange 9413a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown */ 9423a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown public static final int AXIS_BRAKE = 23; 9433a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown 9443a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown /** 945fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Distance axis of a motion event. 946fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 947fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <ul> 948fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <li>For a stylus, reports the distance of the stylus from the screen. 94965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * A value of 0.0 indicates direct contact and larger values indicate increasing 95065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * distance from the surface. 951fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </ul> 952fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 953fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 954fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getAxisValue(int, int) 955fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getHistoricalAxisValue(int, int, int) 956fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 957fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see InputDevice#getMotionRange 958fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 959fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int AXIS_DISTANCE = 24; 960fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 961fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 96265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * Axis constant: Tilt axis of a motion event. 96365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <p> 96465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <ul> 96565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * <li>For a stylus, reports the tilt angle of the stylus in radians where 96665fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * 0 radians indicates that the stylus is being held perpendicular to the 96765fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * surface, and PI/2 radians indicates that the stylus is being held flat 96865fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * against the surface. 96965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * </ul> 97065fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * </p> 97165fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * 97265fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see #getAxisValue(int, int) 97365fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see #getHistoricalAxisValue(int, int, int) 97465fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int, int) 97565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown * @see InputDevice#getMotionRange 97665fd251c3913fc921468a3dad190810db19eb9dfJeff Brown */ 97765fd251c3913fc921468a3dad190810db19eb9dfJeff Brown public static final int AXIS_TILT = 25; 97865fd251c3913fc921468a3dad190810db19eb9dfJeff Brown 97965fd251c3913fc921468a3dad190810db19eb9dfJeff Brown /** 98067322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * Axis constant: Generic scroll axis of a motion event. 98167322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * <p> 98267322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * <ul> 98367322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * <li>Reports the relative movement of the generic scrolling device. 98467322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * </ul> 98567322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * </p><p> 98667322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * This axis should be used for scroll events that are neither strictly vertical nor horizontal. 98767322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * A good example would be the rotation of a rotary encoder input device. 98867322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * </p> 98967322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * 99067322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani * @see #getAxisValue(int, int) 9918171658b9fdcbd8faf84aa01f187cc8e7d56fa9ePrashant Malani * {@hide} 99267322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani */ 99367322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani public static final int AXIS_SCROLL = 26; 99467322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani 99567322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani /** 996347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * Axis constant: The movement of x position of a motion event. 997347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * <p> 998347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * <ul> 999347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * <li>For a mouse, reports a difference of x position between the previous position. 1000347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * This is useful when pointer is captured, in that case the mouse pointer doesn't change 1001347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * the location but this axis reports the difference which allows the app to see 1002347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * how the mouse is moved. 1003347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * </ul> 1004347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * </p> 1005347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * 1006347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see #getAxisValue(int, int) 1007347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see #getHistoricalAxisValue(int, int, int) 1008347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see MotionEvent.PointerCoords#getAxisValue(int, int) 1009347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see InputDevice#getMotionRange 1010347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai */ 1011347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai public static final int AXIS_RELATIVE_X = 27; 1012347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai 1013347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai /** 1014347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * Axis constant: The movement of y position of a motion event. 1015347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * <p> 1016347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * This is similar to {@link #AXIS_RELATIVE_X} but for y-axis. 1017347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * </p> 1018347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * 1019347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see #getAxisValue(int, int) 1020347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see #getHistoricalAxisValue(int, int, int) 1021347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see MotionEvent.PointerCoords#getAxisValue(int, int) 1022347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai * @see InputDevice#getMotionRange 1023347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai */ 1024347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai public static final int AXIS_RELATIVE_Y = 28; 1025347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai 1026347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai /** 1027fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 1 axis of a motion event. 10286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_1 = 32; 10366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10376f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1038fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 2 axis of a motion event. 10396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_2 = 33; 10476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1049fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 3 axis of a motion event. 10506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_3 = 34; 10586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1060fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 4 axis of a motion event. 10616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_4 = 35; 10696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10706f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1071fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 5 axis of a motion event. 10726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_5 = 36; 10806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10816f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1082fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 6 axis of a motion event. 10836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 10896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 10906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_6 = 37; 10916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 10926f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1093fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 7 axis of a motion event. 10946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 10956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 10966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 10976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 10986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 10996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_7 = 38; 11026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1104fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 8 axis of a motion event. 11056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11086f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_8 = 39; 11136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1115fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 9 axis of a motion event. 11166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_9 = 40; 11246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1126fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 10 axis of a motion event. 11276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11326f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11336f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11346f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_10 = 41; 11356f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11366f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1137fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 11 axis of a motion event. 11386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_11 = 42; 11466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1148fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 12 axis of a motion event. 11496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_12 = 43; 11576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1159fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 13 axis of a motion event. 11606f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11616f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11626f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11636f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11646f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11656f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11666f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11676f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_13 = 44; 11686f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11696f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1170fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 14 axis of a motion event. 11716f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11726f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11736f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_14 = 45; 11796f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11806f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1181fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 15 axis of a motion event. 11826f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11836f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11846f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11856f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11876f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11886f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 11896f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_15 = 46; 11906f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 11916f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 1192fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Axis constant: Generic 16 axis of a motion event. 11936f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The interpretation of a generic axis is device-specific. 11946f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 11956f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getAxisValue(int, int) 11966f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see #getHistoricalAxisValue(int, int, int) 11976f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see MotionEvent.PointerCoords#getAxisValue(int) 11986f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @see InputDevice#getMotionRange 11996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 12006f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static final int AXIS_GENERIC_16 = 47; 12016f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 12026f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // NOTE: If you add a new axis here you must also add it to: 12036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // native/include/android/input.h 12046f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // frameworks/base/include/ui/KeycodeLabels.h 12056f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 12066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown // Symbolic names of all axes. 12076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown private static final SparseArray<String> AXIS_SYMBOLIC_NAMES = new SparseArray<String>(); 1208fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown static { 12096f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown SparseArray<String> names = AXIS_SYMBOLIC_NAMES; 12106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_X, "AXIS_X"); 12116f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_Y, "AXIS_Y"); 12126f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_PRESSURE, "AXIS_PRESSURE"); 12136f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_SIZE, "AXIS_SIZE"); 12146f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOUCH_MAJOR, "AXIS_TOUCH_MAJOR"); 12156f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOUCH_MINOR, "AXIS_TOUCH_MINOR"); 12166f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOOL_MAJOR, "AXIS_TOOL_MAJOR"); 12176f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_TOOL_MINOR, "AXIS_TOOL_MINOR"); 12186f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_ORIENTATION, "AXIS_ORIENTATION"); 12196f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_VSCROLL, "AXIS_VSCROLL"); 12206f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HSCROLL, "AXIS_HSCROLL"); 12216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_Z, "AXIS_Z"); 12226f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RX, "AXIS_RX"); 12236f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RY, "AXIS_RY"); 12246f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RZ, "AXIS_RZ"); 12256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HAT_X, "AXIS_HAT_X"); 12266f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_HAT_Y, "AXIS_HAT_Y"); 12276f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_LTRIGGER, "AXIS_LTRIGGER"); 12286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_RTRIGGER, "AXIS_RTRIGGER"); 12293a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_THROTTLE, "AXIS_THROTTLE"); 12303a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_RUDDER, "AXIS_RUDDER"); 12313a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_WHEEL, "AXIS_WHEEL"); 12323a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_GAS, "AXIS_GAS"); 12333a22fa057091cd6614f58ebc57a7ce4fe29462bbJeff Brown names.append(AXIS_BRAKE, "AXIS_BRAKE"); 1234fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(AXIS_DISTANCE, "AXIS_DISTANCE"); 123565fd251c3913fc921468a3dad190810db19eb9dfJeff Brown names.append(AXIS_TILT, "AXIS_TILT"); 123667322b1ff058d9abadd94c10b0ce167508ead6f5Prashant Malani names.append(AXIS_SCROLL, "AXIS_SCROLL"); 1237347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai names.append(AXIS_RELATIVE_X, "AXIS_REALTIVE_X"); 1238347e5d498f4c216d588e98776a386d8bdf93d05cJun Mukai names.append(AXIS_RELATIVE_Y, "AXIS_REALTIVE_Y"); 12396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_1, "AXIS_GENERIC_1"); 12406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_2, "AXIS_GENERIC_2"); 12416f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_3, "AXIS_GENERIC_3"); 12426f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_4, "AXIS_GENERIC_4"); 12436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_5, "AXIS_GENERIC_5"); 12446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_6, "AXIS_GENERIC_6"); 12456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_7, "AXIS_GENERIC_7"); 12466f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_8, "AXIS_GENERIC_8"); 12476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_9, "AXIS_GENERIC_9"); 12486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_10, "AXIS_GENERIC_10"); 12496f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_11, "AXIS_GENERIC_11"); 12506f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_12, "AXIS_GENERIC_12"); 12516f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_13, "AXIS_GENERIC_13"); 12526f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_14, "AXIS_GENERIC_14"); 12536f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_15, "AXIS_GENERIC_15"); 12546f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown names.append(AXIS_GENERIC_16, "AXIS_GENERIC_16"); 12556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 12566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 1257fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 125849754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Button constant: Primary button (left mouse button). 125949754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * 126049754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * This button constant is not set in response to simple touches with a finger 126149754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * or stylus tip. The user must actually push a button. 1262fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1263fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1264fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1265fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_PRIMARY = 1 << 0; 1266fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1267fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 12685bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Button constant: Secondary button (right mouse button). 1269fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1270fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1271fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1272fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_SECONDARY = 1 << 1; 1273fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1274fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 12755bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Button constant: Tertiary button (middle mouse button). 1276fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1277fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1278fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1279fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_TERTIARY = 1 << 2; 1280fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1281fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1282fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Button constant: Back button pressed (mouse back button). 1283fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 1284fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The system may send a {@link KeyEvent#KEYCODE_BACK} key press to the application 1285fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when this button is pressed. 1286fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1287fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1288fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1289fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1290fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_BACK = 1 << 3; 1291fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1292fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1293fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Button constant: Forward button pressed (mouse forward button). 1294fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * <p> 1295fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The system may send a {@link KeyEvent#KEYCODE_FORWARD} key press to the application 1296fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when this button is pressed. 1297fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * </p> 1298fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1299fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getButtonState 1300fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1301fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int BUTTON_FORWARD = 1 << 4; 1302fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 13035bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright /** 13045bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Button constant: Primary stylus button pressed. 13055bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * 13065bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #getButtonState 13075bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright */ 13085bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright public static final int BUTTON_STYLUS_PRIMARY = 1 << 5; 13095bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright 13105bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright /** 13115bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Button constant: Secondary stylus button pressed. 13125bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * 13135bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #getButtonState 13145bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright */ 13155bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright public static final int BUTTON_STYLUS_SECONDARY = 1 << 6; 13165bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright 1317fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // NOTE: If you add a new axis here you must also add it to: 1318fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // native/include/android/input.h 1319fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1320fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Symbolic names of all button states in bit order from least significant 1321fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // to most significant. 1322fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final String[] BUTTON_SYMBOLIC_NAMES = new String[] { 1323fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_PRIMARY", 1324fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_SECONDARY", 1325fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_TERTIARY", 1326fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_BACK", 1327fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "BUTTON_FORWARD", 13285bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright "BUTTON_STYLUS_PRIMARY", 13295bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright "BUTTON_STYLUS_SECONDARY", 1330fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000080", 1331fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000100", 1332fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000200", 1333fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000400", 1334fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00000800", 1335fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00001000", 1336fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00002000", 1337fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00004000", 1338fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00008000", 1339fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00010000", 1340fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00020000", 1341fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00040000", 1342fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00080000", 1343fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00100000", 1344fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00200000", 1345fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00400000", 1346fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x00800000", 1347fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x01000000", 1348fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x02000000", 1349fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x04000000", 1350fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x08000000", 1351fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x10000000", 1352fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x20000000", 1353fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x40000000", 1354fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown "0x80000000", 1355fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown }; 1356fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1357fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1358fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Tool type constant: Unknown tool type. 1359fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * This constant is used when the tool type is not known or is not relevant, 1360fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as for a trackball or other non-pointing device. 1361fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1362fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1363fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1364fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_UNKNOWN = 0; 1365fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1366fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 136749754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a finger. 1368fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1369fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1370fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1371fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_FINGER = 1; 1372fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1373fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 137449754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a stylus. 1375fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1376fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1377fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1378fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_STYLUS = 2; 1379fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1380fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 138149754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is a mouse or trackpad. 1382fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1383fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1384fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1385fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final int TOOL_TYPE_MOUSE = 3; 1386fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1387fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 138849754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown * Tool type constant: The tool is an eraser or a stylus being used in an inverted posture. 1389fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1390fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #getToolType 1391fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 139249754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown public static final int TOOL_TYPE_ERASER = 4; 1393fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1394fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // NOTE: If you add a new tool type here you must also add it to: 1395fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // native/include/android/input.h 1396fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1397fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Symbolic names of all tool types. 1398fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final SparseArray<String> TOOL_TYPE_SYMBOLIC_NAMES = new SparseArray<String>(); 13996f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown static { 1400fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown SparseArray<String> names = TOOL_TYPE_SYMBOLIC_NAMES; 1401fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_UNKNOWN, "TOOL_TYPE_UNKNOWN"); 1402fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_FINGER, "TOOL_TYPE_FINGER"); 1403fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_STYLUS, "TOOL_TYPE_STYLUS"); 1404fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown names.append(TOOL_TYPE_MOUSE, "TOOL_TYPE_MOUSE"); 140549754db5a304d995c1cc108ff6f19e4ba4265572Jeff Brown names.append(TOOL_TYPE_ERASER, "TOOL_TYPE_ERASER"); 14066f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 14076f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 140891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Private value for history pos that obtains the current sample. 140991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final int HISTORY_CURRENT = -0x80000000; 141091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 14111f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static final int MAX_RECYCLED = 10; 14121f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static final Object gRecyclerLock = new Object(); 14131f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static int gRecyclerUsed; 14141f2451007c660091b7b090c1ea332f9044515d2dJeff Brown private static MotionEvent gRecyclerTop; 1415cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 141691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Shared temporary objects used when translating coordinates supplied by 141791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // the caller into single element PointerCoords and pointer id arrays. 1418fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final Object gSharedTempLock = new Object(); 1419fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static PointerCoords[] gSharedTempPointerCoords; 1420fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static PointerProperties[] gSharedTempPointerProperties; 1421fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static int[] gSharedTempPointerIndexMap; 1422fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1423fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final void ensureSharedTempPointerCapacity(int desiredCapacity) { 1424fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (gSharedTempPointerCoords == null 1425fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown || gSharedTempPointerCoords.length < desiredCapacity) { 1426fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int capacity = gSharedTempPointerCoords != null ? gSharedTempPointerCoords.length : 8; 1427fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown while (capacity < desiredCapacity) { 1428fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown capacity *= 2; 1429fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1430fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerCoords = PointerCoords.createArray(capacity); 1431fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerProperties = PointerProperties.createArray(capacity); 1432fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown gSharedTempPointerIndexMap = new int[capacity]; 1433fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1434fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 143591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 143691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown // Pointer to the native MotionEvent object that contains the actual data. 143799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private long mNativePtr; 14388169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima 14399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private MotionEvent mNext; 14409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 144199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeInitialize(long nativePtr, 1442fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int deviceId, int source, int action, int flags, int edgeFlags, 1443fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int metaState, int buttonState, 144491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float xOffset, float yOffset, float xPrecision, float yPrecision, 144591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown long downTimeNanos, long eventTimeNanos, 1446fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerCount, PointerProperties[] pointerIds, PointerCoords[] pointerCoords); 144799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeCopy(long destNativePtr, long sourceNativePtr, 144891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown boolean keepHistory); 144999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeDispose(long nativePtr); 145099a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeAddBatch(long nativePtr, long eventTimeNanos, 145191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown PointerCoords[] pointerCoords, int metaState); 145291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 145399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetDeviceId(long nativePtr); 145499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetSource(long nativePtr); 145599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeSetSource(long nativePtr, int source); 145699a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetAction(long nativePtr); 145799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetAction(long nativePtr, int action); 145899a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native boolean nativeIsTouchEvent(long nativePtr); 145999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetFlags(long nativePtr); 146099a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetFlags(long nativePtr, int flags); 146199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetEdgeFlags(long nativePtr); 146299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetEdgeFlags(long nativePtr, int action); 146399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetMetaState(long nativePtr); 146499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetButtonState(long nativePtr); 14655bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright private static native void nativeSetButtonState(long nativePtr, int buttonState); 14665bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright private static native int nativeGetActionButton(long nativePtr); 14676b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright private static native void nativeSetActionButton(long nativePtr, int actionButton); 146899a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeOffsetLocation(long nativePtr, float deltaX, float deltaY); 146999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetXOffset(long nativePtr); 147099a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetYOffset(long nativePtr); 147199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetXPrecision(long nativePtr); 147299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetYPrecision(long nativePtr); 147399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeGetDownTimeNanos(long nativePtr); 147499a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeSetDownTimeNanos(long nativePtr, long downTime); 147599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat 147699a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetPointerCount(long nativePtr); 147799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetPointerId(long nativePtr, int pointerIndex); 147899a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetToolType(long nativePtr, int pointerIndex); 147999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeFindPointerIndex(long nativePtr, int pointerId); 148099a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat 148199a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native int nativeGetHistorySize(long nativePtr); 148299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeGetEventTimeNanos(long nativePtr, int historyPos); 148399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetRawAxisValue(long nativePtr, 148491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int axis, int pointerIndex, int historyPos); 148599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native float nativeGetAxisValue(long nativePtr, 148691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int axis, int pointerIndex, int historyPos); 148799a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeGetPointerCoords(long nativePtr, 148891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown int pointerIndex, int historyPos, PointerCoords outPointerCoords); 148999a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeGetPointerProperties(long nativePtr, 1490fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerIndex, PointerProperties outPointerProperties); 149191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 149299a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeScale(long nativePtr, float scale); 149399a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeTransform(long nativePtr, Matrix matrix); 149491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 149599a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native long nativeReadFromParcel(long nativePtr, Parcel parcel); 149699a1ef2b7f1eb7266e1c3782f649de0d8dbe23bfAshok Bhat private static native void nativeWriteToParcel(long nativePtr, Parcel parcel); 149791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 1498337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright private static native String nativeAxisToString(int axis); 1499337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright private static native int nativeAxisFromString(String label); 1500337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright 150191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private MotionEvent() { 150291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 150320e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown 150491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 150591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown protected void finalize() throws Throwable { 150691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown try { 150791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (mNativePtr != 0) { 150891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeDispose(mNativePtr); 150991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mNativePtr = 0; 151091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 151191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } finally { 151291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown super.finalize(); 151391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 15149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1515cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 151691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static private MotionEvent obtain() { 151746b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown final MotionEvent ev; 151846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown synchronized (gRecyclerLock) { 15191f2451007c660091b7b090c1ea332f9044515d2dJeff Brown ev = gRecyclerTop; 15201f2451007c660091b7b090c1ea332f9044515d2dJeff Brown if (ev == null) { 152191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return new MotionEvent(); 152246b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 152346b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown gRecyclerTop = ev.mNext; 15245c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown gRecyclerUsed -= 1; 152546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 152646b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown ev.mNext = null; 152732cbc3855c2a971aa5a801fd339fb6a37db91a1aJeff Brown ev.prepareForReuse(); 152846b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown return ev; 152946b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown } 153091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 153153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan /** 153253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * Create a new MotionEvent, filling in all of the basic values that 153353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * define the motion. 1534fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 153553071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param downTime The time (in ms) when the user originally pressed down to start 153653071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1537c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The the time (in ms) when this specific event was generated. This 153853071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * must be obtained from {@link SystemClock#uptimeMillis()}. 1539cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1540fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that will be in this event. 1541fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerProperties An array of <em>pointerCount</em> values providing 1542fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a {@link PointerProperties} property object for each pointer, which must 1543fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * include the pointer identifier. 1544fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCoords An array of <em>pointerCount</em> values providing 1545c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * a {@link PointerCoords} coordinate object for each pointer. 154653071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param metaState The state of any meta / modifier keys that were in effect when 154753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * the event was generated. 1548fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param buttonState The state of buttons that are pressed. 154953071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param xPrecision The precision of the X coordinate being reported. 155053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param yPrecision The precision of the Y coordinate being reported. 155153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @param deviceId The id for the device that this event came from. An id of 155253071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * zero indicates that the event didn't come from a physical device; other 155353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * numbers are arbitrary and you shouldn't depend on the values. 155485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 155553071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * MotionEvent. 1556c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param source The source of this event. 155785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param flags The motion event flags. 155853071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan */ 1559c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown static public MotionEvent obtain(long downTime, long eventTime, 1560fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int action, int pointerCount, PointerProperties[] pointerProperties, 1561fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerCoords[] pointerCoords, int metaState, int buttonState, 1562fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown float xPrecision, float yPrecision, int deviceId, 156385a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown int edgeFlags, int source, int flags) { 156491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 156591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 1566fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown deviceId, source, action, flags, edgeFlags, metaState, buttonState, 156791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 0, 0, xPrecision, yPrecision, 156891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown downTime * NS_PER_MS, eventTime * NS_PER_MS, 1569fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCount, pointerProperties, pointerCoords); 157053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan return ev; 157153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan } 157291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 15739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 15749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, filling in all of the basic values that 15759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * define the motion. 1576fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1577fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param downTime The time (in ms) when the user originally pressed down to start 1578fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1579fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param eventTime The the time (in ms) when this specific event was generated. This 1580fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * must be obtained from {@link SystemClock#uptimeMillis()}. 1581fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1582fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that will be in this event. 1583fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIds An array of <em>pointerCount</em> values providing 1584fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * an identifier for each pointer. 1585fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCoords An array of <em>pointerCount</em> values providing 1586fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a {@link PointerCoords} coordinate object for each pointer. 1587fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param metaState The state of any meta / modifier keys that were in effect when 1588fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the event was generated. 1589fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param xPrecision The precision of the X coordinate being reported. 1590fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param yPrecision The precision of the Y coordinate being reported. 1591fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param deviceId The id for the device that this event came from. An id of 1592fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * zero indicates that the event didn't come from a physical device; other 1593fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * numbers are arbitrary and you shouldn't depend on the values. 1594fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 1595fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * MotionEvent. 1596fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param source The source of this event. 1597fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param flags The motion event flags. 1598fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1599fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @deprecated Use {@link #obtain(long, long, int, int, PointerProperties[], PointerCoords[], int, int, float, float, int, int, int, int)} 1600fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * instead. 1601fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1602fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown @Deprecated 1603fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown static public MotionEvent obtain(long downTime, long eventTime, 1604fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int action, int pointerCount, int[] pointerIds, PointerCoords[] pointerCoords, 1605fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int metaState, float xPrecision, float yPrecision, int deviceId, 1606fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int edgeFlags, int source, int flags) { 1607fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 1608fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(pointerCount); 1609fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 1610fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 1611fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[i].clear(); 1612fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[i].id = pointerIds[i]; 1613fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1614fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return obtain(downTime, eventTime, action, pointerCount, pp, 1615fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCoords, metaState, 0, xPrecision, yPrecision, deviceId, 1616fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown edgeFlags, source, flags); 1617fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1618fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1619fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1620fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1621fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Create a new MotionEvent, filling in all of the basic values that 1622fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * define the motion. 1623cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 1624cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param downTime The time (in ms) when the user originally pressed down to start 16259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1626cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param eventTime The the time (in ms) when this specific event was generated. This 16279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * must be obtained from {@link SystemClock#uptimeMillis()}. 1628cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 16299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The X coordinate of this event. 16309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The Y coordinate of this event. 1631cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param pressure The current pressure of this event. The pressure generally 1632cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * ranges from 0 (no pressure at all) to 1 (normal pressure), however 1633cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * values higher than 1 may be generated depending on the calibration of 16349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the input device. 16359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param size A scaled value of the approximate size of the area being pressed when 1636cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * touched with the finger. The actual value in pixels corresponding to the finger 16379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * touch is normalized with a device specific range of values 16389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and scaled to a value between 0 and 1. 16399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param metaState The state of any meta / modifier keys that were in effect when 16409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. 16419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param xPrecision The precision of the X coordinate being reported. 16429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param yPrecision The precision of the Y coordinate being reported. 16439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deviceId The id for the device that this event came from. An id of 16449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * zero indicates that the event didn't come from a physical device; other 16459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * numbers are arbitrary and you shouldn't depend on the values. 164685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 16479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * MotionEvent. 16489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 16499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public MotionEvent obtain(long downTime, long eventTime, int action, 16509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float x, float y, float pressure, float size, int metaState, 16519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float xPrecision, float yPrecision, int deviceId, int edgeFlags) { 1652fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 1653fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 1654fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(1); 1655fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 1656fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[0].clear(); 1657fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pp[0].id = 0; 1658fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1659fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords pc[] = gSharedTempPointerCoords; 1660fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].clear(); 1661fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].x = x; 1662fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].y = y; 1663fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].pressure = pressure; 1664fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].size = size; 1665fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 166691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 1667fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown deviceId, InputDevice.SOURCE_UNKNOWN, action, 0, edgeFlags, metaState, 0, 166891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 0, 0, xPrecision, yPrecision, 166991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown downTime * NS_PER_MS, eventTime * NS_PER_MS, 1670fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1, pp, pc); 167191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return ev; 167291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 16739822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 16749822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 16759822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 16769822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Create a new MotionEvent, filling in all of the basic values that 16779822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * define the motion. 16789822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * 16799822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param downTime The time (in ms) when the user originally pressed down to start 16809822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 16819822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param eventTime The the time (in ms) when this specific event was generated. This 16829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * must be obtained from {@link SystemClock#uptimeMillis()}. 1683cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 1684fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerCount The number of pointers that are active in this event. 16859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param x The X coordinate of this event. 16869822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param y The Y coordinate of this event. 16879822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param pressure The current pressure of this event. The pressure generally 16889822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * ranges from 0 (no pressure at all) to 1 (normal pressure), however 16899822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * values higher than 1 may be generated depending on the calibration of 16909822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * the input device. 16919822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param size A scaled value of the approximate size of the area being pressed when 16929822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touched with the finger. The actual value in pixels corresponding to the finger 16939822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touch is normalized with a device specific range of values 16949822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * and scaled to a value between 0 and 1. 16959822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState The state of any meta / modifier keys that were in effect when 16969822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * the event was generated. 16979822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param xPrecision The precision of the X coordinate being reported. 16989822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param yPrecision The precision of the Y coordinate being reported. 16999822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param deviceId The id for the device that this event came from. An id of 17009822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * zero indicates that the event didn't come from a physical device; other 17019822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * numbers are arbitrary and you shouldn't depend on the values. 170285a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @param edgeFlags A bitfield indicating which edges, if any, were touched by this 17039822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * MotionEvent. 17045c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * 17055c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * @deprecated Use {@link #obtain(long, long, int, float, float, float, float, int, float, float, int, int)} 17065c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * instead. 17079822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 17085c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown @Deprecated 17099822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn static public MotionEvent obtain(long downTime, long eventTime, int action, 1710fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int pointerCount, float x, float y, float pressure, float size, int metaState, 17119822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn float xPrecision, float yPrecision, int deviceId, int edgeFlags) { 17125c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown return obtain(downTime, eventTime, action, x, y, pressure, size, 17135c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown metaState, xPrecision, yPrecision, deviceId, edgeFlags); 17149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1715cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 17169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, filling in a subset of the basic motion 17189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * values. Those not specified here are: device id (always 0), pressure 17199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and size (always 1), x and y precision (always 1), and edgeFlags (always 0). 1720cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 1721cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param downTime The time (in ms) when the user originally pressed down to start 17229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a stream of position events. This must be obtained from {@link SystemClock#uptimeMillis()}. 1723cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * @param eventTime The the time (in ms) when this specific event was generated. This 17249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * must be obtained from {@link SystemClock#uptimeMillis()}. 1725cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @param action The kind of action being performed, such as {@link #ACTION_DOWN}. 17269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The X coordinate of this event. 17279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The Y coordinate of this event. 17289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param metaState The state of any meta / modifier keys that were in effect when 17299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. 17309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 17319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project static public MotionEvent obtain(long downTime, long eventTime, int action, 17329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float x, float y, int metaState) { 17335c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown return obtain(downTime, eventTime, action, x, y, 1.0f, 1.0f, 17345c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown metaState, 1.0f, 1.0f, 0, 0); 17358169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima } 17368169daed2f7a8731d478b884b1f455c747b88478Mitsuru Oshima 17379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Create a new MotionEvent, copying from an existing one. 17399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 174091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static public MotionEvent obtain(MotionEvent other) { 174191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (other == null) { 174291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown throw new IllegalArgumentException("other motion event must not be null"); 174391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 174491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 174591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 174691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, true /*keepHistory*/); 17479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ev; 17489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1749cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 17509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 17518df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn * Create a new MotionEvent, copying from an existing one, but not including 17528df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn * any historical point information. 17538df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn */ 175491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown static public MotionEvent obtainNoHistory(MotionEvent other) { 175591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (other == null) { 175691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown throw new IllegalArgumentException("other motion event must not be null"); 175791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 175891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 175991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 176091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeCopy(ev.mNativePtr, other.mNativePtr, false /*keepHistory*/); 17618df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn return ev; 17628df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn } 17638df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn 176421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 176521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 176621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public MotionEvent copy() { 176721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown return obtain(this); 176821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 176921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 17708df8b2b405c60cacf7a66c4e2ca078dd3d7ec7bdDianne Hackborn /** 17719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Recycle the MotionEvent, to be re-used by a later caller. After calling 17729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * this function you must not ever touch the event again. 17739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 177492cc2d8dc35f2bdd1bb95ab24787066371064899Jeff Brown @Override 17755c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown public final void recycle() { 177632cbc3855c2a971aa5a801fd339fb6a37db91a1aJeff Brown super.recycle(); 17779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 17789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project synchronized (gRecyclerLock) { 17799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (gRecyclerUsed < MAX_RECYCLED) { 17809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gRecyclerUsed++; 17819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mNext = gRecyclerTop; 17829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project gRecyclerTop = this; 17839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 17869ea77fc821918ea562ff4907945b865e39e0201aJeff Brown 17875c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown /** 17889ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * Applies a scale factor to all points within this event. 17899ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * 17909ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * This method is used to adjust touch events to simulate different density 17919ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * displays for compatibility mode. The values returned by {@link #getRawX()}, 17929ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * {@link #getRawY()}, {@link #getXPrecision()} and {@link #getYPrecision()} 17939ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * are also affected by the scale factor. 17945c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * 17959ea77fc821918ea562ff4907945b865e39e0201aJeff Brown * @param scale The scale factor to apply. 17965c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown * @hide 17975c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown */ 17985c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown public final void scale(float scale) { 17999ea77fc821918ea562ff4907945b865e39e0201aJeff Brown if (scale != 1.0f) { 18009ea77fc821918ea562ff4907945b865e39e0201aJeff Brown nativeScale(mNativePtr, scale); 18019ea77fc821918ea562ff4907945b865e39e0201aJeff Brown } 180291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 180391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 180491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 180591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 180691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final int getDeviceId() { 180791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetDeviceId(mNativePtr); 180891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 180991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 181091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 181191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 181291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final int getSource() { 181391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetSource(mNativePtr); 181491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 181591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 181691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** {@inheritDoc} */ 181791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown @Override 181891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final void setSource(int source) { 181991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetSource(mNativePtr, source); 18205c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown } 1821cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 18229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1823cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Return the kind of action being performed. 1824cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Consider using {@link #getActionMasked} and {@link #getActionIndex} to retrieve 1825cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * the separate masked action and pointer index. 1826cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The action, such as {@link #ACTION_DOWN} or 1827cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * the combination of {@link #ACTION_POINTER_DOWN} with a shifted pointer index. 18289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 18299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getAction() { 183091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAction(mNativePtr); 18319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 18329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 18339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1834cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Return the masked action being performed, without pointer index information. 1835cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Use {@link #getActionIndex} to return the index associated with pointer actions. 1836cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The action, such as {@link #ACTION_DOWN} or {@link #ACTION_POINTER_DOWN}. 1837b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 1838b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public final int getActionMasked() { 183991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAction(mNativePtr) & ACTION_MASK; 1840b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn } 1841b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 1842b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 1843b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * For {@link #ACTION_POINTER_DOWN} or {@link #ACTION_POINTER_UP} 1844b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * as returned by {@link #getActionMasked}, this returns the associated 1845cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * pointer index. 1846cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * The index may be used with {@link #getPointerId(int)}, 1847b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * {@link #getX(int)}, {@link #getY(int)}, {@link #getPressure(int)}, 1848b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * and {@link #getSize(int)} to get information about the pointer that has 1849b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn * gone down or up. 1850cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * @return The index associated with the action. 1851b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn */ 1852b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn public final int getActionIndex() { 185391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return (nativeGetAction(mNativePtr) & ACTION_POINTER_INDEX_MASK) 185491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown >> ACTION_POINTER_INDEX_SHIFT; 1855b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn } 1856b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn 1857b125dc5599468a09d82751cd76152071ae485afbDianne Hackborn /** 185833bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * Returns true if this motion event is a touch event. 185933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * <p> 1860a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * Specifically excludes pointer events with action {@link #ACTION_HOVER_MOVE}, 1861a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * {@link #ACTION_HOVER_ENTER}, {@link #ACTION_HOVER_EXIT}, or {@link #ACTION_SCROLL} 1862a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown * because they are not actually touch events (the pointer is not down). 186333bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * </p> 186433bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * @return True if this motion event is a touch event. 186533bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown * @hide 186633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown */ 186733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown public final boolean isTouchEvent() { 186856194ebec6212e229f4ccdaa4b187166d20013efJeff Brown return nativeIsTouchEvent(mNativePtr); 186933bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown } 187033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown 187133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown /** 187285a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * Gets the motion event flags. 187385a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * 187485a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * @see #FLAG_WINDOW_IS_OBSCURED 187585a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown */ 187685a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown public final int getFlags() { 187791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetFlags(mNativePtr); 187885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown } 187985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown 188021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 188121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 188221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public final boolean isTainted() { 188321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown final int flags = getFlags(); 188421bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown return (flags & FLAG_TAINTED) != 0; 188521bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 188621bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 188721bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown /** @hide */ 188821bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown @Override 188921bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown public final void setTainted(boolean tainted) { 189021bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown final int flags = getFlags(); 189121bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown nativeSetFlags(mNativePtr, tainted ? flags | FLAG_TAINTED : flags & ~FLAG_TAINTED); 189221bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown } 189321bc5c917d4ee2a9b2b8173091e6bba85eaff899Jeff Brown 1894ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav /** @hide */ 1895ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav public final boolean isTargetAccessibilityFocus() { 1896ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav final int flags = getFlags(); 1897ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav return (flags & FLAG_TARGET_ACCESSIBILITY_FOCUS) != 0; 1898ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav } 1899ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 1900ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav /** @hide */ 1901ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav public final void setTargetAccessibilityFocus(boolean targetsFocus) { 1902ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav final int flags = getFlags(); 1903ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav nativeSetFlags(mNativePtr, targetsFocus 1904ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav ? flags | FLAG_TARGET_ACCESSIBILITY_FOCUS 1905ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav : flags & ~FLAG_TARGET_ACCESSIBILITY_FOCUS); 1906ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav } 1907ded133c446fa9d0d23e6bde19a66fb2ce3980491Svetoslav 190885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown /** 1909cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * Returns the time (in ms) when the user originally pressed down to start 1910cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * a stream of position events. 19119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getDownTime() { 191391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetDownTimeNanos(mNativePtr) / NS_PER_MS; 19149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 19159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1917fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Sets the time (in ms) when the user originally pressed down to start 1918fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * a stream of position events. 1919fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 1920fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 1921fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 1922fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final void setDownTime(long downTime) { 1923fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeSetDownTimeNanos(mNativePtr, downTime * NS_PER_MS); 1924fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 1925fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 1926fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 1927b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Retrieve the time this event occurred, 1928b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 1929b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 1930b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time this event occurred, 1931b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 19329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1933b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown @Override 19349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getEventTime() { 193591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT) / NS_PER_MS; 19369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 19379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1939b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Retrieve the time this event occurred, 1940b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 1941b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond precision. 1942b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 194353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * The value is in nanosecond precision but it may not have nanosecond accuracy. 1944b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 1945b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 1946b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time this event occurred, 1947b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 1948b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond precision. 194953071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * 195053071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan * @hide 195153071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan */ 1952b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown @Override 195353071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan public final long getEventTimeNano() { 195491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT); 195553071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan } 195653071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan 195753071d6d159f6dfd6fe0328a39bcf967ef308a64Michael Chan /** 19580dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getX(int)} for the first pointer index (may be an 19590dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 196091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 196191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 19629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getX() { 196491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); 19659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 19669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 19679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 19680dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getY(int)} for the first pointer index (may be an 19690dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 197091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 197191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 19729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 19739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getY() { 197491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); 19759822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 19769822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 19779822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 19780dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getPressure(int)} for the first pointer index (may be an 19790dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 198091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 198191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 19829822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 19839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getPressure() { 198491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, HISTORY_CURRENT); 19859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 19869822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 19879822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 19880dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * {@link #getSize(int)} for the first pointer index (may be an 19890dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 199091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 199191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 19929822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 19939822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getSize() { 199491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, HISTORY_CURRENT); 19959822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 1996c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 1997c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 1998c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getTouchMajor(int)} for the first pointer index (may be an 1999c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 200091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 200191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2002c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2003c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMajor() { 200491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, HISTORY_CURRENT); 2005c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2006c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2007c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2008c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getTouchMinor(int)} for the first pointer index (may be an 2009c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 201091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 201191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2012c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2013c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMinor() { 201491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, HISTORY_CURRENT); 2015c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2016c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2017c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2018c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getToolMajor(int)} for the first pointer index (may be an 2019c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 202091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 202191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2022c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2023c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMajor() { 202491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, HISTORY_CURRENT); 2025c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2026c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2027c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2028c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getToolMinor(int)} for the first pointer index (may be an 2029c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 203091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 203191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2032c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2033c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMinor() { 203491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, HISTORY_CURRENT); 2035c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 203691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 2037c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2038c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getOrientation(int)} for the first pointer index (may be an 2039c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 204091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 204191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 2042c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2043c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getOrientation() { 204491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, HISTORY_CURRENT); 204591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 204691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 204791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 204891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getAxisValue(int)} for the first pointer index (may be an 204991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * arbitrary pointer identifier). 205091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 205191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 205291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 205391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 205491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 205591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 205691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getAxisValue(int axis) { 205791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, 0, HISTORY_CURRENT); 2058c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 20599822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 20609822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 20610dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * The number of pointers of data contained in this event. Always 20620dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * >= 1. 20630dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 20640dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final int getPointerCount() { 206591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetPointerCount(mNativePtr); 20660dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 20670dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn 20680dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 20690dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Return the pointer identifier associated with a particular pointer 2070682c24e22811d4ee17ae1cd61bf255c3f7e722b7Trevor Johns * data index in this event. The identifier tells you the actual pointer 20710dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * number associated with the data, accounting for individual pointers 20720dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * going up and down since the start of the current gesture. 20730dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 20740dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 20750dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 2076d41ba666d12a24ee4624ea9a009151e6165e3775Dianne Hackborn public final int getPointerId(int pointerIndex) { 207791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetPointerId(mNativePtr, pointerIndex); 20780dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 2079fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2080fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 2081fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets the tool type of a pointer for the given pointer index. 2082fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The tool type indicates the type of tool used to make contact such 2083fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * as a finger or stylus, if known. 2084fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2085fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2086fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2087fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The tool type of the pointer. 2088fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2089fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_UNKNOWN 2090fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_FINGER 2091fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_STYLUS 2092fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #TOOL_TYPE_MOUSE 2093fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2094fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getToolType(int pointerIndex) { 2095fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return nativeGetToolType(mNativePtr, pointerIndex); 2096fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2097fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 20980dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 20990dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Given a pointer identifier, find the index of its data in the event. 21000dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 21010dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerId The identifier of the pointer to be found. 21020dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @return Returns either the index of the pointer (for use with 2103b0d6ba1ec4f71b96cab7d1ff62b846d5cf162c4fGilles Debunne * {@link #getX(int)} et al.), or -1 if there is no data available for 21040dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * that pointer identifier. 21050dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn */ 21060dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final int findPointerIndex(int pointerId) { 210791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeFindPointerIndex(mNativePtr, pointerId); 21080dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn } 2109fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 21100dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn /** 21110dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the X coordinate of this event for the given pointer 21120dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 21130dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 21149822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Whole numbers are pixels; the 21159822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * value may have a fraction for input devices that are sub-pixel precise. 21160dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 21170dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 211891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 211991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 21209822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 21210dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getX(int pointerIndex) { 212291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, HISTORY_CURRENT); 21239822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 21249822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 21259822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 21260dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the Y coordinate of this event for the given pointer 21270dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 21280dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 21299822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * Whole numbers are pixels; the 21309822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * value may have a fraction for input devices that are sub-pixel precise. 21310dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 21320dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 213391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 213491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 21359822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 21360dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getY(int pointerIndex) { 213791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, pointerIndex, HISTORY_CURRENT); 21389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 21410dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns the current pressure of this event for the given pointer 21420dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 21430dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 21449822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * The pressure generally 2145cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * ranges from 0 (no pressure at all) to 1 (normal pressure), however 2146cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * values higher than 1 may be generated depending on the calibration of 21479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the input device. 21480dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 21490dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 215091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 215191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 21529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 21530dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getPressure(int pointerIndex) { 215491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, HISTORY_CURRENT); 21559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 21569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 21579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 21580dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a scaled value of the approximate size for the given pointer 21590dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 21600dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * identifier for this index). 21610dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * This represents some approximation of the area of the screen being 21620dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * pressed; the actual value in pixels corresponding to the 21639822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * touch is normalized with the device specific range of values 2164cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * and scaled to a value between 0 and 1. The value of size can be used to 21659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * determine fat touch events. 21660dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 21670dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 216891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 216991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 21709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 21710dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getSize(int pointerIndex) { 217291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, HISTORY_CURRENT); 21739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2174c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2175c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2176c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the major axis of an ellipse that describes the touch 2177c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * area at the point of contact for the given pointer 2178c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2179c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2180c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2181c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 218291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 218391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2184c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2185c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMajor(int pointerIndex) { 218691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, HISTORY_CURRENT); 2187c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2188c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2189c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2190c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the minor axis of an ellipse that describes the touch 2191c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * area at the point of contact for the given pointer 2192c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2193c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2194c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2195c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 219691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 219791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2198c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2199c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getTouchMinor(int pointerIndex) { 220091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, HISTORY_CURRENT); 2201c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2202c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2203c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2204c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the major axis of an ellipse that describes the size of 2205c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool for the given pointer 2206c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2207c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2208c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 2209c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 2210c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2211c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 221291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 221391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2214c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2215c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMajor(int pointerIndex) { 221691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, HISTORY_CURRENT); 2217c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2218c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2219c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2220c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the length of the minor axis of an ellipse that describes the size of 2221c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool for the given pointer 2222c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2223c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 2224c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 2225c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 2226c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2227c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 222891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 222991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2230c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2231c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getToolMinor(int pointerIndex) { 223291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, HISTORY_CURRENT); 2233c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2234c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2235c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2236c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns the orientation of the touch area and tool area in radians clockwise from vertical 2237c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * for the given pointer <em>index</em> (use {@link #getPointerId(int)} to find the pointer 2238c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * identifier for this index). 22396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 2240c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 2241c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 2242c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the left. 22436d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 2244c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (finger pointing fully right). 2245c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2246c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 224791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 224891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 2249c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2250c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getOrientation(int pointerIndex) { 225191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, HISTORY_CURRENT); 2252c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 225391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 225491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 225591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns the value of the requested axis for the given pointer <em>index</em> 225691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (use {@link #getPointerId(int)} to find the pointer identifier for this index). 225791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 225891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 225991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 226091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 226191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value of the axis, or 0 if the axis is not available. 226291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 226391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 226491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 226591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 226691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getAxisValue(int axis, int pointerIndex) { 226791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, pointerIndex, HISTORY_CURRENT); 226891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 226991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 2270c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2271c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Populates a {@link PointerCoords} object with pointer coordinate data for 2272c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the specified pointer index. 2273c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2274c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2275c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2276c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param outPointerCoords The pointer coordinate object to populate. 227791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 227891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see PointerCoords 2279c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2280c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void getPointerCoords(int pointerIndex, PointerCoords outPointerCoords) { 228191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeGetPointerCoords(mNativePtr, pointerIndex, HISTORY_CURRENT, outPointerCoords); 2282c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 22839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 22849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2285fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Populates a {@link PointerProperties} object with pointer properties for 2286fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * the specified pointer index. 2287fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2288fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2289fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2290fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param outPointerProperties The pointer properties object to populate. 2291fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2292fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see PointerProperties 2293fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2294fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final void getPointerProperties(int pointerIndex, 2295fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerProperties outPointerProperties) { 2296fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, pointerIndex, outPointerProperties); 2297fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2298fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2299fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 23009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the state of any meta / modifier keys that were in effect when 23019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the event was generated. This is the same values as those 23029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * returned by {@link KeyEvent#getMetaState() KeyEvent.getMetaState}. 23039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return an integer in which each bit set to 1 represents a pressed 23059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * meta key 23069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 23079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see KeyEvent#getMetaState() 23089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getMetaState() { 231091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetMetaState(mNativePtr); 23119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2314fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets the state of all buttons that are pressed such as a mouse or stylus button. 2315fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2316fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The button state. 2317fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 2318fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_PRIMARY 2319fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_SECONDARY 2320fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_TERTIARY 2321fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_FORWARD 2322fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see #BUTTON_BACK 23235bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #BUTTON_STYLUS_PRIMARY 23245bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #BUTTON_STYLUS_SECONDARY 2325fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 2326fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getButtonState() { 2327fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return nativeGetButtonState(mNativePtr); 2328fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 2329fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2330fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 23315bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Sets the bitfield indicating which buttons are pressed. 23325bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * 23335bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #getButtonState() 23345bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @hide 23355bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright */ 23365bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright public final void setButtonState(int buttonState) { 23375bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright nativeSetButtonState(mNativePtr, buttonState); 23385bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright } 23395bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright 23405bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright /** 23415bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * Gets which button has been modified during a press or release action. 23425bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * 23435bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * For actions other than {@link #ACTION_BUTTON_PRESS} and {@link #ACTION_BUTTON_RELEASE} 23445bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * the returned value is undefined. 23455bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * 23465bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #getButtonState() 23475bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright */ 23485bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright public final int getActionButton() { 23495bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright return nativeGetActionButton(mNativePtr); 23505bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright } 23515bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright 23525bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright /** 23536b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright * Sets the action button for the event. 23546b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright * 23556b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright * @see #getActionButton() 23566b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright * @hide 23576b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright */ 23586b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright public final void setActionButton(int button) { 23596b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright nativeSetActionButton(mNativePtr, button); 23606b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright } 23616b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright 23626b819b4147af4ec14ec08c50f83bb42f44481917Michael Wright /** 23639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the original raw X coordinate of this event. For touch 23649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events on the screen, this is the original location of the event 23659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the screen, before it had been adjusted for the containing window 23669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and views. 236791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2368072137c80a9ce30a1c79cc416932a24bd2e4dccbMichael Wright * @see #getX(int) 236991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 23709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getRawX() { 237291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetRawAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); 23739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 237491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 23759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the original raw Y coordinate of this event. For touch 23779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * events on the screen, this is the original location of the event 23789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * on the screen, before it had been adjusted for the containing window 23799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and views. 238091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2381072137c80a9ce30a1c79cc416932a24bd2e4dccbMichael Wright * @see #getY(int) 238291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 23839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getRawY() { 238591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetRawAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); 23869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 23879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 23889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 23899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the precision of the X coordinates being reported. You can 239091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * multiply this number with {@link #getX} to find the actual hardware 23919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value of the X coordinate. 23929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the precision of X coordinates being reported. 239391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 239491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 23959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 23969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getXPrecision() { 239791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetXPrecision(mNativePtr); 23989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2399cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 24009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return the precision of the Y coordinates being reported. You can 240291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * multiply this number with {@link #getY} to find the actual hardware 24039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * value of the Y coordinate. 24049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the precision of Y coordinates being reported. 240591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 240691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 24079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final float getYPrecision() { 240991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetYPrecision(mNativePtr); 24109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2411cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 24129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the number of historical points in this event. These are 24149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * movements that have occurred between this event and the previous event. 24159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This only applies to ACTION_MOVE events -- all other actions will have 24169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * a size of 0. 2417cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns the number of historical points in the event. 24199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getHistorySize() { 242191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetHistorySize(mNativePtr); 24229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2423cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 24249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 24259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns the time that a historical movement occurred between this event 2426b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base. 2427b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 2428b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * This only applies to ACTION_MOVE events. 2429b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 2430cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 24329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2433b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time that a historical movement occurred between this 2434b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * event and the previous event, 2435b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base. 2436cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 24379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 24389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getEventTime 24399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 24409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final long getHistoricalEventTime(int pos) { 244191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEventTimeNanos(mNativePtr, pos) / NS_PER_MS; 24429822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 24439822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 24449822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 2445b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * Returns the time that a historical movement occurred between this event 2446b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * and the previous event, in the {@link android.os.SystemClock#uptimeMillis} time base 2447b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * but with nanosecond (instead of millisecond) precision. 2448b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * <p> 2449b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * This only applies to ACTION_MOVE events. 2450b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p><p> 2451b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * The value is in nanosecond precision but it may not have nanosecond accuracy. 2452b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * </p> 2453b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2454b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @param pos Which historical value to return; must be less than 2455b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * {@link #getHistorySize} 2456b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @return Returns the time that a historical movement occurred between this 2457b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * event and the previous event, 2458b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * in the {@link android.os.SystemClock#uptimeMillis} time base but with 2459b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * nanosecond (instead of millisecond) precision. 2460b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2461b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @see #getHistorySize 2462b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @see #getEventTime 2463b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * 2464b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown * @hide 2465b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown */ 2466b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown public final long getHistoricalEventTimeNano(int pos) { 2467b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown return nativeGetEventTimeNanos(mNativePtr, pos); 2468b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown } 2469b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown 2470b11499d2db0ba9782363ec6bf714b583e8585212Jeff Brown /** 247191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalX(int, int)} for the first pointer index (may be an 24720dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 247391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 247491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 247591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 247691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 247791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 247891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX() 247991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 24809822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 24819822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalX(int pos) { 248291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, 0, pos); 24839822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 24849822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 24859822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 248691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalY(int, int)} for the first pointer index (may be an 24870dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 248891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 248991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 249091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 249191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 249291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 249391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY() 249491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 24959822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 24969822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalY(int pos) { 249791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, 0, pos); 24989822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 24999822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 25009822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 250191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalPressure(int, int)} for the first pointer index (may be an 25020dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 250391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 250491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 250591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 250691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 250791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 250891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure() 250991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 25109822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 25119822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalPressure(int pos) { 251291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, 0, pos); 25139822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 25149822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn 25159822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 251691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalSize(int, int)} for the first pointer index (may be an 25170dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * arbitrary pointer identifier). 251891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 251991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 252091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 252191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 252291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 252391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize() 252491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 25259822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 25269822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn public final float getHistoricalSize(int pos) { 252791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, 0, pos); 25289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2529cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 25309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 253191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalTouchMajor(int, int)} for the first pointer index (may be an 2532c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 253391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 253491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 253591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 253691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 253791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 253891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor() 253991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2540c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2541c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMajor(int pos) { 254291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, 0, pos); 2543c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2544c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2545c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 254691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalTouchMinor(int, int)} for the first pointer index (may be an 2547c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 254891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 254991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 255091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 255191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 255291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 255391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor() 255491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2555c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2556c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMinor(int pos) { 255791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, 0, pos); 2558c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2559c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2560c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 256191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalToolMajor(int, int)} for the first pointer index (may be an 2562c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 256391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 256491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 256591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 256691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 256791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 256891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor() 256991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2570c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2571c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMajor(int pos) { 257291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, 0, pos); 2573c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2574c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2575c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 257691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalToolMinor(int, int)} for the first pointer index (may be an 2577c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 257891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 257991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 258091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 258191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 258291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 258391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor() 258491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2585c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2586c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMinor(int pos) { 258791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, 0, pos); 2588c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2589c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2590c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 259191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalOrientation(int, int)} for the first pointer index (may be an 2592c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * arbitrary pointer identifier). 259391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 259491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 259591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 259691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 259791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 259891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation() 259991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 2600c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2601c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalOrientation(int pos) { 260291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, 0, pos); 2603c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 260491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 260591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 260691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistoricalAxisValue(int, int, int)} for the first pointer index (may be an 260791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * arbitrary pointer identifier). 260891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 260991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 261091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 261191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 261291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 261391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getHistorySize 261491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getAxisValue(int) 261591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 261691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 261791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 261891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getHistoricalAxisValue(int axis, int pos) { 261991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, 0, pos); 262091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 262191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 2622c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 26230dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical X coordinate, as per {@link #getX(int)}, that 26240dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 26250dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2626cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26270dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 26280dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 26299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 26309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2631cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 263391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getX(int) 263491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 26359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26360dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalX(int pointerIndex, int pos) { 263791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_X, pointerIndex, pos); 26389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2639cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26410dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical Y coordinate, as per {@link #getY(int)}, that 26420dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 26430dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2644cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26450dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 26460dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 26479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 26489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 2649cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 265191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getY(int) 265291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 26539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26540dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalY(int pointerIndex, int pos) { 265591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_Y, pointerIndex, pos); 26569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2657cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26590dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical pressure coordinate, as per {@link #getPressure(int)}, 26600dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * that occurred between this event and the previous event for the given 26610dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * pointer. Only applies to ACTION_MOVE events. 2662cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26630dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 26640dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 26659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 26669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 26670dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 26689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 266991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getPressure(int) 267091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_PRESSURE 26719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26720dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalPressure(int pointerIndex, int pos) { 267391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_PRESSURE, pointerIndex, pos); 26749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2675cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 26769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 26770dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Returns a historical size coordinate, as per {@link #getSize(int)}, that 26780dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * occurred between this event and the previous event for the given pointer. 26790dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * Only applies to ACTION_MOVE events. 2680cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 26810dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 26820dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * (the first pointer that is down) to {@link #getPointerCount()}-1. 26839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pos Which historical value to return; must be less than 26849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #getHistorySize} 26850dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn * 26869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getHistorySize 268791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getSize(int) 268891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_SIZE 26899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 26900dd7cb4b4ef86eb7d4e837b1948501da66adeebeDianne Hackborn public final float getHistoricalSize(int pointerIndex, int pos) { 269191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_SIZE, pointerIndex, pos); 26929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2693c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2694c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2695c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical touch major axis coordinate, as per {@link #getTouchMajor(int)}, that 2696c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2697c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2698c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2699c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2700c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2701c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2702c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2703c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2704c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 270591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMajor(int) 270691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MAJOR 2707c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2708c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMajor(int pointerIndex, int pos) { 270991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MAJOR, pointerIndex, pos); 2710c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2711cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 27129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2713c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical touch minor axis coordinate, as per {@link #getTouchMinor(int)}, that 2714c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2715c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2716c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2717c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2718c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2719c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2720c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2721c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2722c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 272391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getTouchMinor(int) 272491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOUCH_MINOR 2725c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2726c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalTouchMinor(int pointerIndex, int pos) { 272791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOUCH_MINOR, pointerIndex, pos); 2728c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2729c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2730c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2731c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical tool major axis coordinate, as per {@link #getToolMajor(int)}, that 2732c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2733c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2734c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2735c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2736c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2737c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2738c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2739c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2740c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 274191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMajor(int) 274291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MAJOR 2743c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2744c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMajor(int pointerIndex, int pos) { 274591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MAJOR, pointerIndex, pos); 2746c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2747c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2748c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2749c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical tool minor axis coordinate, as per {@link #getToolMinor(int)}, that 2750c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2751c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2752c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2753c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2754c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2755c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2756c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2757c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2758c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 275991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getToolMinor(int) 276091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_TOOL_MINOR 2761c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2762c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalToolMinor(int pointerIndex, int pos) { 276391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_TOOL_MINOR, pointerIndex, pos); 2764c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2765c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2766c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 2767c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Returns a historical orientation coordinate, as per {@link #getOrientation(int)}, that 2768c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * occurred between this event and the previous event for the given pointer. 2769c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2770c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2771c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2772c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2773c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2774c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2775c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2776c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 277791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #getOrientation(int) 277891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_ORIENTATION 27799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2780c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final float getHistoricalOrientation(int pointerIndex, int pos) { 278191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, AXIS_ORIENTATION, pointerIndex, pos); 278291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 278391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 278491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 278591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns the historical value of the requested axis, as per {@link #getAxisValue(int, int)}, 278691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * occurred between this event and the previous event for the given pointer. 278791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Only applies to ACTION_MOVE events. 278891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 278991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 279091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 279191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 279291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param pos Which historical value to return; must be less than 279391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * {@link #getHistorySize} 279491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value of the axis, or 0 if the axis is not available. 279591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 279691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_X 279791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see #AXIS_Y 279891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 279991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public final float getHistoricalAxisValue(int axis, int pointerIndex, int pos) { 280091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetAxisValue(mNativePtr, axis, pointerIndex, pos); 28019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2802cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 28039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2804c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Populates a {@link PointerCoords} object with historical pointer coordinate data, 2805c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * as per {@link #getPointerCoords}, that occurred between this event and the previous 2806c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * event for the given pointer. 2807c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Only applies to ACTION_MOVE events. 2808c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2809c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerIndex Raw index of pointer to retrieve. Value may be from 0 2810c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (the first pointer that is down) to {@link #getPointerCount()}-1. 2811c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pos Which historical value to return; must be less than 2812c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * {@link #getHistorySize} 2813c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param outPointerCoords The pointer coordinate object to populate. 2814c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 2815c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getHistorySize 2816c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @see #getPointerCoords 281791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see PointerCoords 2818c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 2819c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void getHistoricalPointerCoords(int pointerIndex, int pos, 2820c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown PointerCoords outPointerCoords) { 282191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeGetPointerCoords(mNativePtr, pointerIndex, pos, outPointerCoords); 2822c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 2823c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 2824c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 282546b9ac0ae2162309774a7478cd9d4e578747bfc2Jeff Brown * Returns a bitfield indicating which edges, if any, were touched by this 2826cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * MotionEvent. For touch events, clients can use this to determine if the 2827cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * user's finger was touching the edge of the display. 2828cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 2829d41cff2d3a95963a7aa348e502c6d42bae367235Jeff Brown * This property is only set for {@link #ACTION_DOWN} events. 2830d41cff2d3a95963a7aa348e502c6d42bae367235Jeff Brown * 28319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_LEFT 28329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_TOP 28339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_RIGHT 28349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #EDGE_BOTTOM 28359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 28369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final int getEdgeFlags() { 283791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return nativeGetEdgeFlags(mNativePtr); 28389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2839cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 28409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 284185a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown * Sets the bitfield indicating which edges, if any, were touched by this 2842cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * MotionEvent. 2843cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 28449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @see #getEdgeFlags() 28459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 28469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setEdgeFlags(int flags) { 284791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetEdgeFlags(mNativePtr, flags); 28489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 28519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Sets this event's action. 28529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 28539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setAction(int action) { 285491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeSetAction(mNativePtr, action); 28559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 28569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 28579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 28589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Adjust this event's location. 28599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaX Amount to add to the current X coordinate of the event. 28609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param deltaY Amount to add to the current Y coordinate of the event. 28619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 28629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void offsetLocation(float deltaX, float deltaY) { 28639ea77fc821918ea562ff4907945b865e39e0201aJeff Brown if (deltaX != 0.0f || deltaY != 0.0f) { 28649ea77fc821918ea562ff4907945b865e39e0201aJeff Brown nativeOffsetLocation(mNativePtr, deltaX, deltaY); 28659ea77fc821918ea562ff4907945b865e39e0201aJeff Brown } 28669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2867cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 28689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 28699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set this event's location. Applies {@link #offsetLocation} with a 28709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * delta from the current location to the given new location. 2871cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 28729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x New absolute X location. 28739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y New absolute Y location. 28749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 28759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void setLocation(float x, float y) { 287691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float oldX = getX(); 287791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float oldY = getY(); 28789ea77fc821918ea562ff4907945b865e39e0201aJeff Brown offsetLocation(x - oldX, y - oldY); 28795c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown } 28805c225b1680e696ae8bbf505a1997d6f720672f74Jeff Brown 288120e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown /** 288220e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * Applies a transformation matrix to all of the points in the event. 288320e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * 288420e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown * @param matrix The transformation matrix to apply. 288520e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown */ 288620e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown public final void transform(Matrix matrix) { 288720e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown if (matrix == null) { 288820e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown throw new IllegalArgumentException("matrix must not be null"); 288920e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown } 289020e987bfc35d0ae6cb6344ead65ed44ee7cf8750Jeff Brown 289191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeTransform(mNativePtr, matrix); 28929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2893cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 28949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 28959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Add a new movement to the batch of movements in this event. The event's 2896c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * current location, position and size is updated to the new values. 2897c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The current values in the event are added to a list of historical values. 289891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2899cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 2900cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy * 2901c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The time stamp (in ms) for this data. 29029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param x The new X position. 29039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param y The new Y position. 29049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param pressure The new pressure. 29059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param size The new size. 29069822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState Meta key state. 29079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 29089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public final void addBatch(long eventTime, float x, float y, 29099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project float pressure, float size, int metaState) { 2910fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 2911fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(1); 2912fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 2913fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].clear(); 2914fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].x = x; 2915fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].y = y; 2916fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].pressure = pressure; 2917fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[0].size = size; 2918fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 2919fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pc, metaState); 292091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 29219822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn } 2922cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 29239822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn /** 2924c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Add a new movement to the batch of movements in this event. The event's 2925c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * current location, position and size is updated to the new values. 2926c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The current values in the event are added to a list of historical values. 292791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 2928cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 29299822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * 2930c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param eventTime The time stamp (in ms) for this data. 2931c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * @param pointerCoords The new pointer coordinates. 29329822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn * @param metaState Meta key state. 29339822d2b27330793ea4ba9c3316ef35f402f35fb4Dianne Hackborn */ 2934c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public final void addBatch(long eventTime, PointerCoords[] pointerCoords, int metaState) { 293591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeAddBatch(mNativePtr, eventTime * NS_PER_MS, pointerCoords, metaState); 29369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2937cafdea61a85c8f5d0646cc9413a09346c637f43fRomain Guy 2938fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 29399d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * Adds all of the movement samples of the specified event to this one if 29409d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * it is compatible. To be compatible, the event must have the same device id, 29419d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * source, action, flags, pointer count, pointer properties. 29429d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * 29439d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * Only applies to {@link #ACTION_MOVE} or {@link #ACTION_HOVER_MOVE} events. 29449d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * 29459d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @param event The event whose movements samples should be added to this one 29469d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * if possible. 29479d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @return True if batching was performed or false if batching was not possible. 29489d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown * @hide 29499d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown */ 29509d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public final boolean addBatch(MotionEvent event) { 29519d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int action = nativeGetAction(mNativePtr); 29529d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (action != ACTION_MOVE && action != ACTION_HOVER_MOVE) { 29539d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 29549d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29559d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (action != nativeGetAction(event.mNativePtr)) { 29569d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 29579d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29589d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29599d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (nativeGetDeviceId(mNativePtr) != nativeGetDeviceId(event.mNativePtr) 29609d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown || nativeGetSource(mNativePtr) != nativeGetSource(event.mNativePtr) 29619d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown || nativeGetFlags(mNativePtr) != nativeGetFlags(event.mNativePtr)) { 29629d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 29639d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29649d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29659d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 29669d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (pointerCount != nativeGetPointerCount(event.mNativePtr)) { 29679d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 29689d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29699d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29709d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown synchronized (gSharedTempLock) { 29719d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown ensureSharedTempPointerCapacity(Math.max(pointerCount, 2)); 29729d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 29739d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 29749d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29759d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int i = 0; i < pointerCount; i++) { 29769d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerProperties(mNativePtr, i, pp[0]); 29779d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerProperties(event.mNativePtr, i, pp[1]); 29789d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (!pp[0].equals(pp[1])) { 29799d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 29809d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29819d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29829d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29839d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int metaState = nativeGetMetaState(event.mNativePtr); 29849d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int historySize = nativeGetHistorySize(event.mNativePtr); 29859d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int h = 0; h <= historySize; h++) { 29869d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final int historyPos = (h == historySize ? HISTORY_CURRENT : h); 29879d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29889d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown for (int i = 0; i < pointerCount; i++) { 29899d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeGetPointerCoords(event.mNativePtr, i, historyPos, pc[i]); 29909d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29919d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29929d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown final long eventTimeNanos = nativeGetEventTimeNanos(event.mNativePtr, historyPos); 29939d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown nativeAddBatch(mNativePtr, eventTimeNanos, pc, metaState); 29949d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29959d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29969d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return true; 29979d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 29989d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 29999d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown /** 3000fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns true if all points in the motion event are completely within the specified bounds. 3001fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3002fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3003fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final boolean isWithinBoundsNoHistory(float left, float top, 3004fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown float right, float bottom) { 3005fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 3006fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 3007fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final float x = nativeGetAxisValue(mNativePtr, AXIS_X, i, HISTORY_CURRENT); 3008fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final float y = nativeGetAxisValue(mNativePtr, AXIS_Y, i, HISTORY_CURRENT); 3009fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (x < left || x > right || y < top || y > bottom) { 3010fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return false; 3011fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3012fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3013fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return true; 3014fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3015fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3016fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown private static final float clamp(float value, float low, float high) { 3017fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (value < low) { 3018fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return low; 3019fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else if (value > high) { 3020fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return high; 3021fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3022fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return value; 3023fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3024fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3025fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3026fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a new motion events whose points have been clamped to the specified bounds. 3027fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3028fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3029fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final MotionEvent clampNoHistory(float left, float top, float right, float bottom) { 3030fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 3031fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 3032fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 3033fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3034fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(pointerCount); 3035fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 3036fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 3037fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3038fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 3039fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, i, pp[i]); 3040fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerCoords(mNativePtr, i, HISTORY_CURRENT, pc[i]); 3041fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[i].x = clamp(pc[i].x, left, right); 3042fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pc[i].y = clamp(pc[i].y, top, bottom); 3043fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3044fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 3045fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), 3046fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetAction(mNativePtr), nativeGetFlags(mNativePtr), 3047fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), 3048fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetButtonState(mNativePtr), 3049fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), 3050fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), 3051fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDownTimeNanos(mNativePtr), 3052fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT), 3053fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown pointerCount, pp, pc); 3054fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return ev; 3055fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3056fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3057fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3058fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3059fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Gets an integer where each pointer id present in the event is marked as a bit. 3060fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3061fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3062fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final int getPointerIdBits() { 3063fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int idBits = 0; 3064fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = nativeGetPointerCount(mNativePtr); 3065fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 3066fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown idBits |= 1 << nativeGetPointerId(mNativePtr, i); 3067fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3068fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return idBits; 3069fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3070fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3071fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3072fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Splits a motion event such that it includes only a subset of pointer ids. 3073fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3074fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3075fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public final MotionEvent split(int idBits) { 3076fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown MotionEvent ev = obtain(); 3077fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown synchronized (gSharedTempLock) { 3078fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldPointerCount = nativeGetPointerCount(mNativePtr); 3079fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ensureSharedTempPointerCapacity(oldPointerCount); 3080fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerProperties[] pp = gSharedTempPointerProperties; 3081fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final PointerCoords[] pc = gSharedTempPointerCoords; 3082fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int[] map = gSharedTempPointerIndexMap; 3083fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3084fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldAction = nativeGetAction(mNativePtr); 3085fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldActionMasked = oldAction & ACTION_MASK; 3086fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int oldActionPointerIndex = (oldAction & ACTION_POINTER_INDEX_MASK) 3087fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown >> ACTION_POINTER_INDEX_SHIFT; 3088fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newActionPointerIndex = -1; 3089fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newPointerCount = 0; 3090fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int newIdBits = 0; 3091fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < oldPointerCount; i++) { 3092fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerProperties(mNativePtr, i, pp[newPointerCount]); 3093fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int idBit = 1 << pp[newPointerCount].id; 3094fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if ((idBit & idBits) != 0) { 3095fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (i == oldActionPointerIndex) { 3096fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newActionPointerIndex = newPointerCount; 3097fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3098fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown map[newPointerCount] = i; 3099fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newPointerCount += 1; 3100fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newIdBits |= idBit; 3101fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3102fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3103fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3104fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (newPointerCount == 0) { 3105fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown throw new IllegalArgumentException("idBits did not match any ids in the event"); 3106fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3107fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3108fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int newAction; 3109fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (oldActionMasked == ACTION_POINTER_DOWN || oldActionMasked == ACTION_POINTER_UP) { 3110fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (newActionPointerIndex < 0) { 3111fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // An unrelated pointer changed. 3112fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = ACTION_MOVE; 3113fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else if (newPointerCount == 1) { 3114fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // The first/last pointer went down/up. 3115fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldActionMasked == ACTION_POINTER_DOWN 3116fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ? ACTION_DOWN : ACTION_UP; 3117fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 3118fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // A secondary pointer went down/up. 3119fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldActionMasked 3120fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown | (newActionPointerIndex << ACTION_POINTER_INDEX_SHIFT); 3121fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3122fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 3123fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown // Simple up/down/cancel/move or other motion action. 3124fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction = oldAction; 3125fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3126fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3127fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int historySize = nativeGetHistorySize(mNativePtr); 3128fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int h = 0; h <= historySize; h++) { 3129fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int historyPos = h == historySize ? HISTORY_CURRENT : h; 3130fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3131fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < newPointerCount; i++) { 3132fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetPointerCoords(mNativePtr, map[i], historyPos, pc[i]); 3133fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3134fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3135fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final long eventTimeNanos = nativeGetEventTimeNanos(mNativePtr, historyPos); 3136fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (h == 0) { 3137fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown ev.mNativePtr = nativeInitialize(ev.mNativePtr, 3138fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDeviceId(mNativePtr), nativeGetSource(mNativePtr), 3139fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newAction, nativeGetFlags(mNativePtr), 3140fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetEdgeFlags(mNativePtr), nativeGetMetaState(mNativePtr), 3141fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetButtonState(mNativePtr), 3142fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXOffset(mNativePtr), nativeGetYOffset(mNativePtr), 3143fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetXPrecision(mNativePtr), nativeGetYPrecision(mNativePtr), 3144fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeGetDownTimeNanos(mNativePtr), eventTimeNanos, 3145fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown newPointerCount, pp, pc); 3146fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 3147fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown nativeAddBatch(ev.mNativePtr, eventTimeNanos, pc, 0); 3148fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3149fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3150fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return ev; 3151fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3152fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3153fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 31549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project @Override 31559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String toString() { 3156fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown StringBuilder msg = new StringBuilder(); 3157fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append("MotionEvent { action=").append(actionToString(getAction())); 31585bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright msg.append(", actionButton=").append(buttonStateToString(getActionButton())); 3159fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3160fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final int pointerCount = getPointerCount(); 3161fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < pointerCount; i++) { 3162fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", id[").append(i).append("]=").append(getPointerId(i)); 3163fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", x[").append(i).append("]=").append(getX(i)); 3164fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", y[").append(i).append("]=").append(getY(i)); 3165fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", toolType[").append(i).append("]=").append( 3166fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolTypeToString(getToolType(i))); 3167fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3168fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 31698134681b25dfff814ffeaad8ff70e84316c1869fJeff Brown msg.append(", buttonState=").append(MotionEvent.buttonStateToString(getButtonState())); 3170fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", metaState=").append(KeyEvent.metaStateToString(getMetaState())); 3171fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", flags=0x").append(Integer.toHexString(getFlags())); 3172fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", edgeFlags=0x").append(Integer.toHexString(getEdgeFlags())); 3173fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", pointerCount=").append(pointerCount); 3174fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", historySize=").append(getHistorySize()); 3175fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", eventTime=").append(getEventTime()); 3176fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", downTime=").append(getDownTime()); 3177fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", deviceId=").append(getDeviceId()); 3178fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(", source=0x").append(Integer.toHexString(getSource())); 3179fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown msg.append(" }"); 3180fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return msg.toString(); 3181497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 3182497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown 3183497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown /** 31844dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * Returns a string that represents the symbolic name of the specified unmasked action 318591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * such as "ACTION_DOWN", "ACTION_POINTER_DOWN(3)" or an equivalent numeric constant 318691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * such as "35" if unknown. 3187497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * 31884dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @param action The unmasked action. 3189497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown * @return The symbolic name of the specified action. 31904dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @see #getAction() 3191497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown */ 3192497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown public static String actionToString(int action) { 3193497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown switch (action) { 3194497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_DOWN: 3195497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_DOWN"; 3196497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_UP: 3197497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_UP"; 3198497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_CANCEL: 3199497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_CANCEL"; 320033bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown case ACTION_OUTSIDE: 320133bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown return "ACTION_OUTSIDE"; 3202497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_MOVE: 3203497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_MOVE"; 3204cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown case ACTION_HOVER_MOVE: 3205cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown return "ACTION_HOVER_MOVE"; 320633bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown case ACTION_SCROLL: 320733bbfd2232ea9eaae9a9d87a05a95a430f09bd83Jeff Brown return "ACTION_SCROLL"; 3208a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown case ACTION_HOVER_ENTER: 3209a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown return "ACTION_HOVER_ENTER"; 3210a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown case ACTION_HOVER_EXIT: 3211a032cc008618b83ecbbede537517d1e7998e3264Jeff Brown return "ACTION_HOVER_EXIT"; 32125bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright case ACTION_BUTTON_PRESS: 32135bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright return "ACTION_BUTTON_PRESS"; 32145bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright case ACTION_BUTTON_RELEASE: 32155bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright return "ACTION_BUTTON_RELEASE"; 3216497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 3217497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown int index = (action & ACTION_POINTER_INDEX_MASK) >> ACTION_POINTER_INDEX_SHIFT; 3218497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown switch (action & ACTION_MASK) { 3219497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_POINTER_DOWN: 3220497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_POINTER_DOWN(" + index + ")"; 3221497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown case ACTION_POINTER_UP: 3222497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return "ACTION_POINTER_UP(" + index + ")"; 3223497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown default: 3224497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown return Integer.toString(action); 3225497a92cc5ba2176b8a8484b0a7da040eac0e887bJeff Brown } 32269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 32279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 322891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 322991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Returns a string that represents the symbolic name of the specified axis 32306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * such as "AXIS_X" or an equivalent numeric constant such as "42" if unknown. 323191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 32324dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @param axis The axis. 323391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The symbolic name of the specified axis. 323491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 323591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public static String axisToString(int axis) { 3236337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright String symbolicName = nativeAxisToString(axis); 3237337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright return symbolicName != null ? LABEL_PREFIX + symbolicName : Integer.toString(axis); 32386f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 32396f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown 32406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown /** 3241cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * Gets an axis by its symbolic name such as "AXIS_X" or an 3242cc0c159e9b3dd4e0f48da0ce3e33d2c68a651413Jeff Brown * equivalent numeric constant such as "42". 32436f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * 32446f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @param symbolicName The symbolic name of the axis. 32456f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * @return The axis or -1 if not found. 32464dad6cab641f95524d86d0fe9f9d46e323aeb41bJohn Spurlock * @see KeyEvent#keyCodeToString(int) 32476f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown */ 32486f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown public static int axisFromString(String symbolicName) { 3249337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright if (symbolicName.startsWith(LABEL_PREFIX)) { 3250337d9d2edc262141f9b8f684e53aae5e47f0ae13Michael Wright symbolicName = symbolicName.substring(LABEL_PREFIX.length()); 3251973efa0813260c24390d46b07e524de605630180Michael Wright int axis = nativeAxisFromString(symbolicName); 3252973efa0813260c24390d46b07e524de605630180Michael Wright if (axis >= 0) { 3253973efa0813260c24390d46b07e524de605630180Michael Wright return axis; 3254973efa0813260c24390d46b07e524de605630180Michael Wright } 32556f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 32566f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown try { 32576f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return Integer.parseInt(symbolicName, 10); 32586f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } catch (NumberFormatException ex) { 32596f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown return -1; 326091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 326191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 326291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3263fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3264fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a string that represents the symbolic name of the specified combined 3265fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * button state flags such as "0", "BUTTON_PRIMARY", 3266fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * "BUTTON_PRIMARY|BUTTON_SECONDARY" or an equivalent numeric constant such as "0x10000000" 3267fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * if unknown. 3268fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3269fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param buttonState The button state. 3270fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The symbolic name of the specified combined button state flags. 3271fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3272fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3273fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static String buttonStateToString(int buttonState) { 3274fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (buttonState == 0) { 3275fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return "0"; 3276fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3277fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown StringBuilder result = null; 3278fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown int i = 0; 3279fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown while (buttonState != 0) { 3280fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final boolean isSet = (buttonState & 1) != 0; 3281fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown buttonState >>>= 1; // unsigned shift! 3282fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (isSet) { 3283fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown final String name = BUTTON_SYMBOLIC_NAMES[i]; 3284fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (result == null) { 3285fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown if (buttonState == 0) { 3286fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return name; 3287fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3288fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result = new StringBuilder(name); 3289fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } else { 3290fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result.append('|'); 3291fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown result.append(name); 3292fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3293fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3294fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown i += 1; 3295fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3296fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return result.toString(); 3297fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3298fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3299fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3300fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Returns a string that represents the symbolic name of the specified tool type 3301fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * such as "TOOL_TYPE_FINGER" or an equivalent numeric constant such as "42" if unknown. 3302fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3303fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param toolType The tool type. 3304fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @return The symbolic name of the specified tool type. 3305fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @hide 3306fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3307fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static String toolTypeToString(int toolType) { 3308fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown String symbolicName = TOOL_TYPE_SYMBOLIC_NAMES.get(toolType); 3309fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return symbolicName != null ? symbolicName : Integer.toString(toolType); 3310fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3311fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3312cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan /** 3313cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * Checks if a mouse or stylus button (or combination of buttons) is pressed. 3314cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @param button Button (or combination of buttons). 3315cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @return True if specified buttons are pressed. 3316cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * 3317cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_PRIMARY 3318cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_SECONDARY 3319cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_TERTIARY 3320cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_FORWARD 3321cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan * @see #BUTTON_BACK 33225bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #BUTTON_STYLUS_PRIMARY 33235bd69e6e6164c59a0423edd0d5243fc8c07e6af3Michael Wright * @see #BUTTON_STYLUS_SECONDARY 3324cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan */ 3325cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan public final boolean isButtonPressed(int button) { 3326cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan if (button == 0) { 3327cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan return false; 3328cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan } 3329cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan return (getButtonState() & button) == button; 3330cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan } 3331cc32bd83e4d420c1adaeb3ea40f8986471e54590Sujith Ramakrishnan 33329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Parcelable.Creator<MotionEvent> CREATOR 33339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Parcelable.Creator<MotionEvent>() { 33349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MotionEvent createFromParcel(Parcel in) { 33356ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown in.readInt(); // skip token, we already know this is a MotionEvent 33366ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown return MotionEvent.createFromParcelBody(in); 33379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 33389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 33399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MotionEvent[] newArray(int size) { 33409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new MotionEvent[size]; 33419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 33429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 33439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 33446ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown /** @hide */ 33456ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown public static MotionEvent createFromParcelBody(Parcel in) { 334691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown MotionEvent ev = obtain(); 334791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown ev.mNativePtr = nativeReadFromParcel(ev.mNativePtr, in); 33486ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown return ev; 33496ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown } 335091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3351c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale /** @hide */ 3352c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale @Override 3353c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale public final void cancel() { 3354c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale setAction(ACTION_CANCEL); 3355c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale } 3356c3672cd3f7e2bd87d6de9dada499de82b62fae84Wale Ogunwale 33579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel out, int flags) { 33586ec402b5ae33c8927694d8522b4cc6a5c8ba974eJeff Brown out.writeInt(PARCEL_TOKEN_MOTION_EVENT); 335991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown nativeWriteToParcel(mNativePtr, out); 33609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 336191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3362c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3363c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Transfer object for pointer coordinates. 3364c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 3365fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Objects of this type can be used to specify the pointer coordinates when 3366fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * creating new {@link MotionEvent} objects and to query pointer coordinates 3367fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * in bulk. 3368c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * 3369c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * Refer to {@link InputDevice} for information about how different kinds of 3370c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * input devices and sources represent pointer coordinates. 3371c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3372c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public static final class PointerCoords { 337391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private static final int INITIAL_PACKED_AXIS_VALUES = 8; 33746f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown private long mPackedAxisBits; 337591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown private float[] mPackedAxisValues; 337691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 337791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 337891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Creates a pointer coords object with all axes initialized to zero. 337991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 338091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public PointerCoords() { 338191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 338291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 338391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 338491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Creates a pointer coords object as a copy of the 338591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * contents of another pointer coords object. 338691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 338791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param other The pointer coords object to copy. 338891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 338991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public PointerCoords(PointerCoords other) { 339091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown copyFrom(other); 339191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 339291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 3393fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** @hide */ 3394fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static PointerCoords[] createArray(int size) { 3395fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerCoords[] array = new PointerCoords[size]; 3396fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < size; i++) { 3397fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown array[i] = new PointerCoords(); 3398fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3399fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return array; 3400fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3401fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3402c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 34036f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The X component of the pointer movement. 340491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 340591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 3406c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3407c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float x; 3408c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3409c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 34106f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * The Y component of the pointer movement. 341191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 341291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 3413c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3414c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float y; 3415c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3416c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 341791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * A normalized value that describes the pressure applied to the device 341891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * by a finger or other tool. 3419c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The pressure generally ranges from 0 (no pressure at all) to 1 (normal pressure), 342091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * although values higher than 1 may be generated depending on the calibration of 3421c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the input device. 342291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 342391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_PRESSURE 3424c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3425c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float pressure; 3426c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3427c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 342891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * A normalized value that describes the approximate size of the pointer touch area 342991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * in relation to the maximum detectable size of the device. 343091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * It represents some approximation of the area of the screen being 3431c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * pressed; the actual value in pixels corresponding to the 3432c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touch is normalized with the device specific range of values 3433c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * and scaled to a value between 0 and 1. The value of size can be used to 3434c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * determine fat touch events. 343591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 343691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_SIZE 3437c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3438c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float size; 3439c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3440c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3441c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the major axis of an ellipse that describes the touch area at 3442c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the point of contact. 344391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 344491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 344591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 344691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOUCH_MAJOR 3447c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3448c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float touchMajor; 3449c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3450c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3451c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the minor axis of an ellipse that describes the touch area at 3452c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the point of contact. 345391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 345491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 345591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 345691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOUCH_MINOR 3457c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3458c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float touchMinor; 3459c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3460c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3461c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the major axis of an ellipse that describes the size of 3462c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool. 3463c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 3464c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 346591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 346691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 346791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 346891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOOL_MAJOR 3469c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3470c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float toolMajor; 3471c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3472c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3473c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The length of the minor axis of an ellipse that describes the size of 3474c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * the approaching tool. 3475c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The tool area represents the estimated size of the finger or pen that is 3476c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * touching the device independent of its actual touch area at the point of contact. 347791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * If the device is a touch screen, the length is reported in pixels, otherwise it is 347891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * reported in device-specific units. 347991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 348091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_TOOL_MINOR 3481c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3482c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float toolMinor; 3483c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown 3484c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown /** 3485c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * The orientation of the touch area and tool area in radians clockwise from vertical. 34866f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown * An angle of 0 radians indicates that the major axis of contact is oriented 3487c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * upwards, is perfectly circular or is of unknown orientation. A positive angle 3488c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the right. A negative angle 3489c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * indicates that the major axis of contact is oriented to the left. 34906d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown * The full range is from -PI/2 radians (finger pointing fully left) to PI/2 radians 3491c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown * (finger pointing fully right). 349291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 349391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_ORIENTATION 3494c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown */ 3495c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown public float orientation; 349691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 349791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 349891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Clears the contents of this object. 349991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Resets all axes to zero. 350091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 350191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void clear() { 350291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = 0; 350391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 350491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = 0; 350591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = 0; 350691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = 0; 350791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = 0; 350891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = 0; 350991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = 0; 351091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = 0; 351191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = 0; 351291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = 0; 3513c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 351491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 351591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 351691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Copies the contents of another pointer coords object. 351791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 351891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param other The pointer coords object to copy. 351991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 352091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void copyFrom(PointerCoords other) { 35216f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = other.mPackedAxisBits; 352291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = bits; 352391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (bits != 0) { 352491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown final float[] otherValues = other.mPackedAxisValues; 35256f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int count = Long.bitCount(bits); 352691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] values = mPackedAxisValues; 352791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (values == null || count > values.length) { 352891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = new float[otherValues.length]; 352991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 353091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 353191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(otherValues, 0, values, 0, count); 353291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 353391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 353491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = other.x; 353591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = other.y; 353691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = other.pressure; 353791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = other.size; 353891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = other.touchMajor; 353991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = other.touchMinor; 354091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = other.toolMajor; 354191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = other.toolMinor; 354291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = other.orientation; 3543c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 354491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 354591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 354691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Gets the value associated with the specified axis. 354791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 354891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to retrieve. 354991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @return The value associated with the axis, or 0 if none. 355091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 355191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 355291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 355391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 355491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public float getAxisValue(int axis) { 355591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown switch (axis) { 355691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_X: 355791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return x; 355891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_Y: 355991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return y; 356091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_PRESSURE: 356191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return pressure; 356291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_SIZE: 356391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return size; 356491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MAJOR: 356591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return touchMajor; 356691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MINOR: 356791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return touchMinor; 356891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MAJOR: 356991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return toolMajor; 357091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MINOR: 357191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return toolMinor; 357291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_ORIENTATION: 357391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return orientation; 357491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown default: { 35756f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown if (axis < 0 || axis > 63) { 35766f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown throw new IllegalArgumentException("Axis out of range."); 35776f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 35786f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = mPackedAxisBits; 35799adca065148f704187866c53cceda8e0050b1f35Michael Wright final long axisBit = 0x8000000000000000L >>> axis; 358091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if ((bits & axisBit) == 0) { 358191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return 0; 358291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 35839adca065148f704187866c53cceda8e0050b1f35Michael Wright final int index = Long.bitCount(bits & ~(0xFFFFFFFFFFFFFFFFL >>> axis)); 358491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown return mPackedAxisValues[index]; 358591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 358691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 3587c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 358891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown 358991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown /** 359091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * Sets the value associated with the specified axis. 359191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 359291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param axis The axis identifier for the axis value to assign. 359391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @param value The value to set. 359491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * 359591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_X 359691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown * @see MotionEvent#AXIS_Y 359791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown */ 359891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown public void setAxisValue(int axis, float value) { 359991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown switch (axis) { 360091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_X: 360191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown x = value; 360291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 360391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_Y: 360491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown y = value; 360591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 360691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_PRESSURE: 360791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown pressure = value; 360891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 360991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_SIZE: 361091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown size = value; 361191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 361291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MAJOR: 361391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMajor = value; 361491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 361591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOUCH_MINOR: 361691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown touchMinor = value; 361791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 361891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MAJOR: 361991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMajor = value; 362091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 362191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_TOOL_MINOR: 362291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown toolMinor = value; 362391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 362491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown case AXIS_ORIENTATION: 362591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown orientation = value; 362691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown break; 362791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown default: { 36286f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown if (axis < 0 || axis > 63) { 36296f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown throw new IllegalArgumentException("Axis out of range."); 36306f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown } 36316f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final long bits = mPackedAxisBits; 36329adca065148f704187866c53cceda8e0050b1f35Michael Wright final long axisBit = 0x8000000000000000L >>> axis; 36339adca065148f704187866c53cceda8e0050b1f35Michael Wright final int index = Long.bitCount(bits & ~(0xFFFFFFFFFFFFFFFFL >>> axis)); 363491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] values = mPackedAxisValues; 363591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if ((bits & axisBit) == 0) { 363691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (values == null) { 363791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = new float[INITIAL_PACKED_AXIS_VALUES]; 363891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 363991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } else { 36406f2fba428ca5e77a26d991ad728e346cc47609eeJeff Brown final int count = Long.bitCount(bits); 364191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (count < values.length) { 364291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown if (index != count) { 364391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, index, values, index + 1, 364491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown count - index); 364591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 364691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } else { 364791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown float[] newValues = new float[count * 2]; 364891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, 0, newValues, 0, index); 364991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown System.arraycopy(values, index, newValues, index + 1, 365091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown count - index); 365191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values = newValues; 365291c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisValues = values; 365391c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 365491c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 365591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown mPackedAxisBits = bits | axisBit; 365691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 365791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown values[index] = value; 365891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 365991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown } 3660c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 3661c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown } 3662fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3663fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3664fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Transfer object for pointer properties. 3665fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3666fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Objects of this type can be used to specify the pointer id and tool type 3667fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * when creating new {@link MotionEvent} objects and to query pointer properties in bulk. 3668fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3669fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static final class PointerProperties { 3670fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3671fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Creates a pointer properties object with an invalid pointer id. 3672fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3673fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public PointerProperties() { 3674fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown clear(); 3675fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3676fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3677fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3678fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Creates a pointer properties object as a copy of the contents of 3679fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * another pointer properties object. 3680fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param other 3681fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3682fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public PointerProperties(PointerProperties other) { 3683fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown copyFrom(other); 3684fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3685fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3686fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** @hide */ 3687fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public static PointerProperties[] createArray(int size) { 3688fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown PointerProperties[] array = new PointerProperties[size]; 3689fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown for (int i = 0; i < size; i++) { 3690fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown array[i] = new PointerProperties(); 3691fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3692fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown return array; 3693fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3694fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3695fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3696fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer id. 3697fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Initially set to {@link #INVALID_POINTER_ID} (-1). 3698fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3699fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent#getPointerId(int) 3700fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3701fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public int id; 3702fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3703fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3704fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * The pointer tool type. 3705fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Initially set to 0. 3706fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3707fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @see MotionEvent#getToolType(int) 3708fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3709fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public int toolType; 3710fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3711fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3712fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Resets the pointer properties to their initial values. 3713fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3714fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public void clear() { 3715fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown id = INVALID_POINTER_ID; 3716fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolType = TOOL_TYPE_UNKNOWN; 3717fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 3718fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown 3719fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown /** 3720fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * Copies the contents of another pointer properties object. 3721fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * 3722fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown * @param other The pointer properties object to copy. 3723fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown */ 3724fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown public void copyFrom(PointerProperties other) { 3725fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown id = other.id; 3726fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown toolType = other.toolType; 3727fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 37289d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 37299d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown @Override 37309d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public boolean equals(Object other) { 37319d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown if (other instanceof PointerProperties) { 37329d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return equals((PointerProperties)other); 37339d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 37349d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return false; 37359d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 37369d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 37379d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown private boolean equals(PointerProperties other) { 37389d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return other != null && id == other.id && toolType == other.toolType; 37399d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 37409d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown 37419d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown @Override 37429d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown public int hashCode() { 37439d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown return id | (toolType << 8); 37449d3bdbd6b8f9eda5f67212b06185cd59adcda6c8Jeff Brown } 3745fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown } 37469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 3747