Search in sources :

Example 61 with InputDevice

use of android.view.InputDevice in project android_frameworks_base by DirtyUnicorns.

the class InputManager method getInputDeviceByDescriptor.

/**
     * Gets information about the input device with the specified descriptor.
     * @param descriptor The input device descriptor.
     * @return The input device or null if not found.
     * @hide
     */
public InputDevice getInputDeviceByDescriptor(String descriptor) {
    if (descriptor == null) {
        throw new IllegalArgumentException("descriptor must not be null.");
    }
    synchronized (mInputDevicesLock) {
        populateInputDevicesLocked();
        int numDevices = mInputDevices.size();
        for (int i = 0; i < numDevices; i++) {
            InputDevice inputDevice = mInputDevices.valueAt(i);
            if (inputDevice == null) {
                int id = mInputDevices.keyAt(i);
                try {
                    inputDevice = mIm.getInputDevice(id);
                } catch (RemoteException ex) {
                    throw ex.rethrowFromSystemServer();
                }
                if (inputDevice == null) {
                    continue;
                }
                mInputDevices.setValueAt(i, inputDevice);
            }
            if (descriptor.equals(inputDevice.getDescriptor())) {
                return inputDevice;
            }
        }
        return null;
    }
}
Also used : InputDevice(android.view.InputDevice) RemoteException(android.os.RemoteException)

Example 62 with InputDevice

use of android.view.InputDevice in project android_frameworks_base by DirtyUnicorns.

the class PointerLocationView method onPointerEvent.

@Override
public void onPointerEvent(MotionEvent event) {
    final int action = event.getAction();
    int NP = mPointers.size();
    if (action == MotionEvent.ACTION_DOWN || (action & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_DOWN) {
        final int index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> // will be 0 for down
        MotionEvent.ACTION_POINTER_INDEX_SHIFT;
        if (action == MotionEvent.ACTION_DOWN) {
            for (int p = 0; p < NP; p++) {
                final PointerState ps = mPointers.get(p);
                ps.clearTrace();
                ps.mCurDown = false;
            }
            mCurDown = true;
            mCurNumPointers = 0;
            mMaxNumPointers = 0;
            mVelocity.clear();
            if (mAltVelocity != null) {
                mAltVelocity.clear();
            }
        }
        mCurNumPointers += 1;
        if (mMaxNumPointers < mCurNumPointers) {
            mMaxNumPointers = mCurNumPointers;
        }
        final int id = event.getPointerId(index);
        while (NP <= id) {
            PointerState ps = new PointerState();
            mPointers.add(ps);
            NP++;
        }
        if (mActivePointerId < 0 || !mPointers.get(mActivePointerId).mCurDown) {
            mActivePointerId = id;
        }
        final PointerState ps = mPointers.get(id);
        ps.mCurDown = true;
        InputDevice device = InputDevice.getDevice(event.getDeviceId());
        ps.mHasBoundingBox = device != null && device.getMotionRange(MotionEvent.AXIS_GENERIC_1) != null;
    }
    final int NI = event.getPointerCount();
    mVelocity.addMovement(event);
    mVelocity.computeCurrentVelocity(1);
    if (mAltVelocity != null) {
        mAltVelocity.addMovement(event);
        mAltVelocity.computeCurrentVelocity(1);
    }
    final int N = event.getHistorySize();
    for (int historyPos = 0; historyPos < N; historyPos++) {
        for (int i = 0; i < NI; i++) {
            final int id = event.getPointerId(i);
            final PointerState ps = mCurDown ? mPointers.get(id) : null;
            final PointerCoords coords = ps != null ? ps.mCoords : mTempCoords;
            event.getHistoricalPointerCoords(i, historyPos, coords);
            if (mPrintCoords) {
                logCoords("Pointer", action, i, coords, id, event);
            }
            if (ps != null) {
                ps.addTrace(coords.x, coords.y, false);
            }
        }
    }
    for (int i = 0; i < NI; i++) {
        final int id = event.getPointerId(i);
        final PointerState ps = mCurDown ? mPointers.get(id) : null;
        final PointerCoords coords = ps != null ? ps.mCoords : mTempCoords;
        event.getPointerCoords(i, coords);
        if (mPrintCoords) {
            logCoords("Pointer", action, i, coords, id, event);
        }
        if (ps != null) {
            ps.addTrace(coords.x, coords.y, true);
            ps.mXVelocity = mVelocity.getXVelocity(id);
            ps.mYVelocity = mVelocity.getYVelocity(id);
            mVelocity.getEstimator(id, ps.mEstimator);
            if (mAltVelocity != null) {
                ps.mAltXVelocity = mAltVelocity.getXVelocity(id);
                ps.mAltYVelocity = mAltVelocity.getYVelocity(id);
                mAltVelocity.getEstimator(id, ps.mAltEstimator);
            }
            ps.mToolType = event.getToolType(i);
            if (ps.mHasBoundingBox) {
                ps.mBoundingLeft = event.getAxisValue(MotionEvent.AXIS_GENERIC_1, i);
                ps.mBoundingTop = event.getAxisValue(MotionEvent.AXIS_GENERIC_2, i);
                ps.mBoundingRight = event.getAxisValue(MotionEvent.AXIS_GENERIC_3, i);
                ps.mBoundingBottom = event.getAxisValue(MotionEvent.AXIS_GENERIC_4, i);
            }
        }
    }
    if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL || (action & MotionEvent.ACTION_MASK) == MotionEvent.ACTION_POINTER_UP) {
        final int index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> // will be 0 for UP
        MotionEvent.ACTION_POINTER_INDEX_SHIFT;
        final int id = event.getPointerId(index);
        final PointerState ps = mPointers.get(id);
        ps.mCurDown = false;
        if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {
            mCurDown = false;
            mCurNumPointers = 0;
        } else {
            mCurNumPointers -= 1;
            if (mActivePointerId == id) {
                mActivePointerId = event.getPointerId(index == 0 ? 1 : 0);
            }
            ps.addTrace(Float.NaN, Float.NaN, false);
        }
    }
    invalidate();
}
Also used : InputDevice(android.view.InputDevice) PointerCoords(android.view.MotionEvent.PointerCoords) Paint(android.graphics.Paint)

