0

This is my code for controlling two seekbars to set volume control in media player for two simultaneously playing sound. But the sound is turned on and off on the progress change of seekbar, it does not increase or decrease of volume frequently on progress change. Where am I wrong?

audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

        int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

        volume2 = (SeekBar)findViewById(R.id.volbar2);
        volume1 = (SeekBar)findViewById(R.id.volbar);


        volume1.setMax(maxVolume);
        volume2.setMax(maxVolume);
        volume1.setProgress(curVolume);
        volume2.setProgress(curVolume);

        volume1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {


               }
            @Override
            public void onStartTrackingTouch(SeekBar arg0) {

            }
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean arg2) {

                if(seekBar.equals(volume1)){

                    mediaPlayer.setVolume(progress,progress);

                    Toast.makeText(getApplicationContext(), ""+progress+progress, 1).show();

                      }

            }
            });

        volume2.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

            public void onStopTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

            }

            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

            }

            public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
                // TODO Auto-generated method stub
                if(seekBar.equals(volume2)){ 
                     mediaPlayer2.setVolume(progress,progress);
             }

            }
        });
Rajesh
  • 15,724
  • 7
  • 46
  • 95
  • try to set your mediaplayer volume like:- `mediaPlayer.setVolume((progress/100.0f),(progress/100.0f));`. I am not sure but you can do something like this hope it works. – Deepak May 18 '12 at 14:00
  • Hello Deepak your post was helpful for me but it there is create another problem when i decrease seek bar then volume is decreasing but on progress increase it is not increase volume in real state... i do not understand way this happen.. – Ankush Verma May 19 '12 at 07:07

2 Answers2

0

i think mediaplayer.setVolume() wants to have values between 0.0f and 1.0f so its a relative volume to the audiomanagers volume

Simon Meyer
  • 1,946
  • 12
  • 23
0

@Ankush Hi, actually I solved this problem for my project using the following code:

public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
    Log.w("MovingProgressBar","Progress change to: " + progress);
    try {
        if (seekBar == seekMusic){
            musicCurrentVol = (float) (progress/100.0);
            musicPlayer.setVolume(musicCurrentVol, musicCurrentVol);
        } else if (seekBar == seekIns) {
            insCurrentVol = (float) (progress/100.0);
            insPlayer.setVolume(insCurrentVol, insCurrentVol);
        } 
    } catch (Exception e) {
        Log.w("MovingProgressBar:", "Progress not change: " + e);
    }
}

And this works for me. Hope this also works for you.

Deepak
  • 1,989
  • 1
  • 18
  • 20