I have a class called MusicPlayer that has a MediaPlayer and its setVolume() method simply takes a float and applies it to both left and right volume of the MediaPlayer:
public void setVolume(float f) {
mediaPlayer.setVolume(f, f);
}
In my MainActivity class, I create a SeekBar that calls my setVolume() method to logarithmically change the volume of the MusicPlayer:
SeekBar musicVolume = (SeekBar) findViewById(R.id.music_volume);
musicVolume.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
float log1 = (float) (Math.log(maxVolume - progress) / Math.log(maxVolume));
mp.setVolume(1 - log1);
}
});
The problem is that setVolume() does not seem to be doing anything. I have already debugged to ensure my SeekBar is set up correctly and that the setVolume() method is running at all, but my problem seems to be that the MediaPlayer's setVolume() does nothing. Any suggestions?
EDIT: I forgot to mention that my app is planned to be something like an audio mixer, where the user can change the volume of one MediaPlayer without changing the others. For example, the user wants to increase the volume of a MediaPlayer that handles sound effects while lowering the volume of a MediaPlayer that handles music, so I don't think AudioManager would be the right solution.