我认为标题说明了一切。我的Java程序使用声音,我想在启动时进行检查,而不是捕获异常。如果有帮助,我正在使用FreeTTS-https://freetts.sourceforge.io/

最佳答案

您可以在java AudioSystem类中查询可用行:

/**
 * Gets a list of all audio output devices in the system
 */
public static List<Mixer> getAvailableAudioOutputDevices() {
    final ArrayList<Mixer> available = new ArrayList<>();
    final Mixer.Info[] devices = AudioSystem.getMixerInfo();
    final Line.Info sourceInfo = new Line.Info(SourceDataLine.class);
    for (int i=0; i<devices.length; ++i) {
        final Mixer.Info mixerInfo = devices[i];
        final Mixer mixer = AudioSystem.getMixer(mixerInfo);
        if (mixer.isLineSupported(sourceInfo)) {
            // the device supports output, add as suitable
            available.add(mixer);
        }
    }
    return available;
}

请注意,这并不明确表示声卡,而是表示提供音频输出的设备。那不一定是一样的。

10-07 20:14