Javaアプリケーション全体のミュートを切り替える関数を作成するにはどうすればよいですか?
実際、すべてのサウンドは、アプリケーションにロードした外部アプレットから発生します。
アプレットをロードするためのコードはここにあります:https ://github.com/Tyilo/RS2Lite/blob/master/src/com/rs2lite/loader/GameAppletLoader.java
Javaアプリケーション全体のミュートを切り替える関数を作成するにはどうすればよいですか?
実際、すべてのサウンドは、アプリケーションにロードした外部アプレットから発生します。
アプレットをロードするためのコードはここにあります:https ://github.com/Tyilo/RS2Lite/blob/master/src/com/rs2lite/loader/GameAppletLoader.java
コンピューターのミキサーにアクセスできるものがありますが、Port
そこでサウンドをミュートすると、コンピューターのすべてのサウンドがミュートされます。したがって、それはおそらく良い選択肢ではありません。
それ以外に、現在再生されているClipまたはSourceDataLineのクラスインスタンスが必要だと思います。ただし、おそらく、アプレットは再生にアプレットのAudioClipクラスを使用します。これは、内部でClip/SourceDataLineを使用する場合と使用しない場合があります...
とにかく、次のアプローチを試すことができます。ほとんどのJavaSound実装で機能するはずです。
AudioSystemから、すべてのミキサーを入手
Mixer.Info[] infos = AudioSystem.getMixerInfo();
for (Mixer.Info info: infos) {
Mixer mixer = AudioSystem.getMixer(info);
}
必ずjavax.sound.sampled。*をインポートしてください
getSourceLines()
返された行ごとに、ミュートコントロールを取得してみてください。
BooleanControl bc = (BooleanControl) line.getControl(BooleanControl.Type.MUTE)
if (bc != null) {
bc.setValue(true); // true to mute the line, false to unmute
}
行を取得する保証はなく、JavaSound実装が特定の行にMUTEコントロールを提供する保証もないことに注意してください。