如何判断最终用户是否有Java声卡?

时间:2017-04-20 14:09:17

标签: java audio

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

1 个答案:

答案 0 :(得分:1)

您可以在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;
}

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