Pattabi Raman
Pattabi Raman

Reputation: 5854

Android : How to set MediaPlayer volume programmatically?

How to set the mediaplayer volume programmatically. I use it for alarm notification. Any help is highly appreciated and thanks in advance.

Upvotes: 46

Views: 69527

Answers (10)

Kanakaraj
Kanakaraj

Reputation: 41

To Hide Volume Controll UI:

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

For Volume UP

audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                    AudioManager.ADJUST_SAME, 0);

for Volume Down

audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                    AudioManager.ADJUST_SAME, 0);

Upvotes: 4

user370305
user370305

Reputation: 109257

Using AudioManager, you can simply control the volume of media players.

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

also from MediaPlayer (But I didn't try that)

setVolume(float leftVolume, float rightVolume)

Since: API Level 1

Sets the volume on this player. This API is recommended for balancing the output of audio streams within an application. Unless you are writing an application to control user settings, this API should be used in preference to setStreamVolume(int, int, int) which sets the volume of ALL streams of a particular type. Note that the passed volume values are raw scalars. UI controls should be scaled logarithmically.

Parameters

leftVolume left volume scalar

rightVolume right volume scalar

Upvotes: 53

Hitesh sapra
Hitesh sapra

Reputation: 256

Code:

AudioManager mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
try 
 {        
   float count = 100 * 0.2f;
   Log.d("--count_float", count + "");
   Log.d("--count_final", Math.round(count) + "");
   Log.d("--count_volume", new 
   PreferenceMotionSensor(mContext).getStreamVolume());
   mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, Math.round(count), 0);
 } 
catch (Exception e) 
 {
  Log.d("--Error", e.getMessage());
 }

Output

D/--count_float: 20.0
D/--count_final: 20
D/--count_volume: 100

Upvotes: 0

Hasan A Yousef
Hasan A Yousef

Reputation: 25008

You can do the below using Kotlin, this code will check if the media volume is more than 20% of the maximum volume of the device, and will reduce it to be 20% only.

    val audio = this.getSystemService(Context.AUDIO_SERVICE) as AudioManager
    val level = audio.getStreamVolume(AudioManager.STREAM_MUSIC)

    val maxVolume = audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
    val percent = 0.2f
    val twintyVolume = (maxVolume * percent).toInt()

    if ( level > twintyVolume) {
        Toast.makeText(this,"audio level is $level", Toast.LENGTH_LONG).show()
        audio.setStreamVolume(AudioManager.STREAM_MUSIC,twintyVolume,0)
    }

Upvotes: 3

cosminq
cosminq

Reputation: 51

Read this page right here. It explains very well. Basically, unless your app is a replacement alarm clock, you need to make the following call in the "onCreate()" function:

setVolumeControlStream(AudioManager.STREAM_MUSIC);

In this way you can create the volume of your app using the hardware buttons.

Upvotes: 2

Rahul Baradia
Rahul Baradia

Reputation: 11961

The below code sets the volume to the maximum level (getStreamMaxVolume()).

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

Upvotes: 1

Arfan Mirza
Arfan Mirza

Reputation: 696

Try This

protected static void setVolume(int volume) {
        currentVolume = volume;
        {
            if (volume == 1) {
                volume = 2;
            }
            try {
                float vol = ((float) volume / CONSTANT.SYSTEM_MAX_VOLUME);
                mediaPlayer.setVolume(vol, vol);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

Upvotes: 0

Ashish Dwivedi
Ashish Dwivedi

Reputation: 8196

Hope this help

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

For Volume UP

 audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                        AudioManager.ADJUST_RAISE, AudioManager.FLAG_SHOW_UI);

for Volume Down

audio.adjustStreamVolume(AudioManager.STREAM_MUSIC,
                        AudioManager.ADJUST_LOWER, AudioManager.FLAG_SHOW_UI);

Upvotes: 26

doppelhelix
doppelhelix

Reputation: 77

Remember to set left and right speaker volumes.

if (System.nanoTime() == alarm){
    yourMediaPlayer.setVolume(volume, volume)}
}

Upvotes: 0

abhinav
abhinav

Reputation: 3217

You do have the setVolume method in the MediaPlayer class. See here

Upvotes: 6

Related Questions