Android 获取USB等多个输入设备信息-InputDevice

Activity内的onKeyDown函数可以捕获输入设备的输入,但是如果android接了多个usb或者其他接口的输入设备,这时候,怎么获取不同输入设备的信息呢?如果能获取到这个输入设备的信息,我们就可以区分不同的输入设备来响应不同的事件。

所以翻了一KeyEvent这个类,查看了里面的方法,发现有这么一个类InputDevice
InputDevice这个对象有两种获取方式

//第一种
InputDevice inputDevice = InputDevice.getDevice(event.getDeviceId());
//第二种 通过InputManager获取
InputManager inputManager = (InputManager)getSystemService(Context.INPUT_SERVICE);
InputDevice inputDevice = inputManager.getInputDevice(event.getDeviceId());
//不过都需要获取到DeviceId的前题 如果不在onKeyDown这个接口里呢?
//我们可以通过InputManager获取到当前的所有设备的DeviceId
int[] inputDeviceIds= inputManager.getInputDeviceIds();
 @Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (event.getDeviceId() == KeyCharacterMap.VIRTUAL_KEYBOARD) {//如果是虚拟键盘则不截获输入事件return false;}InputDevice inputDevice = InputDevice.getDevice(event.getDeviceId());Log.e("key", "onKeyDown: InputDevice:name=" +  inputDevice.getName()+",productId="+inputDevice.getProductId()+",VendorId="+ inputDevice.getVendorId());Log.e("key", "onKeyDown: keyCode=" + keyCode + "String=" + KeyEvent.keyCodeToString(keyCode));//监听键盘以及二维码输入return true;//截获事件}

以上就是在onKeyDown这个接口里获取输入设备信息的方法,有了设备信息,区分判断就是很简单的事情了

Android 获取USB输入设备信息/区分虚拟键盘和外接键盘输入相关推荐

  1. Android获取USB设备信息

    一.通过路径查询 cat /proc/bus/input/devices 二.使用UsbManager获取插入手机的USB设备名字 private void getDevice() {UsbManag ...

  2. 基于WMI获取USB设备信息(即获取插即用设备信息)System.Management.ManagementObjectSearcher--ManagementObjectCollection

    基于WMI获取USB设备信息(即获取插即用设备信息)System.Management.ManagementObjectSearcher--ManagementObjectCollection 获取P ...

  3. Android 获取设备各种信息以及其它

    做手机开发,想必都希望获取手机号码吧,android中有一个类android.telephony.TelephonyManager提供这个功能. TelephonyManager tm = (Tele ...

  4. C# 获取USB设备信息

    WMI方式 using System; using System.Management; using System.Text.RegularExpressions; using System.Coll ...

  5. Android获取歌曲详细信息

    Android获取歌曲详细信息 一.目标 二.实现方案 三.HTML方案 四.JSON方案 五.接下来 六.Finally 在<Android实现歌词笔记构思>时,构思了如何在笔记中添加歌 ...

  6. Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)

    Android获取设备各项信息(设备id.ip地址.APP应用名称.设备名称.运行商.品牌.型号.分辨率.处理器.国家码.系统语言.网络类型.oaid.android版本.操作系统版本.mac地址.应 ...

  7. Android -- 获取设备硬件信息

    Android – 获取设备硬件信息 通过 Build 获取指定字段信息: 信息 方法 例子 主板 Build.BOARD PAR 系统定制商 Build.BRAND HUAWEI 硬件名称 Buil ...

  8. win键失效(笔记本自带键盘和外接键盘)

    环境:Win10系统 设备:华为笔记本电脑MateBook D 问题:笔记本自带键盘以及外接键盘的其他按键都确认没有其他的问题,只是Win键失效了 解决步骤: (1)笔记本自带键盘 先确认下是不是键盘 ...

  9. Android 获取SIM卡信息

    android 获取sim卡运营商信息 TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHO ...

最新文章

  1. 查看网页js数据接口
  2. iphone日历怎么跳转日期_晚上别调手表日期!手表调节日历的禁区!
  3. Python-GUI PyQT5案例:注册界面窗体设计(含扇形菜单)
  4. WindowsXP正版验证方法
  5. xilinx7中管脚mrcc和srcc_Xilinx 7系列FPGA架构之SelectIO结构(一)
  6. Java虚拟机专题之字节码指令(读书笔记)
  7. Linux下端口占用解决方法
  8. Xstream-1 原理
  9. Cesium:在地球上加载Geoserver图层
  10. 【strtok()】——分割字符串
  11. matlab 直方图(柱状图) 及 CDF曲线
  12. MacBook重启之后,外接显示器不亮的解决方法
  13. python re search match_简诉Python Re模块中re.search和re.match的区别
  14. 2022 世界人工智能大会,都讲了些啥?
  15. 2019联想创新科技大会:“端边云网智”一切就绪
  16. #includeiomanip
  17. 有8匹马,只有四个赛道,如何挑出前三名?
  18. Mac 上无法使用brew安装软件问题处理记录
  19. 实用防火与防爆技术培训---第一讲 燃烧的类型和特征(上)
  20. c语言典型编程题北理,c++经典编程题

热门文章

  1. Linux基础篇大集合
  2. Jquery UI sortable
  3. 对学习过程中的认知和体会
  4. Android的Activity生命周期以及模式
  5. CF1427 E. Xum 口胡题解
  6. c语言如何编写头文件,如何编写自己的C语言头文件
  7. python通过librados库通过底层的rados操作ceph的对象存储和块存储
  8. Java之主函数——main函数
  9. 美国培生教育集团下PYP Readers系列的音乐是怎样制造的,读了吗?
  10. SQL -- distinct 函数的用法