android - 在同一按钮Kotlin上播放和暂停音频

标签 android kotlin audio

我尝试在recyclerView适配器的同一按钮上播放和暂停音频文件。但是,如果我按“playbtn”,它只会播放而不是暂停。

这是我的功能:

fun playmusic(position: Int) {

    val post = posts[position]
    mp  = MediaPlayer()
    mp.setDataSource(post.audioUrl)
    mp.prepareAsync()
    mp.setOnPreparedListener { player ->
        if (player.isPlaying)
            player.pause()
        else{
            player.start()
        }
    }
}

这是我的clickListner:
    playbtn.setOnClickListener {
            playmusic(postPosistion)
            Toast.makeText(context, "You play ${postPosistion + 1}", Toast.LENGTH_SHORT).show()
        }

最佳答案

每个View对象都有一个称为setTag / getTag的方法,该方法用于存储有关 View 状态的小信息。

在“播放”按钮的单击侦听器中,可以使用自定义状态设置tag,它可以是任何东西,整数,字符串甚至是密封的类状态。之后,这只是简单的if-else逻辑,在您的if条件下,检查getTag as T(the type of object you previously-stored)是否匹配播放状态,然后暂停else播放。

关于android - 在同一按钮Kotlin上播放和暂停音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62064517/

相关文章:

algorithm - 和弦检测算法?

iphone - 使用 Audio Toolbox 播放 .wav

python - 如何从声音中获取 Pi-Phase 以在 Python 中获得破坏性干扰

Android WorkManager 同时启动太多作业

android - Gradle在proguard之后找不到内部类的符号

编写时不存储Java对象

android - Kotlin RC NoClassDefFoundError

android - 将 LiveData 与数据绑定(bind)一起使用

android - 尝试匹配微调器和文本字段的文本内容,但 'withText' 和 'withSpinnerText' 正在返回有关组件的数据

android - 如何在具有预定义依赖项的 Build.gradle 中获取新版本警告?