Для загрузки звукового файла в память требуется время, поэтому измените val sound1
на var sound1
, сделайте его глобальным и создайте его экземпляр в конце метода onCreate
следующим образом:
class MainActivity : AppCompatActivity() {
lateinit var soundPool: SoundPool
var sound1 : Int = 0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
var audioAttrs: AudioAttributes = AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.setUsage(AudioAttributes.USAGE_MEDIA)
.build()
soundPool = SoundPool.Builder()
.setMaxStreams(2)
.setAudioAttributes(audioAttrs)
.build()
}
else{
soundPool = SoundPool(2, AudioManager.STREAM_MUSIC, 0)
}
sound1 = soundPool.load(this, R.raw.sound1, 1)
}
fun playSound1(view: View) {
if(sound1 != 0) {
soundPool.play(sound1, 1.0f, 1.0f, 1, 0, 1.0f)
}
}
}
Затем вы можете проверить значение sound1
, и если оно не равно 0
, значит, оно полностью загружено. Также вы можете использовать setOnLoadCompleteListener
метод SoundPool
, чтобы проверить это.