首页 > 解决方案 > 如何“android 媒体播放器”(Kotlin)

问题描述

情况是这样的——我已经开始研究 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")
    }

目前,当我按下“bruhBtn”时,图片正在变为“btnpressed”并再次正确返回,但在音频结束后它不会改变。我希望它在音频完成时重置。我意识到问题出在我的代码上,我需要在音频完成后更改图像。我该怎么做?

标签: kotlinandroid-mediaplayer

解决方案


在你的行之前

mp?.start

添加监听器

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

推荐阅读