如何使用 ToggleButton 应用 start/stop 声音方法?

How to apply start/stop sound method using ToggleButton?

如何为 ToggleButton 或普通 Button 应用 start/stop 函数?

问题是它在第一次尝试后没有 stop/start!它只工作一次(每次用户单击按钮时它都应该改变)。

音乐切换按钮

<ToggleButton
        android:id="@+id/music"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="ToggleButton" />

背景音乐功能

fun BackgroundMusic() {

    val mp = MediaPlayer.create(this, R.raw.sudani)
    mp.start()

    music.setOnClickListener {
        if (mp.isPlaying) {
            mp.stop()
        } else if (!mp.isPlaying) {
            mp.start()
        }
    }

}

请深入了解MediaPlayer javadoc。 在那里你可以阅读这样的内容:

Calling stop() stops playback and causes a MediaPlayer in the Started, Paused, Prepared or PlaybackCompleted state to enter the Stopped state.

  • Once in the Stopped state, playback cannot be started until prepare() or prepareAsync() are called to set the MediaPlayer object to the Prepared state again.

基本上这意味着您必须在再次调用 start() 之前调用 prepare()

fun BackgroundMusic() {

    val mp = MediaPlayer.create(this, R.raw.sudani)
    mp.start()

    music.setOnClickListener {
        if (mp.isPlaying) {
            mp.stop()
        } else if (!mp.isPlaying) {
            try {
                mp.prepare()
                mp.start()
            } catch (e: IOException) {
                e.printStackTrace()
            }
        }
    }

}