如何将Android流量转换为0到1之间的值

时间:2017-05-10 08:10:38

标签: android android-mediaplayer android-audiomanager

我使用MediaPlayer播放声音,我想获取当前流的音量,并使用setVolume方法将其设置为媒体播放器的音量。

问题在于,如果我采用这样的音量值:

audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

我收到的值是卷的索引,而setSound方法需要0到1之间的值。

如何将索引转换为0到1之间的值?

2 个答案:

答案 0 :(得分:1)

只需将当前卷索引除以流的最大卷索引

int currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

float desiredValue = currentVolume / maxVolume;

然后您可以根据需要使用该值(它在0和1之间)

答案 1 :(得分:0)

您可以使用以下代码将值设置在0-1之间......

private final static int MAX_VOLUME = 100;
final float volume = (float) (1 - (Math.log(MAX_VOLUME - soundVolume) / 
Math.log(MAX_VOLUME)));
mediaPlayer.setVolume(volume, volume);