我使用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仍然不会播放最大声音?
答案 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();