2011-08-08 22 views
4

如何创建一个切换整个J​​ava应用程序静音的功能?如何创建静音选项

实际上,所有声音都来自我在应用程序中加载的外部小程序。

加载applet的代码是在这里:https://github.com/Tyilo/RS2Lite/blob/master/src/com/rs2lite/loader/GameAppletLoader.java

+0

当调用applet.stop()方法时会发生什么?声音是否停止? –

+2

它崩溃,所以你可以说声音停止... – Tyilo

+0

添加有问题。这是游戏。我不想停止图形和东西,只是声音。 – Tyilo

回答

4

还有就是Port使您可以访问计算机的混频器,但静音声音会有静音电脑的所有声音。所以这可能不是一个好的选择。

除此之外,我相信你需要当前正在播放的Clip或SourceDataLine的类实例。然而,最有可能的是,小应用程序使用Applet的AudioClip类来播放,这可能会也可能不会在内部使用Clip/SourceDataLine ...

无论如何,您可以尝试以下方法,它应该适用于大多数Java Sound实现:

  • 从AudioSystem,得到所有搅拌机

    Mixer.Info[] infos = AudioSystem.getMixerInfo(); 
    for (Mixer.Info info: infos) { 
        Mixer mixer = AudioSystem.getMixer(info); 
    } 
    

    确保导入的javax.sound.sampled。*

  • 从每个混频器,retrie VE与 getSourceLines()
  • 每个返回行回放线路,尽量使静音控制:

    BooleanControl bc = (BooleanControl) line.getControl(BooleanControl.Type.MUTE) 
    if (bc != null) { 
        bc.setValue(true); // true to mute the line, false to unmute 
    } 
    

注意,也不能保证你会得到线,并不能保证Java Sound实现为给定行提供了MUTE控件。

+0

如何获得所有混音器? – Tyilo

+0

@Tyilo,我已经更新了答案。 – Florian

+0

我如何在我的代码中实现它(请参阅问题) – Tyilo