android usb Host模式下与usb Hid 设备的通信

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

做android 与USB HID设备的通信有段时间了,总结一下遇到的问题和解决方法:

1,第一次遇到的问题:android 版本低不支持usb hid,

被要求做相关项目的时候,就从mUsbManager.getDeviceList开始,郁闷了一周,就是返回NULL,从google上查找所有关于android usb的资料,最后才发现,android设备是2.3的不支持android.usb.hardware的包(android3.0之后才支持);

2,第二次:android的etc/permissions没有android.hardware.usb.host.xml权限。

发现版本低之后赶快去买了一个android4.0的设备来测试,发现还是返回NULL。还得从google寻找答案,这篇对我的帮助很大:http://stackoverflow.com/questions/11183792/android-usb-host-and-hidden-devices。最后把设备root了一下在系统文件etc/permissions里面加入权限后OK, mUsbManager.getDeviceList() !=null了。

3,获取需要连接的USB 设备权限

可以参考http://developer.android.com/guide/topics/connectivity/usb/host.html;

获取连接权限有两种方式,

在调试过程中就遇到方法一无法连接的问题,还是使用mUsbManager.requestPermission()解决

4,usb hid只能是中断传输,或者控制传输

这个问题纠结很久,因为根据android开发的api Guider使用connection.bulkTransfer(endpoint, bytes, bytes.length, TIMEOUT);无论如何得不到数据。后来在stackoverflow上去翻所有关于android usb hid的文章结果发现说是需要中断传输。

UsbRequest request = new UsbRequest();
        Boolean isOpenRequest = request.initialize(connection,
mUsbEndpoint);

       if(isOpenRequest){

         request.queue(buffer, buffer.length);

         if(communication.waitRequest==request){

                //do something like as receiver date

               // 如何这时收到某个数据时需要向设备发送命令则需要使用

              controlTransfer(int requestType, int request, int value, int index, byte[] buffer, int length, int timeout)

          }

       }

Android OTG-HID的连接通讯 正在开发的项目中多有涉及到Android通过HID设备终端通讯的需求,所以写下本篇博客做个笔记。 如何进行USB接口的HID进行开发?网站上很多文章并不完善,这方便的也介绍的不多,我看了很多资料,借助网上的一些代码,整理了以下信息,希望能给大家提供便捷。 1.简述 ... 阅读详情

相关推荐

USB读写速率 android USB HID通信】成功的实现了每125微妙接收到一包数据,每秒8000包数据(256字节一包)

Android实现读取USB数据,每秒读取8000包的功能

zhoupuxian的博客 4842

Android USB HID整理

概述 USB是一种双线串口通信方式(只需要两根数据线),它工作在1.5或者12MbS的速度。USB协议支持外设热插拔,这些外设分为许多不同类型,每一种设备类都具有相同的动作和类似的功能。比如显示器,鼠标,话筒等等。 HID类提供了人机接口的界面,许多典型的HID设备具有LED,音频反馈等,以此展现设备信息给用户。 HID设备定义的最基本目的: 尽可能节省设备的数据空间 允许操作系统忽略未知的信息 使数据定义可扩展 支持嵌套和集合 拥有自身的相关信息,使之适用于一般的软件 参考 总体参考: HID设备

愿有岁月可回首,且以深情共白头 8050

安卓设备USB-HID通讯例程的开发 (4)

安卓设备USB-HID通讯例程的开发 (4) - HID设备对三大主要事务的处理(C代码) 本博文系JGB联合商务组的原创作品,引用请标明出处 在HID设备一侧,完整地理解C代码对三大主要事务(SETUP事务, IN事务, OUT事务)的处理是很重要的,本通讯例程的C源码均涉及到对这三个事务的处理。 //完成一次正确的传输 void CTR_CallBack(void) { u16 EpNum,EpReg; u16 ix=0 ; //取得端点号,ISTR中断状态寄存器的低四位是端点号,所

JGB联合商务组的博客 924

AndroidUSB-HID协议实现

所有通过USB连接android设备进行通讯的步骤都是大同小异:查询usb设备列表 ——>匹配对应的设备类型(如productid , vendorId)等——>连接usb设备,找到连接通讯的节点——>配置通讯信息,进行通讯。以上是通常的连接usb设备进行通讯的步骤和特点。

easonguolong的博客 3654

AndroidUSB HID 发送指令

AndroidUSB HID 发送指令 去发现同类优质开源项目:https://gitcode.com/ 资源介绍 此资源为Android平台发送指令至USB HID设备的示例应用程序。该程序能够帮助开发者快速理解并实现AndroidHID设备之间的通信。 主要功能 自动检测连接的HID设备,并显示设备信息。 通过点击界面上的按钮,向HID设备发送指令。 文件说明 app-relea...

gitblog_06790的博客 399

有关Android Usb Host开发

最近有个项目是关于Android应用HID通过使用Usb Host模式通信。由于以前没做过Usb方面的开发,而且看见网上在这方面的资料也很少,所以就发一篇博文和大家共享经验。 回归正题,在Android Usb Host开发中,对于发现设备、如何连接设备等等的都在官方API中说的清清楚楚了,我也不再详述了,反而在HID通讯传输数据就重点说一下,想要正确的HID进行通讯并且传输数据...

