Change Media volume in Android? Change Media volume in Android? android android

Change Media volume in Android?


The right method to use would be setStreamVolume on your AudioManager. It could looks like this

AudioManager audioManager =     (AudioManager)getSystemService(Context.AUDIO_SERVICE);audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,                             [int value],                             [if desired a flag]);

An example use of the flag is to get the beep when setting the volume so the user can hear the outcome. The flag for that would be AudioManager.FLAG_PLAY_SOUND.

You could use AudioManager.FLAG_SHOW_UI if you don't want to play a sound but display a toast with the current value. The use has to get a feedback tho. Doesn't matter if it is audible or visual.

To get the maximal valid value for the given stream you just call getStreamMaxVolume() on the AudioManager and get an integer back which represents ... well the maximal valid value for the volume.


private AudioManager audio;

Inside onCreate:

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

Override onKeyDown:

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {    switch (keyCode) {    case KeyEvent.KEYCODE_VOLUME_UP:        audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,                AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);        return true;    case KeyEvent.KEYCODE_VOLUME_DOWN:        audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,                AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);        return true;    default:        // return false;        // Update based on @Rene comment below:        return super.onKeyDown(keyCode, event);    }}


You can use the following code to handle Volume using a SeekBar:

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);SeekBar sbVolumeBooster = (SeekBar) findViewById(R.id.sbVolumeBooster);sbVolumeBooster.setMax(audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)); sbVolumeBooster.setProgress(audioManager.getStreamVolume(AudioManager.STREAM_MUSIC));  sbVolumeBooster.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {    @Override    public void onStopTrackingTouch(SeekBar arg0)     {    }    @Override    public void onStartTrackingTouch(SeekBar arg0)     {    }    @Override    public void onProgressChanged(SeekBar arg0, int progress, boolean arg2)     {        audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,                progress, 0);  // 0 can also be changed to AudioManager.FLAG_PLAY_SOUND    }});