用AudioSystem.getMixerInfo(),在idea运行,能获取到音频设备。打包到应用程序里,同样在本机运行,获取到的设备列表是空。
没有报错,没有报权限问题,运行环境完全一样,就是查询不到本机的音频设备。
求解决思路。
(需求是调用扬声器实时播放音频流,主要用java sound api)
用AudioSystem.getMixerInfo(),在idea运行,能获取到音频设备。打包到应用程序里,同样在本机运行,获取到的设备列表是空。
没有报错,没有报权限问题,运行环境完全一样,就是查询不到本机的音频设备。
求解决思路。
(需求是调用扬声器实时播放音频流,主要用java sound api)
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
【问题概括】:这个问题的目的是解决在Java应用程序中无法获取到扬声器设备的问题,尤其是在使用Java Sound API进行音频流的实时播放时。
【问题出现原因】:根据标题和详细内容,问题可能出现的原因包括:
【问题解决方案】:为了解决这个问题,你可以尝试以下步骤:
【提供代码】:以下是一个简单的示例代码,用于获取并列出所有可用的混音器信息:
import javax.sound.sampled.Mixer;
import javax.sound.sampled.Mixer.Info;
public class AudioDeviceList {
public static void main(String[] args) {
Mixer.Info[] mixers = AudioSystem.getMixerInfo();
for (Mixer.Info mixer : mixers) {
System.out.println(mixer.getName());
Mixer mixerInstance = AudioSystem.getMixer(mixer);
if (mixerInstance.isLineSupported(mixerInstance.getLineInfo())) {
System.out.println("Lines supported: " + mixerInstance.getLineInfo().length);
}
}
}
}
【代码运行方式】:运行这段代码,你需要一个Java开发环境,如IntelliJ IDEA或Eclipse。确保你的项目已经包含了Java Sound API的相关依赖。
【代码预期运行结果】:如果代码运行成功,它将打印出系统中所有可用的音频混音器的名称和支持的线路数量。
【推荐相关链接】:
如果问题依旧存在,可能需要进一步检查打包工具的配置或运行时的权限设置。在某些情况下,可能需要修改JVM的系统属性或使用命令行参数来授予应用程序访问音频设备的权利。