跟设备一起工作
当用户把USB设备接入到Android设备上时,Android系统能够判断你的应用程序是否对接入的设备感兴趣。如果是你的应用程序感兴趣的设备,你就可以跟你期望的设备建立通信。以下是你的应用程序必须要做的工作:
1.使用以下两种方法之一来发现接入的UDB设备:
A.使用Intent过滤器,过滤用户接入USB设备时所发出的通知;
B.列举已经接入的USB设备。
2.如果没获取接入USB设备的权限,会向用户请求接入USB设备的权限。
3.通过读写对应接口端点上的数据来跟USB设备通信。
发现设备
用户既可以通过使用用户接入USB设备时所发出Intent过滤通知,也可以通过列举已经接入的USB设备,来发现USB设备。如果你希望你的应用程序能够自动的检测到你所期望的USB设备,那么要使用Intent过滤器。如果你想要过的接入的所有的已经接入的设备列表,或者是你的应用程序没有过滤对应的Intent对象,那么要使用列举的方法。
使用Intent过滤器
为了让你的应用程序发现一个特殊的USB设备,你可以指定一个android.hardware.usb.action.USB_DEVICE_ATTACHED类型的Intent过滤器。跟这个Intent过滤器一起,你还需要指定一个指定了USB设备属性的资源文件,如果产品和供应商ID。当用户接入的设备跟你的设备过滤器匹配的时候,系统会显示一个对话框,询问你是否允许它们启动你的应用程序。如果用户接收,应用程序会自动的被授予访问设备的权限,一直到设备断开连接。
以下示例演示了如何声明Intent过滤器:
<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>
以下示例演示了如何声明对应的你感兴趣的USB设备的资源文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="1234" product-id="5678" />
</resources>
在你的Activity中,按照如下的方法,你可以从Intent对象中获得一个代表接入的设备的UsbDevice对象:
UsbDevice device=(UsbDevice)
intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
列举设备
当你的应用程序要在运行时检测当前接入的所有的USB设备时,它可以列举总线上的设备。使用getDeviceList()方法来获取已经接入的所有的USB设备的hash map。该hash map使用USB设备的名称做key:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
...
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
UsbDevice device = deviceList.get("deviceName");
如果你愿意,也可以使用hash map的迭代器来处理每个设备:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
...
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){
UsbDevice device = deviceIterator.next()
//your code
}
跟设备一起工作
当用户把USB设备接入到Android设备上时,Android系统能够判断你的应用程序是否对接入的设备感兴趣。如果是你的应用程序感兴趣的设备,你就可以跟你期望的设备建立通信。以下是你的应用程序必须要做的工作:
1.使用以下两种方法之一来发现接入的UDB设备:
A.使用Intent过滤器,过滤用户接入USB设备时所发出的通知;
B.列举已经接入的USB设备。
2.如果没获取接入USB设备的权限,会向用户请求接入USB设备的权限。
3.通过读写对应接口端点上的数据来跟USB设备通信。
发现设备
用户既可以通过使用用户接入USB设备时所发出Intent过滤通知,也可以通过列举已经接入的USB设备,来发现USB设备。如果你希望你的应用程序能够自动的检测到你所期望的USB设备,那么要使用Intent过滤器。如果你想要过的接入的所有的已经接入的设备列表,或者是你的应用程序没有过滤对应的Intent对象,那么要使用列举的方法。
使用Intent过滤器
为了让你的应用程序发现一个特殊的USB设备,你可以指定一个android.hardware.usb.action.USB_DEVICE_ATTACHED类型的Intent过滤器。跟这个Intent过滤器一起,你还需要指定一个指定了USB设备属性的资源文件,如果产品和供应商ID。当用户接入的设备跟你的设备过滤器匹配的时候,系统会显示一个对话框,询问你是否允许它们启动你的应用程序。如果用户接收,应用程序会自动的被授予访问设备的权限,一直到设备断开连接。
以下示例演示了如何声明Intent过滤器:
<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>
以下示例演示了如何声明对应的你感兴趣的USB设备的资源文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="1234" product-id="5678" />
</resources>
在你的Activity中,按照如下的方法,你可以从Intent对象中获得一个代表接入的设备的UsbDevice对象:
UsbDevice device=(UsbDevice)
intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
列举设备
当你的应用程序要在运行时检测当前接入的所有的USB设备时,它可以列举总线上的设备。使用getDeviceList()方法来获取已经接入的所有的USB设备的hash map。该hash map使用USB设备的名称做key:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
...
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
UsbDevice device = deviceList.get("deviceName");
如果你愿意,也可以使用hash map的迭代器来处理每个设备:
UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);
...
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){
UsbDevice device = deviceIterator.next()
//your code
}
分享到:
相关推荐
联通G-140W-MH_3FE46872BGAA43 贝尔G140W-MH
厦门联通NB-IoT解决方案交流
中国联通5G-A通感算融合技术白皮书.pdf
GGV4.PL95A-21-CU-ASB.LIAONING-I-120E_3FE56752AOCK01_R1B01D35031-4534
联通---联通5G未来社区白皮书-2020.5-58页精品报告2020.pdf
广东联通NB-IoT政策及行业解决方案201811v6(全省培训).pptx
联通宽带-2110201719-1.awb
电信运营商的“互联网化”“数字化”是什么? ——Telco 2020会是怎样? ——运营商与泛运营商们的商业定位 ——电信运营+ X
中联通--机房监控方案.pdf
联通-医院智慧医疗方案(案例)联通-医院智慧医疗方案(案例)联通-医院智慧医疗方案(案例)联通-医院智慧医疗方案(案例)联通-医院智慧医疗方案(案例)联通-医院智慧医疗方案(案例)联通-医院智慧医疗方案(案例)联通-医院...
全国IP地址路由表(联通)-数据更新时间2019-11-05 全国IP地址路由表(移动)-数据更新时间2019-11-05 全国IP地址路由表(教育网)-数据更新时间2019-11-05 全国IP地址路由表(其他)-数据更新时间2019-11-05 压缩包内容为...
联通中兴Wi-Fi6技术白皮书.pdf
联通3G-WAP-VAC订购和退订确认-webservice
联通-5G+智慧医疗”行业解决方案联通-5G+智慧医疗”行业解决方案联通-5G+智慧医疗”行业解决方案联通-5G+智慧医疗”行业解决方案联通-5G+智慧医疗”行业解决方案联通-5G+智慧医疗”行业解决方案联通-5G+智慧医疗”...
重庆联通--代理商管理系统经验介绍.pptx
中国联通CUBE-RAN白皮书
中国联通CUBE-CDN技术白皮书
联通3G-WSDL文件, 功能:同步订购和推定接口