Я так запутался ...
SoundPool.play (int soundID, float leftVolume, float rightVolume , int priority, int loop, float rate)
объем здесь от 0,0 до 1,0
Учебники I ' Мы видели, что рекомендуется рассчитывать объем потока как:
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);
, что имеет смысл.
Я предполагаю, что эта громкость переопределит глобальную громкость мультимедиа, установленную пользователем в телефоне, и я могу изменять громкость для своего приложения независимо, изменяя громкость потока в soundPool.
Но на самом деле он работает как множитель - если я установил 0,5 для громкости в звуковом пуле фактическая громкость всегда будет вдвое меньше общей. Очень легко воспроизвести:
Может кто-нибудь объяснить, почему это работает как это? действительно ли объем, переданный методу SoundPool.play, является множителем глобального объема?