Java 类android.view.MotionEvent.PointerProperties 实例源码

项目:atmosphere-uiautomator-bridge    文件:MotionEventSender.java   
/**
 * Applies all changes that were set via {@link #setMovement(int, float, float) the setMovement(...)} method.
 */
public void applyMovements() {
    int pointerCount = pointerIds.size();

    PointerCoords[] coords = new PointerCoords[pointerCount];
    PointerProperties[] properties = new PointerProperties[pointerCount];

    int i = 0;
    for (Integer pointerId : pointerIds) {
        coords[i] = pointerPositionsMap.get(pointerId);
        properties[i] = pointerPropertiesMap.get(pointerId);
        i++;
    }

    injectMultipointMotionEvent(coords, properties);
}
项目:atmosphere-uiautomator-bridge    文件:MotionEventSender.java   
private void injectMultipointMotionEvent(PointerCoords[] coords, PointerProperties[] properties) {
    int pointerCount = coords.length;
    long now = SystemClock.uptimeMillis();

    MotionEvent event = MotionEvent.obtain(now, now, // when the event happened
                                           MotionEvent.ACTION_MOVE, // event type
                                           pointerCount, // number of pointers
                                           properties, // pointer properties
                                           coords, // pointer coordinate descriptors
                                           DEFAULT_META_STATE,
                                           0,
                                           DEFAULT_PRECISION_X,
                                           DEFAULT_PRECISION_Y,
                                           DEVICE_ID,
                                           DEFAULT_EDGE_FLAGS,
                                           DEFAULT_INPUT_SOURCE,
                                           0 // no flags
    );

    injectMethodFacade(event);
}
项目:365browser    文件:MotionEventSynthesizer.java   
@CalledByNative
void setPointer(int index, int x, int y, int id) {
    assert (0 <= index && index < MAX_NUM_POINTERS);

    // Convert coordinates from density independent pixels to density dependent pixels.
    float scaleFactor = getDisplay().getDipScale();

    PointerCoords coords = new PointerCoords();
    coords.x = scaleFactor * x;
    coords.y = scaleFactor * y;
    coords.pressure = 1.0f;
    mPointerCoords[index] = coords;

    PointerProperties properties = new PointerProperties();
    properties.id = id;
    mPointerProperties[index] = properties;
}
项目:android-chromium-view    文件:GenericTouchGesture.java   
TouchPointer(int startX, int startY, int deltaX, int deltaY,
        int id, float scale) {
    mStartX = startX * scale;
    mStartY = startY * scale;

    mDeltaX = deltaX * scale;
    mDeltaY = deltaY * scale;

    if (deltaX != 0 || deltaY != 0) {
        mStepX = mDeltaX / Math.abs(mDeltaX + mDeltaY);
        mStepY = mDeltaY / Math.abs(mDeltaX + mDeltaY);
    } else {
        mStepX = 0;
        mStepY = 0;
    }

    mProperties = new PointerProperties();
    mProperties.id = id;
    mProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;

    mCoords = new PointerCoords();
    mCoords.x = mStartX;
    mCoords.y = mStartY;
    mCoords.pressure = 1.0f;
}
项目:android-chromium-view    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX0, int startY0, int deltaX0, int deltaY0,
        int startX1, int startY1, int deltaX1, int deltaY1) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();

    mPointers = new TouchPointer[2];
    mPointers[0] = new TouchPointer(startX0, startY0, deltaX0, deltaY0, 0, scale);
    mPointers[1] = new TouchPointer(startX1, startY1, deltaX1, deltaY1, 1, scale);

    mPointerProperties = new PointerProperties[2];
    mPointerProperties[0] = mPointers[0].getProperties();
    mPointerProperties[1] = mPointers[1].getProperties();

    mPointerCoords = new PointerCoords[2];
    mPointerCoords[0] = mPointers[0].getCoords();
    mPointerCoords[1] = mPointers[1].getCoords();
}
项目:android-chromium    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX, int startY, int deltaX, int deltaY) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();
    int scaledTouchSlop = getScaledTouchSlop();

    mPointers = new TouchPointer[1];
    mPointers[0] = new TouchPointer(startX, startY, deltaX, deltaY, 0,
        scale, scaledTouchSlop);

    mPointerProperties = new PointerProperties[1];
    mPointerProperties[0] = mPointers[0].getProperties();

    mPointerCoords = new PointerCoords[1];
    mPointerCoords[0] = mPointers[0].getCoords();
}
项目:android-chromium    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX0, int startY0, int deltaX0, int deltaY0,
        int startX1, int startY1, int deltaX1, int deltaY1) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();
    int scaledTouchSlop = getScaledTouchSlop();

    mPointers = new TouchPointer[2];
    mPointers[0] = new TouchPointer(startX0, startY0, deltaX0, deltaY0, 0,
        scale, scaledTouchSlop);
    mPointers[1] = new TouchPointer(startX1, startY1, deltaX1, deltaY1, 1,
        scale, scaledTouchSlop);

    mPointerProperties = new PointerProperties[2];
    mPointerProperties[0] = mPointers[0].getProperties();
    mPointerProperties[1] = mPointers[1].getProperties();

    mPointerCoords = new PointerCoords[2];
    mPointerCoords[0] = mPointers[0].getCoords();
    mPointerCoords[1] = mPointers[1].getCoords();
}
项目:chromium_webview    文件:TouchEventSynthesizer.java   
@CalledByNative
void setPointer(int index, int x, int y, int id) {
    assert (0 <= index && index < MAX_NUM_POINTERS);

    // Convert coordinates from density independent pixels to density dependent pixels.
    float scaleFactor = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();

    PointerCoords coords = new PointerCoords();
    coords.x = scaleFactor * x;
    coords.y = scaleFactor * y;
    coords.pressure = 1.0f;
    mPointerCoords[index] = coords;

    PointerProperties properties = new PointerProperties();
    properties.id = id;
    mPointerProperties[index] = properties;
}
项目:chromium_webview    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX, int startY, int deltaX, int deltaY) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();
    int scaledTouchSlop = getScaledTouchSlop();

    mPointers = new TouchPointer[1];
    mPointers[0] = new TouchPointer(startX, startY, deltaX, deltaY, 0,
        scale, scaledTouchSlop);

    mPointerProperties = new PointerProperties[1];
    mPointerProperties[0] = mPointers[0].getProperties();

    mPointerCoords = new PointerCoords[1];
    mPointerCoords[0] = mPointers[0].getCoords();
}
项目:chromium_webview    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX0, int startY0, int deltaX0, int deltaY0,
        int startX1, int startY1, int deltaX1, int deltaY1) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();
    int scaledTouchSlop = getScaledTouchSlop();

    mPointers = new TouchPointer[2];
    mPointers[0] = new TouchPointer(startX0, startY0, deltaX0, deltaY0, 0,
        scale, scaledTouchSlop);
    mPointers[1] = new TouchPointer(startX1, startY1, deltaX1, deltaY1, 1,
        scale, scaledTouchSlop);

    mPointerProperties = new PointerProperties[2];
    mPointerProperties[0] = mPointers[0].getProperties();
    mPointerProperties[1] = mPointers[1].getProperties();

    mPointerCoords = new PointerCoords[2];
    mPointerCoords[0] = mPointers[0].getCoords();
    mPointerCoords[1] = mPointers[1].getCoords();
}
项目:cordova-android-chromium    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX, int startY, int deltaX, int deltaY) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();
    int scaledTouchSlop = getScaledTouchSlop();

    mPointers = new TouchPointer[1];
    mPointers[0] = new TouchPointer(startX, startY, deltaX, deltaY, 0,
        scale, scaledTouchSlop);

    mPointerProperties = new PointerProperties[1];
    mPointerProperties[0] = mPointers[0].getProperties();

    mPointerCoords = new PointerCoords[1];
    mPointerCoords[0] = mPointers[0].getCoords();
}
项目:cordova-android-chromium    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX0, int startY0, int deltaX0, int deltaY0,
        int startX1, int startY1, int deltaX1, int deltaY1) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();
    int scaledTouchSlop = getScaledTouchSlop();

    mPointers = new TouchPointer[2];
    mPointers[0] = new TouchPointer(startX0, startY0, deltaX0, deltaY0, 0,
        scale, scaledTouchSlop);
    mPointers[1] = new TouchPointer(startX1, startY1, deltaX1, deltaY1, 1,
        scale, scaledTouchSlop);

    mPointerProperties = new PointerProperties[2];
    mPointerProperties[0] = mPointers[0].getProperties();
    mPointerProperties[1] = mPointers[1].getProperties();

    mPointerCoords = new PointerCoords[2];
    mPointerCoords[0] = mPointers[0].getCoords();
    mPointerCoords[1] = mPointers[1].getCoords();
}
项目:atmosphere-uiautomator-bridge    文件:MotionEventSender.java   
private void injectFingerRegisterEvent(int newPointerId) {
    int pointerCount = pointerIds.size();
    int action = pointerCount == 1 ? MotionEvent.ACTION_DOWN : MotionEvent.ACTION_POINTER_DOWN;

    PointerCoords[] coords = new PointerCoords[pointerCount];
    PointerProperties[] properties = new PointerProperties[pointerCount];

    int i = 0;
    for (Integer pointerId : pointerIds) {
        coords[i] = pointerPositionsMap.get(pointerId);
        properties[i] = pointerPropertiesMap.get(pointerId);
        i++;
    }

    long now = SystemClock.uptimeMillis();
    MotionEvent event = MotionEvent.obtain(now,
                                           now,
                                           action,
                                           pointerCount,
                                           properties,
                                           coords,
                                           DEFAULT_META_STATE,
                                           0,
                                           DEFAULT_PRECISION_X,
                                           DEFAULT_PRECISION_Y,
                                           DEVICE_ID,
                                           DEFAULT_EDGE_FLAGS,
                                           DEFAULT_INPUT_SOURCE,
                                           0);

    if (action == MotionEvent.ACTION_POINTER_DOWN) {
        int newPointerIndex = event.findPointerIndex(newPointerId);
        event.setAction(action | (newPointerIndex << MotionEvent.ACTION_POINTER_INDEX_SHIFT));
    }

    injectMethodFacade(event);
}
项目:atmosphere-uiautomator-bridge    文件:MotionEventSender.java   
private void injectFingerUnregisterEvent(int upPointerId) {
    int pointerCount = pointerIds.size();
    int action = pointerCount == 1 ? MotionEvent.ACTION_UP : MotionEvent.ACTION_POINTER_UP;

    PointerCoords[] coords = new PointerCoords[pointerCount];
    PointerProperties[] properties = new PointerProperties[pointerCount];

    int i = 0;
    for (Integer pointerId : pointerIds) {
        coords[i] = pointerPositionsMap.get(pointerId);
        properties[i] = pointerPropertiesMap.get(pointerId);
        if (upPointerId == pointerId) {
            coords[i].pressure = 0.0f;
        }
        i++;
    }

    long now = SystemClock.uptimeMillis();
    MotionEvent event = MotionEvent.obtain(now,
                                           now,
                                           action,
                                           pointerCount,
                                           properties,
                                           coords,
                                           DEFAULT_META_STATE,
                                           0,
                                           DEFAULT_PRECISION_X,
                                           DEFAULT_PRECISION_Y,
                                           DEVICE_ID,
                                           DEFAULT_EDGE_FLAGS,
                                           DEFAULT_INPUT_SOURCE,
                                           0);

    if (action == MotionEvent.ACTION_POINTER_UP) {
        int newPointerIndex = event.findPointerIndex(upPointerId);
        event.setAction(action | (newPointerIndex << MotionEvent.ACTION_POINTER_INDEX_SHIFT));
    }

    injectMethodFacade(event);
}
项目:appium-uiautomator2-server    文件:ActionsHelpers.java   
private static MotionInputEventParams toMotionEventInputParams(
        final int actionCode, final PointerCoords coordinates, final int button,
        final PointerProperties properties, final long startDelta) {
    final MotionInputEventParams evtParams = new MotionInputEventParams();
    evtParams.actionCode = actionCode;
    evtParams.coordinates = coordinates;
    evtParams.button = button;
    evtParams.properties = properties;
    evtParams.startDelta = startDelta;
    return evtParams;
}
项目:appium-uiautomator2-server    文件:W3CActions.java   
private static PointerProperties[] filterPointerProperties(
        final List<MotionInputEventParams> motionEventsParams, final boolean shouldHovering) {
    final List<PointerProperties> result = new ArrayList<>();
    for (final MotionInputEventParams eventParams : motionEventsParams) {
        if (shouldHovering && HOVERING_ACTIONS.contains(eventParams.actionCode)) {
            result.add(eventParams.properties);
        } else if (!shouldHovering && !HOVERING_ACTIONS.contains(eventParams.actionCode)) {
            result.add(eventParams.properties);
        }
    }
    return result.toArray(new PointerProperties[result.size()]);
}
项目:FMTech    文件:ghw.java   
final MotionEvent.PointerProperties c()
{
  MotionEvent.PointerProperties localPointerProperties = new MotionEvent.PointerProperties();
  localPointerProperties.toolType = 1;
  localPointerProperties.id = this.b;
  return localPointerProperties;
}
项目:android-chromium-view    文件:GenericTouchGesture.java   
GenericTouchGesture(ContentViewCore contentViewCore,
        int startX, int startY, int deltaX, int deltaY) {
    mContentViewCore = contentViewCore;

    float scale = mContentViewCore.getRenderCoordinates().getDeviceScaleFactor();

    mPointers = new TouchPointer[1];
    mPointers[0] = new TouchPointer(startX, startY, deltaX, deltaY, 0, scale);

    mPointerProperties = new PointerProperties[1];
    mPointerProperties[0] = mPointers[0].getProperties();

    mPointerCoords = new PointerCoords[1];
    mPointerCoords[0] = mPointers[0].getCoords();
}
项目:android-chromium    文件:GenericTouchGesture.java   
TouchPointer(int startX, int startY, int deltaX, int deltaY,
        int id, float scale, int scaledTouchSlop) {
    mStartX = startX * scale;
    mStartY = startY * scale;

    float scaledDeltaX = deltaX * scale;
    float scaledDeltaY = deltaY * scale;

    if (scaledDeltaX != 0 || scaledDeltaY != 0) {
        // The touch handler only considers a pointer as moving once
        // it's been moved by more than scaledTouchSlop pixels. We
        // thus increase the delta distance so the move is actually
        // registered as covering the specified distance.
        float distance = (float)Math.sqrt(scaledDeltaX * scaledDeltaX +
                scaledDeltaY * scaledDeltaY);
        mDeltaX = scaledDeltaX * (1 + scaledTouchSlop / distance);
        mDeltaY = scaledDeltaY * (1 + scaledTouchSlop / distance);
    }
    else {
        mDeltaX = scaledDeltaX;
        mDeltaY = scaledDeltaY;
    }

    if (deltaX != 0 || deltaY != 0) {
        mStepX = mDeltaX / Math.abs(mDeltaX + mDeltaY);
        mStepY = mDeltaY / Math.abs(mDeltaX + mDeltaY);
    } else {
        mStepX = 0;
        mStepY = 0;
    }

    mProperties = new PointerProperties();
    mProperties.id = id;
    mProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;

    mCoords = new PointerCoords();
    mCoords.x = mStartX;
    mCoords.y = mStartY;
    mCoords.pressure = 1.0f;
}
项目:chromium_webview    文件:GenericTouchGesture.java   
TouchPointer(int startX, int startY, int deltaX, int deltaY,
        int id, float scale, int scaledTouchSlop) {
    mStartX = startX * scale;
    mStartY = startY * scale;

    float scaledDeltaX = deltaX * scale;
    float scaledDeltaY = deltaY * scale;

    if (scaledDeltaX != 0 || scaledDeltaY != 0) {
        // The touch handler only considers a pointer as moving once
        // it's been moved by more than scaledTouchSlop pixels. We
        // thus increase the delta distance so the move is actually
        // registered as covering the specified distance.
        float distance = (float)Math.sqrt(scaledDeltaX * scaledDeltaX +
                scaledDeltaY * scaledDeltaY);
        mDeltaX = scaledDeltaX * (1 + scaledTouchSlop / distance);
        mDeltaY = scaledDeltaY * (1 + scaledTouchSlop / distance);
    }
    else {
        mDeltaX = scaledDeltaX;
        mDeltaY = scaledDeltaY;
    }

    if (deltaX != 0 || deltaY != 0) {
        mStepX = mDeltaX / Math.abs(mDeltaX + mDeltaY);
        mStepY = mDeltaY / Math.abs(mDeltaX + mDeltaY);
    } else {
        mStepX = 0;
        mStepY = 0;
    }

    mProperties = new PointerProperties();
    mProperties.id = id;
    mProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;

    mCoords = new PointerCoords();
    mCoords.x = mStartX;
    mCoords.y = mStartY;
    mCoords.pressure = 1.0f;
}
项目:android-kioskime    文件:MotionEventReader.java   
private void readEmbeddedMotionEvent(final JsonReader jsonReader, final ReplayData replayData,
        final int actionType) throws IOException {
    jsonReader.beginObject();
    PointerProperties[] pointerPropertiesArray = null;
    while (jsonReader.hasNext()) {  // pointerIds/xyt
        final String name = jsonReader.nextName();
        if (name.equals("pointerIds")) {
            pointerPropertiesArray = readPointerProperties(jsonReader);
        } else if (name.equals("xyt")) {
            readPointerData(jsonReader, replayData, actionType, pointerPropertiesArray);
        }
    }
    jsonReader.endObject();
}
项目:android-kioskime    文件:MotionEventReader.java   
private PointerProperties[] readPointerProperties(final JsonReader jsonReader)
        throws IOException {
    final ArrayList<PointerProperties> pointerPropertiesArrayList =
            new ArrayList<PointerProperties>();
    jsonReader.beginArray();
    while (jsonReader.hasNext()) {
        final PointerProperties pointerProperties = new PointerProperties();
        pointerProperties.id = jsonReader.nextInt();
        pointerProperties.toolType = MotionEvent.TOOL_TYPE_UNKNOWN;
        pointerPropertiesArrayList.add(pointerProperties);
    }
    jsonReader.endArray();
    return pointerPropertiesArrayList.toArray(
            new PointerProperties[pointerPropertiesArrayList.size()]);
}
项目:android-kioskime    文件:MotionEventReader.java   
private void addMotionEventData(final ReplayData replayData, final int actionType,
        final long time, final PointerProperties[] pointerProperties,
        final PointerCoords[] pointerCoords) {
    replayData.mActions.add(actionType);
    replayData.mTimes.add(time);
    replayData.mPointerPropertiesArrays.add(pointerProperties);
    replayData.mPointerCoordsArrays.add(pointerCoords);
}
项目:cordova-android-chromium    文件:GenericTouchGesture.java   
TouchPointer(int startX, int startY, int deltaX, int deltaY,
        int id, float scale, int scaledTouchSlop) {
    mStartX = startX * scale;
    mStartY = startY * scale;

    float scaledDeltaX = deltaX * scale;
    float scaledDeltaY = deltaY * scale;

    if (scaledDeltaX != 0 || scaledDeltaY != 0) {
        // The touch handler only considers a pointer as moving once
        // it's been moved by more than scaledTouchSlop pixels. We
        // thus increase the delta distance so the move is actually
        // registered as covering the specified distance.
        float distance = (float)Math.sqrt(scaledDeltaX * scaledDeltaX +
                scaledDeltaY * scaledDeltaY);
        mDeltaX = scaledDeltaX * (1 + scaledTouchSlop / distance);
        mDeltaY = scaledDeltaY * (1 + scaledTouchSlop / distance);
    }
    else {
        mDeltaX = scaledDeltaX;
        mDeltaY = scaledDeltaY;
    }

    if (deltaX != 0 || deltaY != 0) {
        mStepX = mDeltaX / Math.abs(mDeltaX + mDeltaY);
        mStepY = mDeltaY / Math.abs(mDeltaX + mDeltaY);
    } else {
        mStepX = 0;
        mStepY = 0;
    }

    mProperties = new PointerProperties();
    mProperties.id = id;
    mProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;

    mCoords = new PointerCoords();
    mCoords.x = mStartX;
    mCoords.y = mStartY;
    mCoords.pressure = 1.0f;
}
项目:365browser    文件:MotionEventSynthesizer.java   
public MotionEventSynthesizer(View target, WindowAndroidProvider windowProvider) {
    mTarget = target;
    mWindowProvider = windowProvider;
    mPointerProperties = new PointerProperties[MAX_NUM_POINTERS];
    mPointerCoords = new PointerCoords[MAX_NUM_POINTERS];
}
项目:android-chromium-view    文件:GenericTouchGesture.java   
PointerProperties getProperties() {
    return mProperties;
}
项目:android-chromium    文件:GenericTouchGesture.java   
PointerProperties getProperties() {
    return mProperties;
}
项目:chromium_webview    文件:TouchEventSynthesizer.java   
TouchEventSynthesizer(ContentViewCore contentViewCore) {
    mContentViewCore = contentViewCore;
    mPointerProperties = new PointerProperties[MAX_NUM_POINTERS];
    mPointerCoords = new PointerCoords[MAX_NUM_POINTERS];
}
项目:chromium_webview    文件:GenericTouchGesture.java   
PointerProperties getProperties() {
    return mProperties;
}
项目:android-kioskime    文件:MotionEventReader.java   
private void readPointerData(final JsonReader jsonReader, final ReplayData replayData,
        final int actionType, final PointerProperties[] pointerPropertiesArray)
        throws IOException {
    if (pointerPropertiesArray == null) {
        Log.e(TAG, "PointerIDs must be given before xyt data in json for MotionEvent");
        jsonReader.skipValue();
        return;
    }
    long time = UNINITIALIZED_LONG;
    jsonReader.beginArray();
    while (jsonReader.hasNext()) {  // Array of historical data
        jsonReader.beginObject();
        final ArrayList<PointerCoords> pointerCoordsArrayList = new ArrayList<PointerCoords>();
        while (jsonReader.hasNext()) {  // Time/data object
            final String name = jsonReader.nextName();
            if (name.equals("t")) {
                time = jsonReader.nextLong();
            } else if (name.equals("d")) {
                jsonReader.beginArray();
                while (jsonReader.hasNext()) {  // array of data per pointer
                    final PointerCoords pointerCoords = readPointerCoords(jsonReader);
                    if (pointerCoords != null) {
                        pointerCoordsArrayList.add(pointerCoords);
                    }
                }
                jsonReader.endArray();
            } else {
                jsonReader.skipValue();
            }
        }
        jsonReader.endObject();
        // Data was recorded as historical events, but must be split apart into
        // separate MotionEvents for replaying
        if (time != UNINITIALIZED_LONG) {
            addMotionEventData(replayData, actionType, time, pointerPropertiesArray,
                    pointerCoordsArrayList.toArray(
                            new PointerCoords[pointerCoordsArrayList.size()]));
        } else {
            Log.e(TAG, "Time not assigned in json for MotionEvent");
        }
    }
    jsonReader.endArray();
}
项目:cordova-android-chromium    文件:GenericTouchGesture.java   
PointerProperties getProperties() {
    return mProperties;
}