Где загрузить SoundPool для доступа на уровне приложений - PullRequest
0 голосов
/ 09 февраля 2019

Я хочу использовать SoundPool глобально, чтобы каждый фрагмент мог получить доступ к своему методу воспроизведения.Для этого у меня есть такой класс:

class PingSoundPool(context: Context) {

    val mAttributes = AudioAttributes.Builder()
        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
        .setUsage(AudioAttributes.USAGE_GAME)
        .build()

    val mSoundPool = SoundPool.Builder()
        .setMaxStreams(9)
        .setAudioAttributes(mAttributes)
        .build()

    val abping = mSoundPool.load(context, R.raw.abping, 1)
    val aping = mSoundPool.load(context, R.raw.aping, 1)

fun loadPings(note: Int) {

    if(note == 1)
        mSoundPool.play(cping, 1f, 1f, 1, -1, 1f)
    if(note == 2)
    mSoundPool.play(dbping, 1f, 1f, 1, -1, 1f)
    } 
}

Проблема сейчас в том, что все звуки загружаются каждый раз, когда я хочу воспроизвести только один звук.Где можно разместить код для загрузки звуков, чтобы выражения if(note == Int) могли получить доступ к загруженным звукам, не загружая их сами?

...