2011-11-26 20 views
5

MediaPlayerを使用して内部アラーム着信音を再生しています。 着信音が鳴ったときに音量を最大にするためにsetVolume(1.0f、1.0f)を使用しています。しかし、着信音は、私は次の権限android.permissionを追加しました(私は別に着信音を演奏するか、それを作成したAndroidのアラームを通じてそれを比較)フルボリュームここAndroid MediaPlayerの音量が非常に低い(調整済みの音量)

は私のコードは

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

を果たしていません.MODIFY_AUDIO_SETTINGS (これが必要かどうかわからない)

私はまだmediaPlayerが最大でサウンドを再生しない理由はありますか?

答えて

11

ここに私が見つけた解決策があります。

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

私は同じ問題に遭遇して、MediaPlayer documentationにこの本に気​​づい:

準備状態では、オーディオ/音量、screenOnWhilePlaying、ループなどのプロパティが呼び出すことによって調整することができるが、対応するセットメソッドオーディオは最大音量で再生されるように、prepare修正これを呼び出す後setVolumeを呼び出す

。実際には、私が引用したドキュメントによれば、の後にsetLoopingと呼ぶべきです:

mediaPlayer.setDataSource(context, ringtoneUri); 
mediaPlayer.prepare(); 
mediaPlayer.setLooping(looping); 
mediaPlayer.setVolume(1.0f, 1.0f); 
mediaPlayer.start(); 
関連する問題