androidvolumeseekbarandroid-audiomanager

Using SeekBar to Control Volume in android?


How can I accurately change the volume of my app using a seekbar without controlling the volume by the volume buttons on my android device? I have seperate function on the Volume keys on my android that's why I want to use a seekbar to control the volume. Can Anyone please help me?


Solution

  • Please look at below code . It solves your problem.

    import android.app.Activity;
    import android.content.Context;
    import android.media.AudioManager;
    import android.os.Bundle;
    import android.widget.SeekBar;
    import android.widget.SeekBar.OnSeekBarChangeListener;
    
    public class TestExample extends Activity 
    {
        /** Called when the activity is first created. */
    
        private SeekBar volumeSeekbar = null;
        private AudioManager audioManager = null; 
    
        @Override
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setVolumeControlStream(AudioManager.STREAM_MUSIC);
            setContentView(R.layout.main);
            initControls();
        }
    
        private void initControls()
        {
            try
            {
                volumeSeekbar = (SeekBar)findViewById(R.id.seekBar1);
                audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
                volumeSeekbar.setMax(audioManager
                        .getStreamMaxVolume(AudioManager.STREAM_MUSIC));
                volumeSeekbar.setProgress(audioManager
                        .getStreamVolume(AudioManager.STREAM_MUSIC));   
    
    
                volumeSeekbar.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);
                    }
                });
            }
            catch (Exception e) 
            {
                e.printStackTrace();
            }
        }