0

アラーム音を可能な限り最大の音量で再生することをユーザーが選択できるようにしたいと考えています。

このためには、メディアの音量を最大に設定し、アラームを再生して、音量を元の状態に戻す必要があります。

テストのために、この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);
}

アラーム音は最大音量ではなく、元の音量で再生されます。

私は何を間違っていますか?

4

1 に答える 1

1
mediaPlayer.start()

実際にサウンドを再生しません。できるだけ早く再生するようにスケジュールし、すぐに戻ります。したがって、サウンドが再生される頃には、音量は通常に戻ります。サウンドの再生が終了したら、 http://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.htmlを使用して音量を元に戻す必要があります。

于 2011-08-31T15:13:46.947 に答える