现在的位置: 首页 > 综合 > 正文

Android的联通性—USB的从属模式(三)

2013年08月08日 ⁄ 综合 ⁄ 共 1441字 ⁄ 字号 评论关闭

跟附件一起工作

当用户把USB附件连接到Android设备时,Android系统能够判断你的应用程序是否对接入的附件感兴趣。如果感兴趣,你能够跟期望的附件建立通信。以下是你的应用程序要做的事情:

1. 通过使用过滤附件设备接入事件的Intent过滤器或列举已经接入的附件设备来发现对应的附件设备;

2. 如果不是已知的附件设备,就要询问用户是否允许跟该附件设备通信;

3. 通过读写对应接口端点上的数据来跟附件设备通信。

发现附件设备

你的应用程序既可以通过用户接入附件设备时的Intent通知,也可以通过列举已经接入的附件设备来发现你想要的附件设备。如果你想要你的应用能够自动检测到期望的附件设备,那么使用Intent过滤器是有用的。如果你想要获取所有已连接的附件设备列表,或者你的应用程序并不过滤特定的Intent,那么使用列举的方法是有用的。

使用Intent过滤器

你可以指定一个android.hardware.usb.action.USB_ACCESSORY_ATTACHED类型的Intent过滤器,以便你的应用程序能够发现特殊的USB附件设备。跟这个Intent过滤器一起,你还需要指定一个包含USB附件设备属性的资源文件,这些属性包括:制造商、模式、版本。

下例显示了如何声明一个Intent过滤器:

<activity ...>

   
...

   
<intent-filter>

       
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />

   
</intent-filter>

   
<meta-data android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"

       
android:resource="@xml/accessory_filter" />

</activity>

下例是对应的资源文件的声明:

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

<resources>

   
<usb-accessory manufacturer="Google, Inc." model="DemoKit" version="1.0" />

</resources>

在你的Activity中,你能够从Intent对象中获得代表接入的附件设备的UsbAccessory对象.

使用add-on类库的情况:

UsbAccessory accessory
=UsbManager.getAccessory(intent);

使用平台API的情况:

UsbAccessory accessory
=(UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);

列举附件设备

在应用程序运行时,你能够让你的应用程序列举出已经识别出的所有附件设备。

使用getAccessoryList()方法来获取所有已连接的USB附件设备:

UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE);

UsbAccessory[] accessoryList = manager.getAcccessoryList();

注意:当前,一次只支持连接一个附件设备,但是在未来,该API被设计成要支持多个附件设备。

抱歉!评论已关闭.