Android OTG-HID的连接与通讯

本文详细介绍了Android通过OTG-HID与设备通讯的开发过程,包括HID设备的连接步骤,如配置Manifest、枚举与连接设备、数据的发送与接收,以及如何处理权限和设备状态变化。对于需要进行USB HID类设备开发的Android程序员来说,是一份实用的教程。
摘要由CSDN通过智能技术生成


前言

正在开发的项目中多有涉及到Android通过OTG-HID与设备终端通讯的需求,所以写下本篇博客做个笔记。

如何进行USB接口的HID进行开发?网站上很多文章并不完善,这方便的也介绍的不多,我看了很多资料,借助网上的一些代码,整理了以下信息,希望能给大家提供便捷。


一、HID是什么?

USB HID类是USB设备的一个标准设备类,包括的设备非常多。HID类设备定义它属于人机交互操作的设备,用于控制计算机操作的一些方面,如USB鼠标、USB键盘、USB游戏操纵杆等。但HID设备类不一定要有人机接口,只要符合HID类别规范的设备都是HID设备。

二、HID设备的连接过程

1.配置Manifest

在Manifest中加入以下代码

<uses-feature android:name="android.hardware.usb.host"/>
<uses-permission android:name="android.hardware.usb.host" />

uses-feature是用来声明一个app在运行时所依赖的外部的硬件或软件特征(feature),此处是声明Android设备必须能作为Host。uses-permission声明Host权限。

2.HID设备的枚举与连接

1.设备枚举

HID设备一般通过Pid和Vid来枚举。Pid和Vid由硬件厂商提供,也可以插在PC端通过PC端的设备管理器查看。

mUsbManager = (UsbManager) mContext.getSystemService(Context.USB_SERVICE);
HashMap<String,UsbDevice> usbDevices = mUsbManager.getDeviceList();
        Log.e(TAG,"usbDevices" + usbDevices.size()) ;
        for (UsbDevice usbDevice : usbDevices.values()) {
   
            if( (usbDevice.getProductId() == mPid && usbDevice.getVendorId() == mVid) 
           	){
   
                mUsbDevice = usbDevice;
                hadEnum = true;
                Log.d(TAG, "find Device");
                break;
            }
        }

UsbManager是在android.hardware.usb包下的USB设备管理类,通过这个类的getDeviceList()方法来枚举连接在android设备上USB设备。然后我们通过UsbDevice的getProductId()和getVendorId()方法获取设备的Pid和Vid来找到我们的设备。

2.查找接口

private void findInterface() {
   
        if(mUsbDevice != null) {
   
            Log.d(TAG,"interfaceCounts = " + mUsbDevice.getInterfaceCount());
            for(int i = 0; i < mUsbDevice.getInterfaceCount() ; i++) {
   
                final UsbInterface intf = mUsbDevice.getInterface(i);
                Log.e(TAG,
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值