android - sonido - soundpool ejemplo
volumen de flujo en SoundPool vs volumen en AudioManager (1)
Sí, los parámetros de volumen son con respecto al volumen global. Si desea reproducir un sonido con la configuración de volumen actual, simplemente pase "1" como volumen.
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.
Los tutoriales que he visto recomiendan calcular el volumen de transmisión 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);
lo que tiene sentido
Asumiría que este volumen anularía el volumen de medios global establecido por el usuario en el teléfono y puedo cambiar el volumen de mi aplicación de forma independiente al cambiar el volumen de la transmisión en soundPool.
Pero en realidad funciona como un multiplicador: si configuro 0.5 para el volumen en la agrupación de sonido, el volumen real será siempre la mitad del global. Muy fácil de reproducir:
- configurar el volumen de medios global en la configuración del teléfono al máximo
- configurar el volumen en la actividad usando soundpool.play a 0.5 - reproducir sonido
- configurar el volumen en soundpool.play a 1 - reproducir sonido, será dos veces más alto
¿Alguien puede explicar por qué funciona así? ¿El volumen pasado al método SoundPool.play es realmente un multiplicador para el volumen global?