Example 63 with InputDevice

use of android.view.InputDevice in project android_frameworks_base by AOSPA.

the class InputManagerService method handleSwitchKeyboardLayout.

// Must be called on handler.
private void handleSwitchKeyboardLayout(@Nullable InputDeviceIdentifier identifier, InputMethodSubtypeHandle handle) {
    synchronized (mInputDevicesLock) {
        for (InputDevice device : mInputDevices) {
            if (identifier != null && !device.getIdentifier().equals(identifier) || !device.isFullKeyboard()) {
                continue;
            }
            String key = getLayoutDescriptor(device.getIdentifier());
            boolean changed = false;
            synchronized (mDataStore) {
                try {
                    if (mDataStore.switchKeyboardLayout(key, handle)) {
                        changed = true;
                    }
                } finally {
                    mDataStore.saveIfNeeded();
                }
            }
            if (changed) {
                reloadKeyboardLayouts();
            }
        }
    }
}
Also used : InputDevice(android.view.InputDevice)

Example 64 with InputDevice

use of android.view.InputDevice in project android_frameworks_base by AOSPA.

the class MLand method thump.

private void thump(int playerIndex, long ms) {
    if (mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) {
        // No interruptions. Not even game haptics.
        return;
    }
    if (playerIndex < mGameControllers.size()) {
        int controllerId = mGameControllers.get(playerIndex);
        InputDevice dev = InputDevice.getDevice(controllerId);
        if (dev != null && dev.getVibrator().hasVibrator()) {
            dev.getVibrator().vibrate((long) (ms * CONTROLLER_VIBRATION_MULTIPLIER), mAudioAttrs);
            return;
        }
    }
    mVibrator.vibrate(ms, mAudioAttrs);
}
Also used : InputDevice(android.view.InputDevice) Paint(android.graphics.Paint)

Example 65 with InputDevice

use of android.view.InputDevice in project android_frameworks_base by AOSPA.

the class Input method getInputDeviceId.

private int getInputDeviceId(int inputSource) {
    final int DEFAULT_DEVICE_ID = 0;
    int[] devIds = InputDevice.getDeviceIds();
    for (int devId : devIds) {
        InputDevice inputDev = InputDevice.getDevice(devId);
        if (inputDev.supportsSource(inputSource)) {
            return devId;
        }
    }
    return DEFAULT_DEVICE_ID;
}
Also used : InputDevice(android.view.InputDevice)

Aggregations

InputDevice (android.view.InputDevice)83 Paint (android.graphics.Paint)15 RemoteException (android.os.RemoteException)12 ArrayList (java.util.ArrayList)7 Vibrator (android.os.Vibrator)6 SettingNotFoundException (android.provider.Settings.SettingNotFoundException)6 Point (android.graphics.Point)5 InputManager (android.hardware.input.InputManager)5 PointerCoords (android.view.MotionEvent.PointerCoords)5 DisplayInfo (android.view.DisplayInfo)4 KeyboardLayout (android.hardware.input.KeyboardLayout)2 DisplayMetrics (android.util.DisplayMetrics)2 Test (org.junit.Test)2 NonNull (android.annotation.NonNull)1 PendingIntent (android.app.PendingIntent)1 BroadcastReceiver (android.content.BroadcastReceiver)1 Context (android.content.Context)1 Intent (android.content.Intent)1 IntentFilter (android.content.IntentFilter)1 InputDeviceIdentifier (android.hardware.input.InputDeviceIdentifier)1