Android监听USB插拔事件

本文介绍了在Android中如何监听USB设备的插拔事件,包括通过Mainfest.xml注册和在代码中遍历匹配的方法。重点提及了android.hardware.usb.action.USB_DEVICE_ATTACHED意图以及device_filter.xml配置文件的作用。

Android监听USB插拔事件有两种方式:

一种是在Mainifest.xml中注册

  <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" />

android.hardware.usb.action.USB_DEVICE_ATTACHED即在usb插入是的action意图。在android.hardware.usb.UsbManager类中有多种action的定义,有兴趣的可以查看一下。

device_filter.xml文件是对usb端口和接口的过滤。

<usb-device vendor-id="1118" product-id="688"></usb-device>  
<usb-device vendor-id="1027" product-id="24577" /> <!-- FT232RL -->
<usb-device vendor-id="1027" product-id="24596" /> <!-- FT232H -->
<usb-device vendor-id="1027" product-id="24592" /> <!-- FT2232C/D/HL -->
<usb-device vendor-id="1027" product-id="24593" /> <!-- FT4232HL -->
<usb-device vendor-id="1027" product-id="24597" /> <!-- FT230X -->
<usb-device vendor-id="1412" product-id="45088" /> <!-- REX-USB60F -->

即当包含由上述的usb插入时,即会发送USB_DEVICE_ATTACHED action,启动activity。

另一种方式是在代码中遍历匹配,如下所示:

//使用usb时API版本必须是12以上
UsbManager usbManager=(UsbManager) getSystemService(Context.USB_SERVICE);
Map<String,UsbDevice> deviceList=usbManager.getDeviceList();
Iterator<UsbDevice> iterator=deviceList.values().iterator();
while(iterator.hasNext()){
UsbDevice usbDevice=iterator.next();
int deviceID=usbDevice.getDeviceId();
int productID=usbDevice.getProductId();
int vendorID=usbDevice.getVendorId();
//进行匹配todo....
}

ps:API的最低版本是12或以上,12以下的版本没有此功能。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值