小编典典

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

java

历史和情况:

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

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

问题:

现在需要升级该应用程序以支持Windows Vista和Windows 7,但是由于Windows的新的按应用程序声音体系结构,我无法找到使用Java
Sound API访问主/系统卷的任何方法。

由于应用程序的Windows音量控制是相对于系统音量的,因此不能单独削减Windows音量控制,并且无法保证用户将听到特定级别的已知输出音频。

有人知道在Java中是否有可能这样做,如果可以,怎么办?如果不可能的话,那么您能给出什么指导来实现它的最简单方法吗?(也许是JNI和C-
尽管我以前从未使用过JNI …要注意的陷阱?)


阅读 222

收藏
2020-09-28

共1个答案

小编典典

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

如果要使用Vista(及以后)的声音API,则需要查看IAudioEndpointVolume API。

2020-09-28