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

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

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

API概要

因为该附加的类库是一个针对框架API的封装,所以支持USB从属模式的类都是类似的。即使你正在使用这个附加类库,你也能够使用android.hardware.usb的参考文档。

注意:但是,在附加类库和框架API之间有一点使用上的差异,你应该注意。

下表介绍了支持USB从属模式API的类:

介绍

UsbManager

允许你列举被连接的USB附件,并跟它们通信。

UsbAccessory

代表一个USB附件,并包含了访问该附件标识信息的方法。

Add-on类库和平台API之间在使用上的差异

在使用Google APIs add-on类库和平台API之间有两种使用上的差异。

如果使用add-on类库,必须用下列方式获取UsbManager对象:

UsbManager manager
=UsbManager.getInstance(this);

否则,必须用下列方式获取UsbManager对象:

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

在使用Intent过滤器过滤一个被连接的附件时,在传递给你的应用程序的Intent对象内部包含了UsbAccessory对象。如果你正在使用add-on类库,就必须使用以下方式来获取UsbAccessory对象:

UsbAccessory accessory
=UsbManager.getAccessory(intent);

否则,必须使用以下方式来获取UsbAccessory对象:

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

Android清单要求

下面列出了在使用USB从属模式API工作之前,需要添加到你的应用程序清单文件中的内容:

1. 因为不是所有的Android设备都保证支持USB从属模式API,所以要在<uses-feature>元素中声明使用android.hardware.usb.accessory功能;

2. 如果你是使用add-on类库,还要添加<uses-library>元素来指定要使用的com.android.future.usb.accessory类库;

3. 如果你是使用add-on类库,则要设置该应用程序的SDK的最小版本号是API Level 10,如果使用的是android.hardware.usb包,则最小版本号是API Level 12.

4. 如果你希望获得连接USB附件的通知,就要在你的主Activity中给<intent-filter>和<meta-data>元素指定android.hardware.usb.action.USB_ACCESSORY_ATTACHED类型的Intent。<meta-data>元素要指向一个外部的XML资源文件,该文件中声明了有关你想要检测的附件的标识信息。

在这个XML资源文件中,用<usb-accessory>元素来声明你想要过滤的附件。每个<usb-accessory>元素能够有以下属性:

manufacturer

model

version

该资源文件保存在res/xml目录中。资源文件名称(不含.xml扩展名)必须跟<meta-data>元素中指定的名称相同。下例显示该XML资源文件的格式:

清单和资源文件的示例

下例显示了清单和它对应的资源文件:

<manifest ...>

   
<uses-feature android:name="android.hardware.usb.accessory" />

   

   
<uses-sdk android:minSdkVersion="<version>" />

   
...

   
<application>

     
<uses-library android:name="com.android.future.usb.accessory" />

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

   
</application>

</manifest>

在这种情况下,以下资源文件应该被保存在res/xml/accessory_filter.xml文件中,并且指定了要过滤的附件所对应的模式、制造商和版本号。USB附件会把这些属性发送给Android设备:

<?xml version="1.0" encoding="utf-8"?>
 
<resources>
    <usb-accessorymodel="DemoKit"manufacturer="Google"version="1.0"/>

</resources>

抱歉!评论已关闭.