【问题标题】:Audio input through USB in AndroidAndroid中通过USB输入音频
【发布时间】:2017-02-16 10:19:55
【问题描述】:

我一直在想,如何在 Android 中通过 USB 捕获音频输入。

我的场景是通过外部硬件接收音频并通过 android 应用播放接收到的音频。此传输将通过 USB 完成。

有没有办法使用 Android SDK / Android NDK 来做到这一点。

任何建议都会对我有所帮助。

任务完成 Right by time I am able to interact with Hardware using CDC class and also able to play some random noisy audio through USB in my app. Neither I am able to get clear sound by that approach, nor there is consistency within the transmission of audio.

谢谢。

问候,维韦克

【问题讨论】:

  • 您使用的外部硬件是什么?是 USB 耳机还是其他音频设备?还是你自己的硬件?如果是后者,那么其中使用的 USB 芯片/软件是什么?由于您的问题并未显示您对 USB 的理解程度,因此了解这些内容很重要,以确保答案与您正在做的事情一致。
  • 我正在尝试通过我的 android 应用程序获取 FM 广播音频。这里 FM 收音机是一个芯片,将连接到 android 设备的 USB 端口。更多参考:play.google.com/store/apps/…
  • 好的。如果您不自己实现 USB 加密狗,而是使用一些现有的硬件(例如adafruit.com/product/1497),那么找出设备包含的 USB 类并为它们实现(或希望只是使用)驱动程序非常重要。查找有关加密狗信息的一种方法是将其插入 Windows PC 并使用例如这个:nirsoft.net/utils/usb_devices_view.html 或这个:msdn.microsoft.com/en-us/library/windows/hardware/… 来发现它实现的设备类。很可能有音频类。
  • 实际上我在 Android 端找不到任何 USB 音频类实现,即什么音频类回调用于从硬件等接收音频数据?
  • 如果在那个级别上工作,你可能需要去 NDK。我认为,只有当 Android 将您的加密狗检测为音频设备时,您才能使用 Java 级别。如果加密狗没有在此处“主机模式”下列出的内容:source.android.com/devices/audio/usb.html,默认情况下不支持。

标签: android usb usb-drive usbserial cdc


【解决方案1】:

大多数现代 Android 设备都可以充当 USB 主机。所以你可以连接例如用于捕获音频的 USB 麦克风。 Android 还包含对 usb_audio 类的支持。使用它来访问设备上的音频。

由于您已经尝试过通信设备类 (CDC),因此您了解 Android 的 USB 主机功能。现在您需要确保您的外围设备已实现 USB 音频类(音频源部分),并使您的应用程序使用音频类来获取音频。这很好地解释了here,因此将所有信息复制到这篇文章是没有意义的。如果您已经在使用音频类,该页面可能会解释您遇到的一些问题(例如使用错误的格式)。

USB 音频类规范可以在USB.org website 找到。问题在于 Audio 类非常大,Android 可能不支持所有内容。

【讨论】:

  • 感谢您的回复。直到我通过 CDC 配置文件本身发送音频数据。想知道我们是否可以使用 JAVA 使用 USB 音频类,或者我们需要使用本机 NDK/C++ 代码对该部分进行编码。如果您能在 USB 音频课程部分为我提供帮助,那就太好了。
  • 我上次使用 USB 音频是在 Symbian 上工作,所以我可能无法轻松提供所有与 Android 相关的细节。也可以通过 CDC 传输音频,但质量不会很好,您需要找到一种方法将音频正确打包到 USB 帧。 Audio 类中使用的同步端点是为高带宽流设计的,所以效果要好得多。据我了解,如果您的 Android 设备已经支持 USB 音频类的相关部分(可以使用 USB 麦克风),您可以在 Java 级别工作,除非您需要更多控制和高质量。
  • 再次感谢您的回复。会接受你所有的建议。希望能解决这个问题。
猜你喜欢
  • 2017-12-17
  • 1970-01-01
  • 2021-09-10
  • 2014-09-06
  • 1970-01-01
  • 2012-11-14
  • 2020-12-15
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多