flux de volume dans SoundPool vs volume dans AudioManager

Je suis tellement confus...

SoundPool.jouer(int soundID, float leftVolume, float rightVolume, int priority, int boucle, float taux)

volume ici est de 0.0 à 1.0

Tutoriels que j'ai vu recommander pour calculer les flux de volume:

AudioManager mgr = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);

int streamVolume = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);

streamVolume = streamVolume / AudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

mSoundPool.play(mSoundPoolMap.get(index), streamVolume, streamVolume, 1, 0, 1f);

qui a du sens.

Je suppose que ce volume serait de remplacer les médias mondiaux du volume défini par l'utilisateur dans le téléphone et je peux changer de volume pour mon application de façon indépendante par l'évolution des flux de volume dans soundPool.

Mais en réalité, il fonctionne comme multiplicateur - si j'ai mis 0,5 pour le volume dans le soundpool, le volume réel sera toujours la moitié de la mondiale. Très facile à reproduire:

  1. ensemble des médias mondiaux en volume
    les paramètres du téléphone pour max
  2. de régler le volume de l'activité à l'aide de soundpool.jouer à 0,5 - jouer son
  3. de régler le volume dans soundpool.jouer à 1 - jouer un son, il sera deux fois plus fort

Quelqu'un peut-il expliquer pourquoi cela fonctionne comme ça? est volume transmis à SoundPool.méthode de lecture vraiment un multiplicateur pour le volume global?

InformationsquelleAutor mishkin | 2010-11-15