Kotlin 如何";安卓媒体播放器“;(科特林)

Kotlin 如何";安卓媒体播放器“;(科特林),kotlin,android-mediaplayer,Kotlin,Android Mediaplayer,情况是这样的——我已经开始学习kotlin和android studio,现在我被困在这里。 我有一个按钮(ImageView),当按下该按钮时,开始播放音频文件 class MainActivity : AppCompatActivity() { private var mp: MediaPlayer? = null private var bruhSound: MutableList<Int> = mutableListOf(R.raw.bruh) ov

情况是这样的——我已经开始学习kotlin和android studio,现在我被困在这里。 我有一个按钮(ImageView),当按下该按钮时,开始播放音频文件

class MainActivity : AppCompatActivity() {
    private var mp: MediaPlayer? = null
    private var bruhSound: MutableList<Int> = mutableListOf(R.raw.bruh)

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        supportActionBar?.hide()

        bruhBtn.setOnClickListener {
            if (mp == null) {
                controlSound(bruhSound[0])
                bruhBtn.setImageResource(R.drawable.btnpressed)
            } else if (mp !== null) {
                bruhBtn.setImageResource(R.drawable.btn)
            }
        }
    }

    private fun controlSound(id: Int) {
        if (mp == null) {
            mp = MediaPlayer.create(this, id)
            Log.d("MainActivity", "ID: ${mp!!.audioSessionId}")
        }
        mp?.start()
        Log.d("MainActivity", "Duration: ${mp!!.duration / 1000} seconds")
    }
class MainActivity:AppCompatActivity(){
私有变量mp:MediaPlayer?=null
私有变量bruhSound:MutableList=mutableListOf(R.raw.bruh)
重写创建时的乐趣(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
supportActionBar?.hide()
bruhBtn.setOnClickListener{
if(mp==null){
控制声音(bruhSound[0])
bruhBtn.setImageResource(R.drawable.btnpressed)
}else if(mp!==null){
bruhBtn.setImageResource(R.drawable.btn)
}
}
}
私人娱乐控制声音(id:Int){
if(mp==null){
mp=MediaPlayer.create(这个,id)
Log.d(“MainActivity”,“ID:${mp!!.audioSessionId}”)
}
mp?.start()
Log.d(“MainActivity”,“持续时间:${mp!!.Duration/1000}秒”)
}
当前,当我按“bruhBtn”时,图片将变为“btnpressed”,然后再次正确返回,但在音频结束后图片不会更改。我希望在音频结束时将其重置。我意识到问题在于我的代码,音频结束后我需要更改图像。我将如何执行此操作?

mp?.start
添加一个侦听器

    mp?.setOnCompletionListener { //change your button state here }