用Java获取系统音频级别

如何用Java获取主卷? 我想制作一个程序,显示( NOT CHANGE )这个值(可能在JProgressBar或类似的东西上)作为最大设置的百分比。 我可能还想将当前声级显示为最高可能声级的百分比,但这不是必需的。

我不完全确定,但您可以查看( Java Media Framework – JMF )。 您可以通过该库控制声音,因此我认为您也可以获得有关它的详细信息。 它可能只是应用程序的声级,所以我可能错了。

虽然没有使用JProgressBar
这可能有帮助

 package test; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.FloatControl; import javax.sound.sampled.Line; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Mixer; import javax.swing.BoxLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; public class SoundMeter { JFrame j; public SoundMeter() { j = new JFrame("SoundMeter"); j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); j.setLayout(new BoxLayout(j.getContentPane(), BoxLayout.Y_AXIS)); printMixersDetails(); j.setVisible(true); } public void printMixersDetails(){ javax.sound.sampled.Mixer.Info[] mixers = AudioSystem.getMixerInfo(); System.out.println("There are " + mixers.length + " mixer info objects"); for(int i=0;i 

你可能会有点不那么粗暴,而不是说“不帮助我”。

否则,这是大局,使用AlexR示例中提到的Sound API 🙁 该论坛post中有很多实用的细节,并且有一些Oracle文档用于处理带控件的音频 )

  • 一旦你得到一个代表你想要控制的声音输出行的Line对象,获得音量控制是相当简单的:

     line.open(); // May be necessary if the line is not already opened. FloatControl volumeControl = (FloatControl) masterLine.getControl(FloatControl.Type.VOLUME); 
  • 获取“ Line ”对象充其量只是依赖于平台。 您必须使用AudioSystem静态方法在运行时列出MixerLine ,以确定您想要的线路。 也可能是主线不直接支持音量控制,而只能通过CompoundControl 。 (通过层次结构,你猜对了,平台依赖)。