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

android USB host API翻译

2018年03月31日 ⁄ 综合 ⁄ 共 2086字 ⁄ 字号 评论关闭

USB主机

当你的android设备USB主机模式时,用它来作为主机,可以连接其他usb设备。USB主机模式应用于android 3.1版本以及更高版本。

API 概述


 

表一 USB Host APIs

说明
UsbManager 允许你连接USB设备通信的管理器
UsbDevice 代表一个连接USB设备和包含的方法来访问它的识别信息,接口和端点。
UsbInterface 代表一个USB设备的接口,它为设备定义了一组功能。一个设备可以有一个或多个接口的通信。
UsbEndpoint 代表一个接口端点,即表示该接口的通信通道。一个接口可以有一个或多个端点,通常有输入和输出端点设备的双向通信。
UsbDeviceConnection 代表一个传输数据端点的连接装置。这个类允许你异步发送数据并接收。
UsbRequest 代表了一个异步请求通过UsbDeviceConnection与设备进行通信。
UsbConstants 定义USB常量

在大多数情况下,您需要使用所有这些类(如果你做异步通信是需要UsbRequest)与USB设备通信时。一般来说,您获得一个UsbManager来检索所需的UsbDevice。 当你的设备,你需要找到合适的UsbInterface UsbEndpoint的接口通信。 一旦你获得正确的端点,打开一个UsbDeviceConnection与USB设备通信。

Android 权限要求


下面的列表描述了您在使用USB主机api时需要添加到您的应用程序的清单文件:

•因为不是所有安卓设备支持USB主机api,包含一个< uses-feature >元素,说明您的应用程序使用android.hardware.usb主机功能。

为该API设置应用程序的最低SDK版本为12或更高版本。USB主机API在早起版本是不存在的。

如果你想让你的应用程序支持USB从设备的通知,在你的主activity中添加androiardware.usb.action.USB_DEVICE_ATTACHED并指定一个< intent-filter >和<meta-data>元素<meta-data>元素指向一个外部XML资源文件,用来声明你想检测的信息设备。

在XML资源文件中,声明< usb-device >用来选择USB设备。下面的列表描述了< usb-device >的属性。如果你想过滤特定的设备和使用类,子类,和协议,一般来说,使用供应商和产品ID。如果你想过滤的USB设备,如大规模存储设备或数码相机。您可以指定或所有这些属性。没有指定属性匹配每一个USB设备,所以如果你的应用需要只有这样做:

  • vendor-id
  • product-id
  • class
  • subclass
  • protocol (device or interface)

资源文件保存在res / xml /目录中。资源文件名称(没有.xml扩展)必须与您在<元数据>元素中指定。格式为XML资源文件在下面的例子。

清单 and 资源文件 例子

下面的例子显示了一个清单和相对应的资源文件:

<manifest ...> 
   
<uses-feature android:name="android.hardware.usb.host"
/> 
   
<uses-sdk android:minSdkVersion="12"
/> 
    ... 
   
<application> 
       
<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> 
   
</application> 
</manifest>

在这种情况下,下面的资源文件应保存在res / xml / device_filter。xml和指定任何USB设备指定的属性应该过滤:

<?xml version="1.0" encoding="utf-8"?> 
 
<resources> 
   
<usb-device vendor-id="1234"
product-id="5678"
class="255"
subclass="66"
protocol="1"
/> 
</resources>

设备工作


当用户在android设备上连接USB设备后,Android系统可以确定您的应用程序是和USB设备进行连接。如果是这样,您可以设置与设备进行通信。如果这样,您的应用程序有:

发现并连接USB设备,通过使用一个意图过滤器通知用户连接USB设备或显示已经连接的USB设备。
用户可以连接到USB设备,利用适当的接口端点对USB设备进行读写数据。

 

 

 

 

 

 

抱歉!评论已关闭.