如何在Java中以独占方式访问音频线路?

如何在Java中以独占方式访问音频线路?,java,audio,Java,Audio,我有一个java应用程序,它可以播放音频文件。因此,在我的java应用程序播放音频文件或声音之前,我想禁用所有其他应用程序的声音,如Windows media player、VLC player等,如果它们当时正在播放 在我的java应用程序完成播放音频文件后,我想再次取消静音 有没有办法做到这一点 谢谢不行,这与Java无关,但操作系统不允许这样做。表现良好的应用程序在失去音频焦点时应该暂停播放。在普通的java AFAIK中无法做到这一点。您需要使用JNI或JNA。有一些用于音频访问的API

我有一个java应用程序,它可以播放音频文件。因此,在我的java应用程序播放音频文件或声音之前,我想禁用所有其他应用程序的声音,如Windows media player、VLC player等,如果它们当时正在播放

在我的java应用程序完成播放音频文件后,我想再次取消静音

有没有办法做到这一点


谢谢

不行,这与Java无关,但操作系统不允许这样做。表现良好的应用程序在失去音频焦点时应该暂停播放。

在普通的java AFAIK中无法做到这一点。您需要使用JNI或JNA。有一些用于音频访问的API可以做到这一点,例如,您可以使用java的portaudio(有人最近宣布了一个开源项目,可以做到这一点,如果您找不到,请在portaudio maling列表中查询),但这有一些问题:

  • 它将使您的代码依赖于平台
  • 它不会一直工作(例如,如果您没有权限,或者其他软件已经在使用该设备,或者该设备没有独占模式,或者其他任何原因)
  • 您必须重新编程音频代码以使用PA接口而不是javasound

事实上,一些操作系统和音频API确实具有独占访问模式,但我相信您是正确的,当它存在时,java并不直接支持它。Bjorn Roche,感谢您的帮助。上述问题对我的项目来说是可以接受的。我找了你的推荐信,但找不到任何相关的。你有什么可以帮助的链接吗?