0

我的 getVolume() 方法总是返回 1.0。我已将手机静音,更改了音量,但是当我调用我的方法时,我随时都会收到 1f。我错过了什么吗?

btnPlay.setOnClickListener(new OnClickListener(){
   @Override
   public void onClick(View v){
      float volume = getVolume();
      Log.i("inf", "Volume: " + volume);
      soundPlayID = soundPool.play(my_sound, volume, volume, 1, 0, 1f);
   }
});

private float getVolume(){
    AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
    float actualVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    float maxVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
    float volume = actualVolume / maxVolume;

    return volume;
}

安慰:

音量:1.0

音量:1.0

音量:1.0

音量:1.0

4

1 回答 1

2

这里的 maxVolume 似乎与音量相同。这些调用是相同的,因此您将始终得到 1.0。

您需要致电:

audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

然后你应该会看到更有趣的结果。

于 2013-08-06T16:33:26.923 回答