2011年4月8日

Androidで着信音量(音声ボリューム)と連動させて、音を鳴らす。[SoundPool編]

以前に書いた記事 「Androidで音を鳴らす。[SoundPool編]」のままだと、常に大きな音が鳴ってしまい実用的ではない。

SoundPool soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); 
int soundID = soundPool.load(context, R.raw.lalala, 1); 
soundPool.play(soundID, 1.0F, 1.0F, 1, 0, 1.0F); 

3行目、playメソッドの第2引数(音量[左])・第3引数(音量[右])が1.0のため、常に最大音量となる(範囲:0.0~1.0)のが問題。現在の着信音量を取得し、その音量で再生するのが良いと思う。

AudioManager audioManager = (AudioManager)getSystemService(AUDIO_SERVICE);
int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_RING); 
int maxVolume  = audioManager.getStreamMaxVolume(AudioManager.STREAM_RING);
float volumeRate = (float)currentVolume / maxVolume;

soundPool.play(soundIDs[i], volumeRate, volumeRate, 0, 0, 1.0F);

現在の音量(currentVolume)と最大音量(maxVolume)を取得して、0.0~1.0に落とし込む感じ。

0 件のコメント:

コメントを投稿