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

Posted

技术标签:

【中文标题】如何在 Java for Windows 中选择和操作不同的音频驱动程序【英文标题】:How to select and manipulate different audio drivers in Java for Windows 【发布时间】:2017-12-06 03:46:14 【问题描述】:

我有一个场景,我在系统上有不同的声卡。我想在不同声卡上播放音频流,这样如果一个声卡正在播放音频,其他声卡就不会播放。

假设我有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。如果有人在这方面帮助我,我将不胜感激。

【问题讨论】:

不要为此使用 Java。 我要处理这个场景的应用程序是基于Java的,所以必须使用Java。 您的假设不正确。仅仅因为您正在处理 Java 应用程序并不意味着该项目的所有部分都必须使用 Java 完成。 @HovercraftFullOfEels 我有使用 java 的限制。如果我能在 java 中获得某种帮助,我将不胜感激。 【参考方案1】:

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

【讨论】:

如果我的应用程序是基于 Java 而不是基于 Andriod 的情况下,此解决方案是否有效?

以上是关于如何在 Java for Windows 中选择和操作不同的音频驱动程序的主要内容,如果未能解决你的问题,请参考以下文章

xampp for Windows:如何选择绝对路径?

github for windows安装不了

如何安装PostgreSQL 9.2.4 For Windows

如何安装PostgreSQL 9.2.4 For Windows

如何安装PostgreSQL 9.2.4 For Windows

如何搭建windows azure 开发环境 for xp