如何使用ToggleButton应用启动/停止声音方法?

时间:2018-01-13 21:44:25

标签: android kotlin android-mediaplayer android-button

如何为ToggleButton或普通Button申请启动/停止功能?

问题是它在第一次尝试后没有停止/启动!它只能工作一次(每次用户点击按钮时都应该更改)。

Music ToggleButton

<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()
        }
    }

}

1 个答案:

答案 0 :(得分:1)

请深入了解MediaPlayer javadoc。 在那里你可以读到这样的东西:

  

调用stop()会停止播放并导致处于Started,Paused,Prepared或PlaybackCompleted状态的MediaPlayer进入Stopped状态。

     
      
  • 一旦处于Stopped状态,在调用prepare()或prepareAsync()将MediaPlayer对象再次设置为Prepared状态之前,无法开始播放。
  •   

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

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()
            }
        }
    }

}