Search code examples
androidvolumeandroid-music-player

How to turn the volume to max programmatically on android?


I am writing an app for android that turns up the volume and plays a song for 45 seconds and then stops. That works great, however I can only get the volume to turn up to 50%, Is there a way to turn the volume up to 100% using setVolume()?

This is my code:

final MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);

//plays eye of the tiger for 45 seconds
if (messages.contains("MUSIC ONLY")){

    //turn up the volume
    mp.setVolume(20, 20);
    mp.start();

    //play ring tone for 45 seconds
    new Timer().schedule(new TimerTask() {
        @Override
        public void run() {
            mp.stop();
        }
    }, 45000);
}

Solution

  • You can use the following snippet, using AudioManager:

    AudioManager am = 
        (AudioManager) getSystemService(Context.AUDIO_SERVICE);
    
    am.setStreamVolume(
        AudioManager.STREAM_MUSIC,
        am.getStreamMaxVolume(AudioManager.STREAM_MUSIC),
        0);
    

    This sets the volume to the maximum level (getStreamMaxVolume()) for the STREAM_MUSIC (which is on example a song played). For other types of sounds, use different value, like STREAM_RING etc.