两个音池音量控制
Posted
技术标签:
【中文标题】两个音池音量控制【英文标题】:Two soundpool volume controls 【发布时间】:2017-04-27 11:17:49 【问题描述】:我正在制作一个白噪声应用程序,我想独立控制每个声音的音量。这可能吗?
这是我现在的 onCreate。
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mySound = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
whiteNoiseId = mySound.load(this, R.raw.whitenoise, 1);
rainId = mySound.load(this, R.raw.rain, 1);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
SeekBar noiseVolumeControl = (SeekBar) findViewById(R.id.noiseSeekBar);
noiseVolumeControl.setMax(maxVolume);
noiseVolumeControl.setProgress(curVolume);
SeekBar rainVolumeControl = (SeekBar) findViewById(R.id.rainSeekBar);
rainVolumeControl.setMax(maxVolume);
rainVolumeControl.setProgress(curVolume);
noiseVolumeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
@Override
public void onStartTrackingTouch(SeekBar seekBar)
@Override
public void onStopTrackingTouch(SeekBar seekBar)
);
rainVolumeControl.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener()
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser)
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, progress, 0);
@Override
public void onStartTrackingTouch(SeekBar seekBar)
@Override
public void onStopTrackingTouch(SeekBar seekBar)
);
这只是控制主音量,我希望能够降低一个并提高另一个。
谢谢!
【问题讨论】:
它应该与SoundPool.setVolume()
方法一起使用。通过传递不同的streamId,它应该对两种声音产生不同的影响......
【参考方案1】:
应该使用SoundPool.setVolume(int id,float leftVol,float rightVol);
方法。我没试过,但我猜应该是:
mySound.setVolume(whiteNoiseId,0.2,0.2);
mySoundPool.setVolume(rainId,0.8,0.8);
【讨论】:
谢谢,这很有效,虽然当我停止并再次启动声音时,它会失去对搜索栏的控制。现在发布新问题!以上是关于两个音池音量控制的主要内容,如果未能解决你的问题,请参考以下文章