java - 如何在 Java for Windows 中选择和操作不同的音频驱动程序

标签 java audio audio-streaming drivers soundcard

我有一个场景,我在系统上有不同的声卡。我想以这样一种方式在不同的声卡上播放音频流,如果一个声卡正在播放音频,另一个将不会播放它。

假设我有 soundcards A, B and C我有音频流 Audio1,Audio2,Audio3
我想

Soundcard A to play Audio2, meanwhile Soundcard B and C wont play the audio.
Soundcard B to play Audio3, meanwhile Soundcard A and C wont play the audio.
Soundcard A to play Audio2, meanwhile Soundcard A and B wont play the audio.

在这种情况下,我将如何使用 Java 操作不同的声音驱动程序。
我使用的操作系统是 Windows。如果有人在这方面帮助我,我将不胜感激。

最佳答案

您需要使用 JNI 接口(interface)并将选择从 C++ 代码调用到 Windows API。枚举 Windows 设备的代码是 SetupDiGetClassDevs,它将允许您以编程方式选择任何控制面板设备。但是,您的 Java native 接口(interface)代码“Windows 模块”无法在 android 平板电脑上运行......
Windows 上的 Java 代码可移植到 AndroidStudio,因此您的绘图图形功能、对话框、按键/触摸监听器几乎是相同的。 Android 上不需要 JNI“Windows 模块”。 JNI for AndroidStudio 需要 64 位平台才能为 Android 设备编译 c++。所以AndroidStudio确实有一个JNI接口(interface);您只是无法调用 SetupDiGetClassDevs Windows 样式,因为 Android 是基于 Linux 的。

关于java - 如何在 Java for Windows 中选择和操作不同的音频驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47666461/

相关文章:

ios - 有没有办法阻止 avplayer 发送范围 http header 字段

audio - 录制带有大量静音的流式音频

ios - 带有定时元数据 "in the wild"的 HTTP 实时流式传输 (HLS) 广播电台音频流

java - Android:如何设置 MenuButton 的监听器?

java - 对不同语言的 zip 文件进行 zip 提取

java - nanoTime() 在执行时间较长时显示的差异太小

iphone - iPhone将UIImage和CAF Audio合并为AV文件

java - 读取 KNIME 中的先前值

actionscript-3 - 使用Flash/AS3录制内部音频

javascript - 网络音频 API - USB 集线器