迫于需要开始一个app实现安卓手机控制外设,要学习一下usb-host这方面的知识,所以记录一下自己的学习经历。关于usb-host这一块的资料国内还是比较少的,我只能学到哪里就记录到哪里了。

简单来说usb-host模式就是把手机当成PC来使用了,手机通过Mini-usb+OTG可以连接外部设备(我是这么简单的理解的),打开Google的安卓开发文档,关于这面方面的寥寥就一页,今天先说下识别的步骤吧,关于安卓开发的一些基础工作我就不说了,这些资料网上搜索一下还是比较全的。

1.发现设备(添加USB HOST权限和意图(Intent)过滤器)

<manifest ...>
<uses-feature android:name="android.hardware.usb.host" />//添加的权限
<uses-sdk android:minSdkVersion="12" />//sdk版本
...
<application>
<activity ...>
...
<intent-filter>//过滤器
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter> <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/device_filter" />//这个需要在res目录下自己新建立的一个文件夹(记得不太清楚了,和layout布局文件夹同一级),然后里面新建一个device_filter.xml文件
</activity>
</application>
</manifest>

2.在device.xml文件夹中需要添加的内容(依旧借鉴Google代码)

<?xml version="1.0" encoding="utf-8"?>

<resources>
<usb-device vendor-id="1234" product-id="5678" class="255" subclass="66" protocol="1" />
</resources>

自己写的时候主要就是修改VID和PID的值了,查看PID和VID我的方法是用一个软件“USB端口查看器”检测的,看图:



在device information下的Device ID后面就是我们需要的VID和PID,如我的鼠标的VID=0461 VID=4D22,但是需要注意的是,这里显示的十六进制,二在device_filter.xml文件里面需要转换成十进制的数字,否则无法识别(一开始我也在这里不知道,还好有一个师姐提醒了我一下)

到这里基本上打包成apk安装包后,安装到手机并且连接外设后手机就会弹出“调试信息”(姑且这么叫吧),点击确定后就是运行apk程序,今天先写到这里吧,明天有时间写下获取相应的权限与设备通信这一块,对我来说也是有点吃力,毕竟以前没有学习过,为了毕业只能硬着头皮上啊

在你的Activity中你可以获得UsbDevice对象,它代表了从意图过滤器中连接的设备,代码如下:

UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

最新文章

  1. ASP.NET Core &quot;完整发布,自带运行时&quot; 到jexus
  2. 安卓Design包之TabLayout控件的简单使用
  3. Selenium 元素定位
  4. as 中的反射
  5. Linux进程间通信IPC学习笔记之管道
  6. OpenSessionInViewFilter 的配置及替代方案(转)
  7. 51单片机C语言学习笔记8:单片机C51编程规范
  8. Winform制作圆弧panel
  9. SpringBoot快速开发REST服务最佳实践
  10. Swift基础之UIPickerView和小animate的使用
  11. Java-对象及变量的并发访问小结
  12. [javaEE] web应用的目录结构&amp;配置虚拟主机
  13. w3cscholl的在线代码编辑工具
  14. HttpWebRequest、HttpWebResponse获取网页
  15. 一款CSS3仿Google Play的垂直菜单
  16. 网站/IIS/Web/WCF服务 访问共享目录 映射 的解决方案
  17. Redis的Pub/Sub机制存在的问题以及解决方案
  18. 腾讯云CentOS安装JDK1.8
  19. Excel信息提取之二
  20. easyui datagrid editor onBeforeEdit事件下使用getEditor和getEditors失效

热门文章

  1. CSS Sprites技术原理和使用
  2. CF1163E
  3. 根据ThinkPHP官方文档学习opensns框架
  4. xshell安装错解决方案
  5. vue搭建vue-cli脚手架项目
  6. Robot Framework:环境安装
  7. PHP的开源产品discuz
  8. 【Codeforces Round #429 (Div. 2) C】Leha and Function
  9. Android中怎么破解游戏之修改金币数
  10. delphi INI文件