我正在尝试用java创建一个mp3播放器,但我无法弄清楚如何控制它中的音量。
我尝试过这样的事情:
// Adjust the volume on the output line.
if (dataLine.isControlSupported(FloatControl.Type.MASTER_GAIN)) {
FloatControl volume = (FloatControl) dataLine.getControl(FloatControl.Type.MASTER_GAIN);
volume.setValue(100.0F);
}
我写的所有东西,直到这段代码工作正常,但显然dataLine不是控件支持因为它跳过这个IF语句。
我的问题是:你知道为什么会这样吗?我怎么能解决这个问题,以便控制我的申请量?
答案 0 :(得分:2)
您是否曾尝试查看dataLine.getControls()
将返回的内容?
获得相关的控件集 用这条线。某些控件可能只是 线路打开时可用。如果 这种方法没有控制 返回一个长度为0的数组。
如果您想要音量,您不想测试FloatControl.Type.VOLUME
控件吗?
答案 1 :(得分:2)
OK GUYS,
我发现了我的混乱局面。我实际上忘了调用dataLine.open(audioFormat)函数来获取系统资源。
所以代码工作正常,万一有人也遇到这类问题
答案 2 :(得分:0)
float vol=50;
final FloatControl volumeControl = (FloatControl) auline.getControl( FloatControl.Type.MASTER_GAIN );
volumeControl.setValue( 20.0f * (float) Math.log10( vol / 100.0 ) );
vol = 0表示静音。