Search code examples
javaandroidmedia-player

Android MediaPlayer volume is very low ( already adjusted Volume )


I m using the MediaPlayer to play one of the internal alarm ringtone. i m using the setVolume(1.0f, 1.0f) to maximize the volume when the ringtone is played. but the ringtone doesn't play full volume ( when I compare it to playing the ringtone separately or through the built it android alarm)

here is my code

mediaPlayer.setDataSource(context, ringtoneUri);
mediaPlayer.setLooping(looping);
mediaPlayer.setVolume(1.0f, 1.0f);
mediaPlayer.prepare();
mediaPlayer.start();

I added the following permission android.permission.MODIFY_AUDIO_SETTINGS ( not sure if this is needed )

Any Idea why the mediaPlayer still won't play the sound at maximum?


Solution

  • Here is the solution I found.

    AudioManager amanager = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
    int maxVolume = amanager.getStreamMaxVolume(AudioManager.STREAM_ALARM);
    amanager.setStreamVolume(AudioManager.STREAM_ALARM, maxVolume, 0);
    
    MediaPlayer mediaPlayer= new MediaPlayer();
    
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_ALARM); // this is important.
    
    mediaPlayer.setDataSource(context, ringtoneUri);
    mediaPlayer.setLooping(looping);  
    mediaPlayer.prepare();
    mediaPlayer.start();