今まではMediaPlayer
、ストリームの音量を設定することで自分の音量を設定していました。ユーザー設定を台無しにするので、もうやりたくありません。SeekBar
(0 から 100)から値を取得し、で使用する 0 から 1 の間の値valueFromSeekBar / 100
を取得します。float
MediaPlayer.setVolume(float, float)
問題は、音量レベルが変化していないように見えることです。を設定する方法は次のMediaPlayer
とおりです。
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.setLooping(true);
player.prepare();
float alarmVolume = AudioUtils.getMediaPlayerScaledVolume(100, alarm.volume);
if(NetworkUtils.isInCall(context)) {
alarmVolume = IN_CALL_VOLUME;
}
mediaPlayer.setVolume(alarmVolume, alarmVolume); //I've even tried hardcoding 0.1f
何をしても、入力した値MediaPlayer.setVolume
が無視され、代わりにストリームのボリューム (この場合はアラーム ストリーム) が使用されるようです。ストリームの音量が最大に設定されているときに最も顕著になり、1 つはMediaPlayer.setVolume(1f, 1f)
で、もう 1 つは で、2 つのオーディオ ファイルを再生しますMediaPlayer.setVolume(0.01f, 0.01f)
。それらは互いにほとんど見分けがつきません。SeekBar
ユーザーがを 1 に配置してかろうじて聞こえる音、または 100 に配置して最大の音を出せるようにする方法が必要です。これは可能ですか、それともストリームをいじる必要がありますか?