Search code examples
androidmedia-playervolumeseekbarpreference

SeekBar preference change volume


I have a SeekBarPreference and i would like to handle with it the volume of the application. I created the SeekBarPreference in xml but I do not really know what I should write in java class to configure it .

Please help me to configure the SeekBarPreference to control the volume of the application. Thanks!


Solution

  • 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 MainActivity 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();
            }
        }