Как правильно использовать 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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