简体   繁体   English

两个音池音量控制

[英]Two soundpool volume controls

I'm making a white noise app, I would like to control the volume for each sound independently. 我正在制作一个白噪声应用程序,我想独立控制每种声音的音量。 Is this possible? 这可能吗?

Here is my onCreate at the moment. 这是我目前的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) {

        }
    });

}

This controls just the main volume, I'd like to be able to lower one and raise the other. 这仅控制主要音量,我希望能够降低一个音量并提高另一个音量。

Thanks! 谢谢!

should work with SoundPool.setVolume(int id,float leftVol,float rightVol); 应该与SoundPool.setVolume(int id,float leftVol,float rightVol); method. 方法。 I have not tried it, but I guess it must be: 我没有尝试过,但是我想它一定是:

mySound.setVolume(whiteNoiseId,0.2,0.2);

mySoundPool.setVolume(rainId,0.8,0.8);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM