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. 学习《Linux设备模型浅析之设备篇》笔记(深挖一)
  2. 数据可视化应用案例:麦当劳和肯德基全国门店分布,谁才是分布最广的炸鸡店?
  3. Twitter的分布式自增ID算法Snowflake实现分析及其Java、Php和Python版
  4. 请按正确方法给UPS电源充电
  5. ABAP 标准培训教程 BC400 学习笔记之五:ABAP 编程语言的变量,常量和字面量,以及文本符号
  6. Jersey WebResource –标头不附加
  7. python123添加列表元素_Python之列表
  8. CCNA之三:RIP协议
  9. Tapestry5之页面显示
  10. 什么是软件项目验收,软件项目验收测试方法分享
  11. 自定义函数 | 批量计算微生物群落的alpha多样性
  12. Java基础之《JDK文档》
  13. Oracle 11g安装报错
  14. windows密钥查看器ProduKey1.82汉化
  15. 相机选型与远心镜头选型
  16. oracle禁用amm,[20180211]11g关闭AMM.txt
  17. 轮询调度算法(Round-Robin Scheduling)
  18. Python(Tuirtle库)绘制五星红旗详细画法
  19. 妙赞大讲糖:糖尿病患者的手术风险有多大
  20. 【Java程序设计】实验七 网络通信

热门文章

  1. 【印象笔记】Mac快捷键大全
  2. 读《数学辞海》编辑委员会之《数学辞海 第三卷》
  3. 缓存穿透,缓存击穿,缓存雪崩详解及解决办法
  4. 文石又出了一个阅读器
  5. Python使用Flask制作挡板
  6. 判别数据是否满足正态分布,将非正态分布转化为正态分布
  7. VMware12 无法识别U盘
  8. DHCP Option43配置
  9. win7ftp服务器文件可写,win7ftp服务器文件可写
  10. 电脑系统win8计算机在哪里设置开机密码,w8系统怎么设置开机密码 w8系统操作须知【图文】...