feelinghappy的专栏 286

Android USB HostHID通讯(二)

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33730836的博客 484

Android USB HID通信Demo:USB Host模式数据收发

USB通信Android外设开发中的核心能力之一,而HID协议作为系统级免驱的标准协议,在工业控制、数据采集和智能硬件场景中应用广泛。在Android设备上,通过USB Host模式,开发者可以绕过串口转接芯片的驱动适配,直接HID外设进行数据交互。理解UsbManager、UsbDevice、UsbInterface和UsbEndpoint这四个核心对象,便能搭建起主机外设之间的通信链路。从USB键盘、扫码枪到自定义HID传感器,这类需求往往都遵循相同的中断传输逻辑。本文以实际Demo为例,详细拆解

weixin_28685287的博客 232

安卓USB HID通信从0到1:免驱外设通信实战指南

USB HID是一种基于USB协议的人机交互设备通信规范,系统内置驱动支持,无需额外安装驱动即可实现即插即用。在安卓开发中,利用USB Host模式,可以通过OTG连接键盘、鼠标、扫码枪等标准HID外设,实现双向数据交互。HID采用中断传输方式,单包数据量小但稳定可靠,非常适合设备控制、参数配置、按键指令下发等小数据量工控场景。理解设备描述符、接口端点是通信的基础,应用层需借助UsbManager完成权限申请、设备枚举及bulkTransfer收发。本文通过一个完整demo,从环境配置、权限处理到数据收发

weixin_42531588的博客 259

Android USB HostHID通讯

去年9月份来到现在的公司,接到新公司的第一个项目就是Android USB HostHID通讯,当时也什么都不懂,就拿着google的api 开发指南 (http://developer.android.com/guide/topics/connectivity/usb/host.html)反复的阅读反复的实验,网上的资料也只能发现 / 枚举到U盘等设备,进行HID通讯、数据传输的资料很少

qweadf1的专栏 3082

Android USB Host使用详解

http://blog.csdn.net/glouds/article/details/40260805 ================= 首先说一下为什么要写关于Android USB Host通信的介绍,对于android程序原来说不懂硬件做USB通信确实开头比较难,但是Google ...

752

关于android USB Host 串口编程

环境:android 平板4.1 ,OTG线,串口转usb线,开发板 ------------------------------------------------- 任务:使用平板发送指令给开发板,开发板接受后,比如开始打印、 即使用android host 来连接外设。     基础知识: 做usb通信,首先要先弄清楚哪边是HOST那边是SLAVE。 比如你的androi...

dztdztdzt的专栏 551

Linux - UAC USB声卡

Linux - UAC USB声卡UAC定义 最近项目里需要做一个linux平台的USB声卡,及通过USB插入Android设备,可识别成为一个USB声卡设备,并通过UAC采集录音 也可通过UAC播放音频的功能; UAC定义 任何USB设备在连接到USB接口后,主机检测到有新设备接入,会利用不同的请求命令(Request)查询该设备的属性,设备通过不同的描述符向主机报告自己的情况。包括设备的种类,设备的功能,设备具有的端点数量以及其他工作属性等等。在了解这些信息之后,主机就可以根据需要分配USB工作带宽

qq_42233843的博客 8627

安卓USB转串口通信全解析:从硬件驱动到应用开发实战

串口通信作为嵌入式开发和硬件调试的基础技术,通过串行数据位传输实现设备间稳定可靠的数据交换。其核心原理基于异步通信协议,通过波特率、数据位和停止位等参数配置确保时序同步。在工业控制、物联网设备调试和智能硬件开发等场景中,串口通信技术价值显著,能够连接微控制器、传感器和各种外围模块。针对安卓设备缺乏原生USB转串口支持的痛点,本文深入探讨了FTDI、CH340等主流芯片的驱动方案,并详细解析如何通过Android USB Host API实现无Root权限的串口通信应用开发,为移动端嵌入式调试提供完整解决方案

weixin_30621711的博客 388

android usb device host 切换_正点原子STM32F407探索者开发板资料连载第五十九章 USB 键鼠实验...

1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自《STM32F7 开发指南(HAL 库版)》关注官方微信号公众号,获取更多资料:正点原子第五十九章 USB 鼠标键盘(Host)实验上一章我们向大家介绍了如何利用 STM32F4 的 USB HOST 接口来驱动 U 盘,本章,我们将利用 STM32F4 的 USB HOST 来驱动 USB 鼠标/键盘。本章分为如下几个部分...

weixin_34515452的博客 430

Android USB Host API实战:从OTG功能开启到外设连接全解析

本文全面解析了Android设备通过OTG功能开启USB主机模式的硬件原理软件配置。详细介绍了从OTG线识别、系统层USB Host API权限开启(包括Root下的深度配置),到使用Android USB Host API编程连接并通信USB键盘及串口设备的完整实战流程,并提供了关键的调试技巧避坑指南。

weixin_29235923的博客 187
下一篇: android 与usb 设备通信(二)
RitaLG
博客等级 码龄18年 12粉丝 5原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值