【问题标题】:How to get exclusive access to audio line in Java?如何在Java中获得对音频线的独占访问权限?
【发布时间】:2012-10-16 11:31:40
【问题描述】:

我有一个播放音频文件的 java 应用程序。因此,在我的 java 应用程序播放音频文件或声音之前,如果当时正在播放所有其他应用程序声音,例如 Windows 媒体播放器、VLC 播放器等,我想静音。

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

有没有办法做到这一点?

谢谢

【问题讨论】:

    标签: java audio


    【解决方案1】:

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

    【讨论】:

    • 实际上,一些操作系统和音频API确实有独占访问模式,但我相信你是对的,当它存在时,java并不直接支持它。
    【解决方案2】:

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

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

    【讨论】:

    • 比约恩·罗氏,感谢您的帮助。我的项目可以接受所提到的问题。我已经搜索了您的参考资料,但找不到任何相关内容。你有一些可以提供帮助的链接吗?
    猜你喜欢
    • 2016-07-14
    • 2016-08-05
    • 1970-01-01
    • 2013-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    相关资源
    最近更新 更多