Поскольку у меня возникли проблемы с воспроизведением небольшого файла .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);
и это был такой же уровень, есть идеи, как заставить играть его на определенной громкости? Это странно, потому что кажется, что он не принимает никаких поплавков для звука, который я вставляю.
Обновлено:
я инициализирую следующим конструктором
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);
}
Используете ли вы старый конструктор SoundPool с потоком AudioManager.STREAM_MUSIC или более подходящий SoundPool.Builder? Если используется Builder, какие атрибуты AudioAttributes передаются при инициализации?
Какую модель Android и версию Android вы используете для тестирования?
Это не отвечает на вопрос.
ExoPlayer - это слишком много для того, что мне нужно, потому что мне нужно запускать звук только при нажатии на кнопку.