我想从不同的活动中访问一堆声音,因此我想将它们加载到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]。所有这些都应该变得很清楚。“非常感谢!