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

跟附件一起工作

当用户把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被设计成要支持多个附件设备。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值