到目前为止,我一直在MediaPlayer
通过设置流音量来设置音量。我不想再这样做了,因为它会混淆用户设置。我现在从 a SeekBar
(0 到 100) 中取值,然后做0 到 1 之间valueFromSeekBar / 100
的 afloat
来使用 in 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
都被忽略了,而是使用了流的音量(在这种情况下是警报流)。当流音量设置为最大时最明显,我播放两个音频文件,一个MediaPlayer.setVolume(1f, 1f)
使用MediaPlayer.setVolume(0.01f, 0.01f)
. 它们几乎无法区分。我需要一种方法让我的用户能够将SeekBar
1 定位并获得几乎听不见的声音,或者定位 100 并获得最大声音。这是可能的,还是我将不得不回去搞乱流?