Как правильно использовать MediaPlayer с Kotlin для воспроизведения звуков?Android

Форум для тех, кто программирует под Android
Anonymous
Как правильно использовать MediaPlayer с Kotlin для воспроизведения звуков?

Сообщение Anonymous »

У меня есть две кнопки (одна для успеха, другая для неудачи). Я хочу воспроизводить разные звуки при нажатии на каждую кнопку. Каждая кнопка будет нажата примерно 100 раз, прежде чем текущее действие будет уничтожено.
Я хочу прервать оба звука, если они воспроизводятся при нажатии на любую из кнопок, чтобы не слышать два звука одновременно. Для этого я создал функцию stopSounds(), которая вызывается при нажатии любой кнопки.
Кроме того, я выпускаю оба звука при уничтожении активности. . Должен ли я выпускать их в другой части приложения, например, каждый раз, когда они заканчивают играть?
Это краткое изложение моего кода:

Код: Выделить всё

class MyClass : AppCompatActivity() {
private var successSound: MediaPlayer? = null
private var failSound: MediaPlayer? = null

override fun onDestroy() {
super.onDestroy()
this.successSound.release()
this.failSound.release()
}

override fun onCreate() {
super.onCreate()
...
val successBtn = findViewById(R.id.btn_success)
val failBtn = findViewById(R.id.btn_fail)
...
this.successSound = MediaPlayer.create(this, R.raw.success)
this.failSound = MediaPlayer.create(this, R.raw.fail)
...
successBtn.setOnClickListener {
this.stopSounds()
this.successSound!!.start()
}
failBtn.setOnClickListener {
this.stopSounds()
this.failSound!!.start()
}
}

private fun stopSounds() {
if (this.successSound?.isPlaying == true) {
this.successSound!!.stop()
this.successSound!!.prepare()
}
if (this.failSound?.isPlaying == true) {
this.failSound!!.stop()
this.failSound!!.prepare()
}
}
}
Это нормально? Могу ли я улучшить его? Должен ли я вместо этого использовать SoundPool? Любые советы, исправления или примеры будут оценены по достоинству. Заранее спасибо.

Подробнее здесь: https://stackoverflow.com/questions/775 ... uce-sounds

Вернуться в «Android»