Android: MediaPlayer setVolume function not working

此生再无相见时 提交于 2019-12-10 17:12:28

问题


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??


回答1:


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);



回答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.




回答3:


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.




回答4:


Using AudioManager you can control the volume of media player.

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

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

public void  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



来源:https://stackoverflow.com/questions/28087497/android-mediaplayer-setvolume-function-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!