从ViewModel使用Soundpool

时间:2019-01-23 10:22:34

标签: android android-studio audio kotlin viewmodel

我想从不同的活动中访问一堆声音,因此我想将它们加载到ViewModel中的SoundPool中,然后可以由活动进行访问。使用以下代码尝试此操作时,我得到Unresolved reference的SoundPool及其中的声音。欢迎了解为什么这样做的任何指示。

ViewModel:

class PingSoundPool : ViewModel() {

    fun loadPings() {

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

        var mSoundPool = SoundPool.Builder()
            .setMaxStreams(4)
            .setAudioAttributes(mAttributes)
            .build()

        val abping = mSoundPool.load("./res/raw/abping", 1)
        val aping = mSoundPool.load("./res/raw/aping", 1)
        val bbping = mSoundPool.load("./res/raw/bbping", 1)
        val bping = mSoundPool.load("./res/raw/bping", 1)
        val cping = mSoundPool.load("./res/raw/cping", 1)
        val dbping = mSoundPool.load("./res/raw/dbping", 1)
        val dping = mSoundPool.load("./res/raw/dping", 1)
        val ebping = mSoundPool.load("./res/raw/ebping", 1)
        val eping = mSoundPool.load("./res/raw/eping", 1)
        val fping = mSoundPool.load("./res/raw/fping", 1)
        val gbping = mSoundPool.load("./res/raw/gbping", 1)
        val gping = mSoundPool.load("./res/raw/gping", 1)
        }
    }

然后在活动的onCreate()中:

val model = ViewModelProviders.of(this).get(PingSoundPool::class.java)
    model.loadPings()

    mibutton.setOnClickListener {
        mSoundPool.play(eping,1f,1f,0,0,1f)
    }

您可能会注意到我对编码没有真正的经验,因此即使它只是“请继续阅读并理解[Topic X]。所有这些都应该变得很清楚。“非常感谢!

0 个答案:

没有答案