サウンドの再生と音量の調整
mp3などで効果音を鳴らしたい場合、
MediaPlayer mp = new MediaPlayer(); mp.setDataSource(PATH_TO_FILE); mp.prepare(); mp.start(); mp.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) { mp.release(); } });
こんな感じのソースになると思います。ここで気になるのが再生時の音量なのですが、MediaPlayerで再生する場合、ユーザーが設定している「Media volume」の値が使われるます。Androidでは音量設定がくせ者で、ボリュームボタンで調整しようとすると、通常は「Ringer volume」つまり着信音の調整になります。
「Media volume」は音楽や効果音の再生時に設定出来るのですが、再生が一瞬で終わってしまう場合は無理だし、事前に設定する事も出来ないので、「Ringer volume」をoffにして安心してたら最大音量で音が鳴るなんてことが起こりえます。
そこでこんなアプリで調整してもらったり、プログラムで変えてやることも可能なのですが、サウンドの再生が行われる画面では、ハードのボリュームボタンで「Media volume」の調整が出来るのが便利だと思います(ゲームだと特にそうですね)
やり方は簡単で、onCreateの直後にでも
setVolumeControlStream(AudioManager.STREAM_MUSIC);
と書いておけば、そのActivity内でボリュームボタンを押すと、「Media volume」が操作されることになります。