6

I am trying to play sound via media player on STREAM_SYSTEM

using

mediaPlayer.setVolume(1.0f , 1.0f);

or

mediaPlayer.setVolume(0.90f , 0.90f);

But it is playing on vol as per Hardware volume controls in settings.

Basically this line has no effect.

I have added

permissions "Modify..." as well in Manifest

But i saw links in stackoverflow where this API works.

I don't wanna go to API

AudioManager.setStreamVol()....

as it sets stream vol for all apps

What is problem that this setVol API is not working??

Can anybody give a link to working sample??

Rohit Singhal
  • 381
  • 1
  • 4
  • 22

3 Answers3

11

I faced the same issue. I thought that if I use 0.5f as parameter, I could tell the difference. I tried 0.2f, still no difference. So I thought there was a problem indeed. I finally tried 0.02f just in case, and finally I had a lower volume.

Sample:

replace your

mediaPlayer.setVolume(0.90f , 0.90f);

with

mediaPlayer.setVolume(0.09f , 0.09f);
Atiq
  • 14,435
  • 6
  • 54
  • 69
Georges
  • 307
  • 3
  • 13
  • you can also divide the current stream volume by `15f` like: `float volume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) / 15f;` and then `mediaPlayer.setVolume(volume, volume);` – Pierre Sep 13 '18 at 05:29
2

You must put the volume value between 0.0f and 1.0f. So 1.0f is 100% of the volume. Because of that your line has not effect.

Lennon Spirlandelli
  • 3,131
  • 5
  • 26
  • 51
0
AudioManager audioManager;
int actualVolume;
audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
actualVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, actualVolume + 1, AudioManager.FLAG_SHOW_UI);

The above code is taken from my working project, where it is used to increase the volume of the system (I used it for TV). You can use actualVolume - 1 to lower down the volume.

Pranit Bankar
  • 453
  • 1
  • 7
  • 21
Nitin Misra
  • 4,472
  • 3
  • 34
  • 52