Как проверить или сопоставить InputDevice DeviceID и UsbDevice DeviceID в Android? - PullRequest
0 голосов
/ 25 сентября 2018

Я получаю весь список подключенных устройств .. с идентификатором

  UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
            HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
            Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
            deviceInfoModels.clear();


        while (deviceIterator.hasNext()) {
            UsbDevice device = deviceIterator.next();
            DeviceInfoModel deviceInfoModel = new DeviceInfoModel();
            deviceInfoModel.setDeviceClass(device.getClass() + "");
            deviceInfoModel.setDeviceID(device.getDeviceId()+"");
            deviceInfoModel.setDeviceName(device.getDeviceName() + " " + device.getProductName());
            deviceInfoModel.setVendorID(device.getVendorId() + "");
            deviceInfoModel.setDeviceSubClass(device.getDeviceSubclass() + "");
            deviceInfoModel.setProductID(device.getProductId() + "");
            deviceInfoModels.add(deviceInfoModel);
        }

**This Code For Input Device**

 InputManager inputManager = (InputManager) getSystemService(Context.INPUT_SERVICE);
        for (int i = 0; i < inputManager.getInputDeviceIds().length; i++) {
          InputDevice inputDevice=inputManager.getInputDevice(inputManager.getInputDeviceIds()[i]);
          inputDevice.getVendorId();
          inputDevice.getId();
        }

, когда я сопоставляю идентификатор InputDevice и идентификатор UsbDevice. Я получаю разные идентификаторы.

Примечание. Я получаю всеправильная информация, такая как название продукта, идентификатор поставщика и т. д.

Но моя проблема в том, что к моей плате подключено несколько мышей.Я не могу определить, какая мышь была нажата.

Мой код для мыши нажал

@Override
    public boolean onTouchEvent(MotionEvent event) {
        // Mouse input is treated differently:


if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH &&
            InputDevice.SOURCE_MOUSE == InputDevice.SOURCE_MOUSE) {
        Toast.makeText(this, event.getDeviceId() + "", Toast.LENGTH_LONG).show();
    } 
    return super.onTouchEvent(event);
}

Я получаю идентификатор устройства. ЗДЕСЬ.

КАК МОЖНО ПОЛУЧИТЬ, ЧТО МЫ НАШЛИ МЫШЬЮ

1 Ответ

0 голосов
/ 13 октября 2018

Используйте InputDevice вместо USBDevice , и вы получите тот же идентификатор ..

InputManager inputManager = (InputManager) getSystemService(Context.INPUT_SERVICE);
        for (int i = 0; i < inputManager.getInputDeviceIds().length; i++) {
                    if (InputDevice.SOURCE_MOUSE == inputManager.getInputDevice(inputManager.getInputDeviceIds()[i]).getSources()) {
                        InputDevice inputDevice = inputManager.getInputDevice(inputManager.getInputDeviceIds()[i]);
                        DeviceInfoModel deviceInfoModel = new DeviceInfoModel();
                        deviceInfoModel.setDeviceClass(inputDevice.getClass() + "");
                        deviceInfoModel.setDeviceName(inputDevice.getName() + " " + inputDevice.getProductId());
                        deviceInfoModel.setVendorID(inputDevice.getVendorId() + "");
                        deviceInfoModel.setDeviceID(inputDevice.getId() + "");
        //                deviceInfoModel.setDeviceSubClass(inputDevice.isEnabled() + "");
                        deviceInfoModel.setProductID(inputDevice.getProductId() + "");
                        deviceInfoModels.add(deviceInfoModel);
                    }
                }
...