Ответ 1
Да, параметры громкости относятся к глобальному тому. Если вы хотите воспроизвести звук при текущей настройке громкости, просто передайте "1" в качестве громкости.
Я так запутался...
SoundPool.play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
объем от 0.0 до 1.0
Учебники, которые я видел, рекомендуют рассчитать объем потока как:
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, фактический объем будет всегда половиной глобального. Очень легко воспроизвести:
Может кто-нибудь объяснить, почему он работает? передается ли звук в SoundPool.play метод действительно множителем для глобального тома?
Да, параметры громкости относятся к глобальному тому. Если вы хотите воспроизвести звук при текущей настройке громкости, просто передайте "1" в качестве громкости.