Android USB编程基础知识
USB编程 USB编程分为USB HOST(主机模式)和USB Accessory(配件模式) USB相关操作的类都集中在android.hardware.usb命名空间中 1.USB Accessory API简介 配件模式中两个重要的类:UsbAccessory和UsbMnanger,其中通过UsbManager可以获得USB状态信息,并负责和USB配件进行通信;UsbAccessory代表一个USB配件并且包含获取配件特定信息的方法。 定义UsbManager对话和UsbAccessory对象的方法. 通过Context.USB_SERVICE可以实例化UsbManager对象 UsbManager manager=(UsbManager)getSystemService(Context.USB_SERVICE); 通过以下方式获取UsbAccessory对象 UsbAccessory accessory=(UsbAccessory)intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY); 2.Android manifest文件配置 因为不是所有的设备都支持USB accessory API需要在manifest中使用元素声明应用支持它,值为:android.hardware.usb.accessory.支持的最小的api是API Level 12。 如果希望应用在USB配件连接时能够接收通知,则在主Activity中需要为android.hardware.usb.action.USB_ACCESSORY_ATTACHED这个Intent中指定一对和。 元素指向里一个xml资源文件,该文件包含希望得到的配件的一些特定信息。 这个XML资源文件中为希望过滤的配件声明元素。每一个都可以包含“制造商”、“模式”和“版本”这3个属性。资源文件要保存在res/xml/目录下,资源文件的名称必须和在元素中指定的名称相同。 例如: android manifest文件 <manifest ….> … <activity …> … res/xml/有个xml文件accessory_filter.xml <?xml version=”1.0″ encoding=”utf-8″?> 配件使用 1.通过一个可以过滤配件附加事件的意图过滤器来找到合适的连接配件,或者枚举所有已连接的配件来找到合适的某个配件 2.尚未获得许可的用户在与配件通信前需要获得权限 3.通过合适的端口与配件进行读写通信 用户可以通过两种方式发现配件:一种是使用Intent过滤器在用户连接配件时对其进行通知,另一种通过枚举已经连接的所有配件。 意图过滤使用android.hardware.usb.action.USB_ACCESSORY_ATTACHED指定一个意图进行过滤。在这个意图过滤中需要指定一个资源文件来特别说明这个usb配件的属性,例如制造商、模式和版本,当连接的配件和意图过滤条件匹配时,应用会收到一个通知。 在Activity中可以通过以下方式获得UsbAccessory,它代表了所有连接的配件 UsbAccessory accessory=(UsbAccessroy) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY); 枚举所有支持的配件 当应用在运行的时候,可以在应用中枚举所有能够识别的配件。通过getAccessoryList()方法获得一个包含所有已连接USB配件的数组 UsbManager manager=(UsbManager) getSystemService(Content.USB_SERVICE); UsbAccessory[] accessoryList=mamager.getAccessoryList(); 注意:目前一次只能连接一个USB配件,但是这个API设计的在未来可用于支持多个配件 ...