代码之家  ›  专栏  ›  技术社区  ›  Dilavar Malek

如何在Android中检查或匹配inputdevice deviceid和usbdevice deviceid?

  •  0
  • Dilavar Malek  · 技术社区  · 6 年前

    我正在获取所有附加设备列表…带身份证

      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 id和usbdevice id时,会得到不同的id。

    注意:我得到了所有正确的信息,如产品名称、供应商ID等。

    但我的问题是我的板上有多个鼠标。 我不知道点击了哪个鼠标。

    我的鼠标点击代码

    @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);
    }
    

    我这里的设备ID不同。

    我怎样才能知道点击了哪个鼠标

    1 回复  |  直到 6 年前
        1
  •  2
  •   Dilavar Malek    6 年前

    使用 输入设备而不是usbdevice 你会 获取相同的ID

    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);
                        }
                    }