Android开发USB驱动的工作

最近做一个NFC相关的项目,需要将USB设备与android直连,通过android来控制USB设备,与USB设备通讯。

牵涉到许多问题。USB协议之前接触的不多,请教了一些大神,总体归结如下:

1、弄清楚自己要开发的是什么USB设备。Host,OTG还是普通USB设备。一般来说,PC是HOST,所有的发送请求都是PC端发起的。OTG设备不太熟悉,貌似是专门为了可以让设备发起通讯而定制的一种协议。PC连接Android设备这个模式下开发比较简单,Android是从设备,有现成的代码和例程可以参考。这次我做的是Android连接USB设备的项目开发,Android是Host,只能参考GOOGLE提供的Android3.1以上才可使用的Android Host,所以Bug一大堆。

2、Android下开发USB设备的软硬件环境很难搭建。一般的手机就一个USB口。你接了一个USB设备,还想调试,那就只能进行远程调试了。远程调试的环境搭好了,你还得考虑手机接的USB设备需要通过你的手机给它供电,这就没法开发了,因为手机的U口是输入口,没法输出,不能供电,怎么办?


为了解决上面的2个问题,辛辛苦苦下个Vmware,搭个虚拟Android X86环境。Vmware配置好了,USB口设置成插到虚拟机,这里就牵涉到端口映射问题。实际调试过程中,发现在虚拟机中的确能获取到USB设备,VID,PID也都是对的。可是这个Device的InterfaceClass,InterfaceSubClass,InterfaceProtocol都是0,程序请求USB开通interface直接返还失败。具体原因还不知道。跟代码最终跟到native interface claim,是一个封装好的接口,这个接口就是返回false,没法进一步调试。用BUSHOUND一跟,看到当USB接口接入PC后,PC会建立一个Endpoint,就算虚拟机里面没走到这一步,也照样建立好了,因此怀疑Vmware对USB的映射应该是通过自己虚拟一个USB接口,让系统去连接那个接口,然后打通该接口与PC端物理接口创造的Endpoint,如果是这种方法,那么虚拟机里面是无法直接去请求到硬件的interface,所以无法建立interface(这点还存疑),现在问题pend在这里。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值