Android 音量控制 - ythy/blog GitHub Wiki

不需要系统权限, 代码如下:

 final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
        int maxVolume = audioManager.getStreamMaxVolume(type);
        int currentVolume = audioManager.getStreamVolume(type);

        seekBar.setMax(maxVolume);
        seekBar.setProgress(currentVolume);
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onStopTrackingTouch(SeekBar arg0) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar arg0) {
            }

            @Override
            public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
                audioManager.setStreamVolume(type, arg1, 0);
            }
        });
        
       // 调用: seekBar:SeekBar,  type: AudioManager.STREAM_MUSIC;

注意事项: audioManager.setStreamVolume() type按音量类别设置.

  • 媒体音量: AudioManager.STREAM_MUSIC
  • 铃声音量: AudioManager.STREAM_RING

所有配置:

this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
this.setVolumeControlStream(AudioManager.STREAM_RING);  
this.setVolumeControlStream(AudioManager.STREAM_ALARM);  
this.setVolumeControlStream(AudioManager.STREAM_NOTIFICATION);  
this.setVolumeControlStream(AudioManager.STREAM_SYSTEM);  
this.setVolumeControlStream(AudioManager.STREAM_VOICECALL);