How do you get/set media volume (not ringtone volume) in Android?

前端 未结 8 1833
青春惊慌失措
青春惊慌失措 2020-12-01 00:01

Is there a way to get/set media volume? I have tried the following:

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


        
相关标签:
8条回答
  • 2020-12-01 00:26
    private AudioManager audio;
    

    Inside onCreate:

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

    Override onKeyDown:

    @Override
    public 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;
        }
    }
    
    0 讨论(0)
  • 2020-12-01 00:26

    If you happen to have a volume bar that you want to adjust –similar to what you see on iPhone's iPod app– here's how.

        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    
        switch (keyCode) {
        case KeyEvent.KEYCODE_VOLUME_UP:
            audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);
            //Raise the Volume Bar on the Screen
            volumeControl.setProgress( audioManager.getStreamVolume(AudioManager.STREAM_MUSIC)
                    + AudioManager.ADJUST_RAISE);
            return true;
        case KeyEvent.KEYCODE_VOLUME_DOWN:
            //Adjust the Volume
            audioManager.adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);
            //Lower the VOlume Bar on the Screen
            volumeControl.setProgress(audioManager
                    .getStreamVolume(AudioManager.STREAM_MUSIC)
                    + AudioManager.ADJUST_LOWER);
            return true;
        default:
            return false;
        }
    
    0 讨论(0)
  • 2020-12-01 00:28

    To set volume to 0

    AudioManager audioManager;
    audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);
    

    To set volume to full

    AudioManager audioManager;
    audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 20, 0);
    

    the volume can be adjusted by changing the index value between 0 and 20

    0 讨论(0)
  • 2020-12-01 00:34

    You can set your activity to use a specific volume. In your activity, use one of the following:

    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); 
    
    0 讨论(0)
  • 2020-12-01 00:37

    Instead of AudioManager.STREAM_RING you shoul use AudioManager.STREAM_MUSIC This question has already discussed here.

    0 讨论(0)
  • 2020-12-01 00:39

    Have a try with this:

    setVolumeControlStream(AudioManager.STREAM_MUSIC);

    0 讨论(0)
提交回复
热议问题