Android MediaPlayer音量非常低(已调整音量)

时间:2011-11-26 14:07:00

标签: java android media-player

我使用MediaPlayer播放其中一个内部闹钟铃声。 我使用setVolume(1.0f,1.0f)在播放铃声时最大化音量。但是铃声不能播放全音量(当我将它与单独播放铃声或通过内置的android闹钟进行比较时)

这是我的代码

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

我添加了以下权限android.permission.MODIFY_AUDIO_SETTINGS  (不确定是否需要)

任何想法为什么mediaPlayer仍然不会播放最大声音?

2 个答案:

答案 0 :(得分:12)

这是我找到的解决方案。

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

答案 1 :(得分:10)

我遇到了同样的问题,然后在MediaPlayer documentation中注意到了这一点:

  

当处于Prepared状态时,可以通过调用相应的set方法来调整音频/音量,screenOnWhilePlaying,循环等属性。

在调用setVolume后调用prepare 可修复此问题,以便以最大音量播放音频。实际上,根据我刚才引用的文档,您应该在setLooping之后致电prepare

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