Android插入USB设备,自动弹出提示运行apk


原文:http://developer.android.com/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,同样这里也是十六进制的,注意转换。


然后,发布APK,到手机上测试一下吧。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值