Уровень громкости звукового пула - PullRequest
0 голосов
/ 13 ноября 2018

Поскольку у меня возникли проблемы с воспроизведением небольшого WAV-файла с помощью MediaPlayer, я переключился на SoundPool. Пока кажется, что он работает лучше, чем MediaPlayer, но проблема, с которой я сталкиваюсь, - это уровень звука, который должен составлять 0,5 от уровня звука системы.

я пробовал с

soundPool.play(currentSoundId, 0.5f, 0.5f, 1, 0, 1);

и он все еще был на том же уровне звука, я также пытался с

int streamId = soundPool.play(currentSoundId, 1, 1, 1, 0, 1);
soundPool.setVolume(streamId, 0.5f, 0.5f);

а это был тот же уровень, есть идеи, как заставить его играть на определенной громкости? Это странно, потому что кажется, что я не принимаю плавающие звуки, которые я вставил.

EDIT:

Я инициализирую следующим конструктором

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){

            audioAttributes = new AudioAttributes.Builder()
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .setUsage(AudioAttributes.USAGE_GAME)
                    .build();

            soundPool = new SoundPool.Builder()
                    .setAudioAttributes(audioAttributes)
                    .setMaxStreams(2)
                    .build();
        }else{
            soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC,0);
        }

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Используете ли вы старый конструктор SoundPool с потоком AudioManager.STREAM_MUSIC или более подходящий SoundPool.Builder?Если Builder использует, какие AudioAttributes перешли в инициализацию?

0 голосов
/ 13 ноября 2018

Вы должны начать использовать ExoPlayer, он имеет более жесткий API, чем MediaPlayer и SoundPool Вы можете найти его здесь, ExoPlayer .

Имеет setVolume(float) API Подробнее здесь

...