admin管理员组文章数量:1569316
原文:http://developer.android/guide/topics/connectivity/usb/host.html
USB HOST模式开发下可能会遇到这个问题。
第一步是在AndroidManifest.xml文件中修改,主意下面红色字体
<manifest ...> <uses-featureandroid:name="android.hardware.usb.host"/> <uses-sdkandroid:minSdkVersion="12"/> ... <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"/> </activity> </application> </manifest>
一般调用的activity都是Main和Lanunch入口,加入上面的action后,在SDK中以Run As Android Application时,仅执行安装动作,不会自动调用到该Activity了,需要自己点安装图标运行apk了,不知道算不算问题。这个不管它了。
接下来还有一个@xml/device_filter需要自己创建,xml文件夹需要在res目录下,device_filter.xml在xml下。这个名字一致即可,可以自己定义名称。device_filter.xml的内容如下:
<?xml version="1.0" encoding="utf-8"?> <resources> <usb-device vendor-id="1234"product-id="5678"class="255"subclass="66"protocol="1"/> </resources>
这里usb-device应该是不能改的关键字,后面的参数是用来过滤设备的,如果你只想检查某一个设备,就采用上面的格式,如果是想检查多个或不限定硬件,可以指定一个甚至一个参数都没有,然后在代码中去枚举设备,这里先略过。
指定设备的话,关键是我红色标记出来的两个参数,USB设备都有这两个属性,怎么知道这两个值呢?在windows中,可以通过设备管理器的通用串行总线控制器找到这个USB设备(不知道哪个?插拔一下看看吧),然后在属性-->详细信息中选择硬件ID,在值的区域可以看到USB\VID_AAAA&PID_BBBB。这个AAAA就是vendor-id,BBBB就是product-id,但要注意,你这里看到的是十六进制的值,写入XML中时一定要转成十进制才行。
如果是linux系统,在终端命令行输入lsusb,找到我们需要的设备(同理,不知道哪个插拔一下,运行两次lsusb)
b074@gliethttp:~$ lsusb
Bus 001 Device 001: ID AAAA:BBBB ......
其中AAAA就是vendor-id,BBBB就是product-id,同样这里也是十六进制的,注意转换。
版权声明:本文标题:Android插入USB设备,自动弹出提示运行apk 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727646465a1123428.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论