有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用java在mac上控制macos麦克风的声级

我想用java控制OSX上的麦克风音量。我使用了下面的源代码,但不支持Mac OS。有没有办法用java控制OSX上的麦克风音量

public static void setDeviceSensitivity(final int sensitivity) {
    final Port lineIn;
    //  Mixer.Info[] mixerInfoPool=AudioSystem.getMixerInfo();

    final Mixer mixer = AudioSystem.getMixer(null);
    try {
        if (mixer.isLineSupported(Port.Info.LINE_IN)) {
            lineIn = (Port) mixer.getLine(Port.Info.LINE_IN);
            lineIn.open();
        } else if (mixer.isLineSupported(Port.Info.MICROPHONE)) {
            lineIn = (Port) mixer.getLine(Port.Info.MICROPHONE);
            lineIn.open();
        } else if (mixer.isLineSupported(Port.Info.HEADPHONE)) {
            lineIn = (Port) mixer.getLine(Port.Info.HEADPHONE);
            lineIn.open();
        } else {
            System.out.println("Unable to get Input Port");
            return;
        }
        lineIn.getControls();

        if (lineIn.isControlSupported(FloatControl.Type.MASTER_GAIN)) {
            System.out.println("kewl");
        }

        final CompoundControl cc = (CompoundControl) lineIn.getControls()[0];
        final Control[] controls = cc.getMemberControls();
        for (final Control c : controls) {
            if (c instanceof FloatControl) {
                System.out.println("BEFORE LINE_IN VOL = "
                        + ((FloatControl) c).getValue());
                ((FloatControl) c).setValue((float) sensitivity / 100);
                System.out.println("AFTER LINE_IN VOL = "
                        + ((FloatControl) c).getValue());
            }
        }
    } catch (final Exception e) {
        System.out.println(e);
    }
   }

共 (1) 个答案

  1. # 1 楼答案

    拿起话筒:

        Mixer.Info microphone = null;
        for (Mixer.Info info : AudioSystem.getMixerInfo()) {
            System.out.println(info);
            if (info.getName().equals("Port Built-in Microphone")) {
                System.out.println("found " + info);
                microphone = info;
            }            
        }
    
        final Mixer mixer = AudioSystem.getMixer(microphone);