1分析已有代码项目

Android从USB声卡录制高质量音频-----使用libusb读取USB声卡数据

github 项目:usbaudio-android-demo

usb声卡取数据项目也是参考的usbaudio-android-demo

其他参考资料 :

Android无驱usb音频实现 
usbaudio-android-demo作者在stackoverflow上的回答 capturing audio using libusb in Android
usb协会uac工具书 USB AUDIO Device CLASS

使用jni,用java类usbAudio类调用native库,类结构及libusb调用流程如下图

对于原作者:

1.alternatesetting

一个接口可以有多种setting,即所谓的alternatesetting,比如在打印机驱动程序里,不同的setting可以表明使用不同的通信协议,又比如在声音设备驱动中setting可以决定不同的音频格式.那么我作为usb设备驱动程序我如何知道这些呢?首先,对于任何一个interface来说,usb spec规定了默认的setting是setting zero,即0号设置是默认设置,而如果一个interface可以有多种setting,那么每一个setting将对应一个interface描述符,换言之,即便你只有一个interface,但是由于你可能有两种setting,那么你就有两个interface描述符,而它们对应于同一个interface编号,或者说我们知道接口描述符里面有一个成员,bInterfaceNumber和一个bAlternateSetting,就是对于这种情况,两个interface描述符将具有相同的bInterfaceNumber,而不相同的是bAlternateSetting,另一方面,因为不同的setting完全有可能导致需要不同的端点,所以也将有不同的端点描述符.

以上摘录自http://javatome.iteye.com/blog/1204903

USB 相关笔记的更多相关文章

  1. HTTPS证书申请相关笔记

    申请免费的HTTPS证书相关资料 参考资料: HTTPS 检测 苹果ATS检测 什么是ECC证书? 渠道2: Let's Encrypt 优点 缺点 Let's Encrypt 的是否支持非80,44 ...

  2. JNI相关笔记 [TOC]

    JNI相关笔记 目录 JNI相关笔记 1 生成native code所需要的头文件 2 JNI提供的一些函数和方法 3 局部引用,全局引用,全局弱引用. 4 异常 1 生成native code所需要 ...

  3. USB学习笔记连载(十一):CY7C68013A的启动方式-EEPROM

       上述的应用笔记中有介绍FX2LP的启动选项,主要包括I2C启动和USB启动. 说白了I2C启动需要使用外部的EEPROM,USB启动,只是使用上位机控制软件将配置程序FX2LP中,不用EEPRO ...

  4. USB相关的网络资料

    相关资源连接: USB官网:http://www.usb.org/home <USB in a NutShell>: http://www.beyondlogic.org/usbnutsh ...

  5. usb开发笔记

    U盘应属于海量存储类. USB海量存储设备,又包括通用海量存储子类,CDROM,Tape等,U盘实际上属于海量存储类中通用海量存储子类.通用海量存储设备实现上是基于块/扇区存储的设备. USB组织定义 ...

  6. USB学习笔记连载(二十一):CY7C68013A进行数据传输(一)

    官方手册中给出了bulkloop参考例程,此例程是PC从端口2发送出数据,然后从端口6接收到数据,那么根据这个思想,可以进行修改,使得PC机接收到的数据不是从EP2发送过来的,而是从外部逻辑,比如FP ...

  7. USB学习笔记连载(二十):FX2LP如何实现高速和全速切换(转载)

    CYPRESS的USB外设控制器CY7C68013A是一款广泛应用于USB打印机,手机,存储设备,USB测试等多个领域的经典产品.该产品符合USB2.0协议规范,支持full speed和high s ...

  8. USB学习笔记连载(十五):USB固件更新以及安装驱动

    前几篇博客已经把如何更改固件程序和更改USB驱动名称,那么接下来就要把之前生成的 .iic 文件烧录到EEPROM里面去,实现USB的C2启动(笔者使用的是此类型,C2启动). 打开Cypress U ...

  9. USB学习笔记-协议

    一.USB设备枚举过程 1.复位从设备使其设备地址为02.先从设备发送读取设备描述符的命令(只读取一次,即使端点0的最大包长小于18字节)3.设备返回设备描述符4.主机返回0长度确认数据包给到设备5. ...

随机推荐

  1. 走进javascript——被忽视的DOM方法和属性

    isEqualNode() isEqualNode方法可以用来判断两个DOM节点是否相同,给我的第一感觉是没用,因为两个DOM的比较很容易让人想成是字符串的比较,心想直接用两个等号不就可以了吗,但马上 ...

  2. Java之建造者模式(Builder Pattern)(转)

    1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示. [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者 ...

  3. Ansible-安装-秘钥-部署-使用

    本文转自:https://www.cnblogs.com/ylqh/p/5902259.html ansiblemaster:192.168.74.146 ansibleslave1 :192.168 ...

  4. 【IT笔试面试题整理】数组中出现次数超过一半的数字

    [试题描述]数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. [试题分析]时间复杂度O(n),空间复杂度O(1) 思路1: 创建一个hash_map,key为数组中的数,value为此数 ...

  5. ActiveMQ与Spring整合-MessageListener

    消费者,使用监听的实现方式. 1. pom.xml 2. 生产者 package org.ygy.mq.lesson04; import javax.jms.JMSException; import  ...

  6. Druid链接池配置加密密码链接数据库

    Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB ...

  7. 南方IT教材反馈

    为了进一步提升教材质量,大家可以在底部留言区反馈您发现的任何问题或建议,谢谢!           最终我们将从所有读者中找出幸运读者发放奖品! 好教材也有我的一份功劳!

  8. VS2010 调试C++项目 fatal error LNK1123 错误解决办法

    最近用VS2010写C++项目,奇怪的是每次生成解决方案都有一个fatal error LNK1123错误,提示生成失败.查阅资料总结解决方案如下: (1)项目——>属性——>连接器——& ...

  9. TRIZ解决问题方法

    个人觉的成功是有规律的,那些成功的人士,都有一套处理事情的秘籍.只要我们的思维方式把那些秘籍融会贯通,并快速执行,我们有一天也会成功的. TRIZ解决问题的5点方法. 1.确定最终目标. 2.列出阻碍 ...

  10. MySQL5.7 常用用户操作

    目录 MySQL5.7 常用用户操作 1. 新建用户 2. 授权 3. 创建用户时授权 4. 设置与更改用户密码(root) 5. 撤销用户权限 6. 删除用户 7. 查看用户的授权 8. 显示当前用 ...