Установите громкость на определенное значение и снова вернитесь - PullRequest
0 голосов
/ 31 августа 2011

Я бы хотел, чтобы мои пользователи могли выбрать, чтобы сигнал будильника воспроизводился с максимально возможной громкостью.

Для этого мне нужно установить максимальную громкость носителя, воспроизвести будильник и снова установить громкость.в исходное состояние.

Для тестирования у меня есть кнопка с этим 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 Ответ

1 голос
/ 31 августа 2011
mediaPlayer.start()

на самом деле не воспроизводит звук. Он планирует играть как можно скорее и сразу же возвращается. Следовательно, к моменту воспроизведения звука уровень громкости возвращается к нормальному. Вам нужно установить громкость обратно после завершения воспроизведения звука, используя http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html

...