Java Sound API,用于访问Vista和Win 7中的系统/主音量控制

时间:2009-11-13 06:34:10

标签: java windows-7 windows-vista audio

历史&情况:

我目前正致力于更新几年前为客户开发的Java应用程序(在WinXP上运行),并用于测试和培训具有某些听力障碍的人。购买此应用程序的用户可获得特定的USB声音设备和耳机。

该软件最重要的要求之一是音频必须以特定的分贝声级播放给用户。使用Java Sound API,该应用程序被开发用于动态调整Windows Volume到计算的级别(基于在开发过程中校准USB声音设备和耳机时所做的测量)。

问题:

现在需要升级应用程序以支持Windows Vista和Windows 7,但是由于Windows的新应用程序声音架构,我一直无法找到使用Java Sound访问Master / System卷的任何方法API。

应用程序的Windows音量控制本身并没有削减它,因为它与系统音量相关,并且无法保证用户将听到特定的已知级别的输出音频。

有人知道是否有可能在Java中这样做,如果是,那么如何?如果不可能,那么您能否就可能最简单的方法提供指导? (可能是JNI和C - 虽然我之前从未使用过JNI ......任何需要注意的问题?)

2 个答案:

答案 0 :(得分:2)

如果您在Windows XP兼容模式下运行应用程序,它应该可以工作(这取决于Java Sound API如何与硬件卷交互)。

如果您想使用Vista(及以上)声音API,您需要查看IAudioEndpointVolume API。

答案 1 :(得分:0)

我的猜测是,因为您使用的是USB设备,所以您的Java声音API无法访问正确的频道。

您可以查看how to adjust the master volume in Windows XP。我知道你不是在XP工作,但看看如何访问该链接上的特定行和混音器。您可能需要进行一些实验才能找到正确的线和调音台组合,或者为用户提供一个GUI,使他们能够选择正确的线和调音台组合。

我在Windows 7中运行了使用此方法的应用程序,所以我怀疑这是O兼容性问题。

相关问题