Volumen de secuencia en SoundPool vs volumen en AudioManager

Estoy muy confundido…

SoundPool.play (int soundID, float leftVolume, float rightVolume , int prioridad, int loop, float rate)

El volumen aquí es de 0.0 a 1.0

Tutoriales que he visto recomiendan calcular el volumen de flujo como:

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); 

Que tiene sentido.

Asumiría que este volumen anularía el volumen global de los medios fijado por el usuario en el teléfono y puedo cambiar el volumen para mi app independientemente cambiando el volumen de la corriente en soundPool.

Pero en realidad funciona como un multiplicador – si establezco 0,5 para el volumen en soundpool, el volumen real será siempre la mitad de la global. Muy fácil de reproducir:

  1. Establezca el volumen global de los medios en la configuración del teléfono como máximo
  2. Establezca el volumen en actividad usando soundpool.play a 0,5 – reproducir sonido
  3. Establecer el volumen en soundpool.play a 1 – reproducir sonido, será dos veces más alto

¿Puede alguien explicar por qué funciona así? Es el volumen pasado a SoundPool.play método realmente un multiplicador para el volumen global?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.