将音量设置为特定值,然后再返回

时间:2011-08-31 14:34:35

标签: android android-audiomanager

我希望我的用户能够选择以尽可能高的音量播放闹铃声。

为此,我需要将媒体音量设置为最大,播放闹钟并将音量设置回原始状态。

为了测试我有一个带有onClick - 事件的按钮:

public void playAlarm(View view) {
  AudioManager audio = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
  int currentVolume = audio.getStreamVolume(AudioManager.STREAM_MUSIC);
  audio.setStreamVolume(AudioManager.STREAM_MUSIC, audio.getStreamMaxVolume(AudioManager.STREAM_MUSIC), AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);

  MediaPlayer mediaPlayer = MediaPlayer.create(view.getContext(), R.raw.alarm);
  mediaPlayer.start();

  audio.setStreamVolume(AudioManager.STREAM_MUSIC, currentVolume, AudioManager.FLAG_PLAY_SOUND);
}

警报声音以原始音量播放,而不是以最大音量播放。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

mediaPlayer.start()

实际上并没有播放声音。它安排它尽快播放并立即返回。因此,在播放声音时,音量恢复正常。您需要使用http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html

在声音播放完毕后设置音量