kotlin 使用MediaPlayer类播放一段时间后音乐停止播放

fcg9iug3  于 2023-11-21  发布在  Kotlin
关注(0)|答案(1)|浏览(187)

我正在使用下面的方法播放音乐的一个按钮点击在android应用程序.

val mediaPlayer = MediaPlayer.create(this, R.raw.game_jump)
mediaPlayer.start()

字符串
最初,通过单击按钮播放音乐,但在单击按钮几次后,音乐停止播放。
这怎么解决?!

yizd12fk

yizd12fk1#

当您创建MediaPlayer类的示例时,系统会分配资源(包括内存)来加载和播放媒体文件。如果您没有正确释放这些资源,可能会导致内存消耗高,内存泄漏等问题,甚至会导致应用程序因资源耗尽而崩溃。
要解决这个问题,您应该在使用完MediaPlayer示例后,通过调用release()方法释放它的资源。

val mediaPlayer = MediaPlayer.create(this, R.raw.sound)
mediaPlayer.start()

mediaPlayer.setOnCompletionListener {
    mediaPlayer.release()
}

字符串
但不建议将MediaPlayer类用于较短的音轨(例如在您的情况下单击按钮播放声音),因为它可能会消耗更多内存和处理资源。它适用于需要播放较长音频文件的场景,例如音乐曲目或较长的音效。
对于较短的音轨,您可以使用SoundPool。SoundPool类是专门为有效地播放短音效而设计的,例如在游戏或交互式应用程序中。以下是您如何使用它:

val mySoundPool = SoundPool(1, AudioManager.STREAM_MUSIC, 0)
val soundId = mySoundPool.load(this, R.raw.sound, 1)

mySoundPool.setOnLoadCompleteListener { soundPool, _, _ ->
   soundPool.play(soundId, 1f, 1f, 1, 0, 1f)
}

相关问题