You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中实现MediaPlayer.OnPreparedListener?

Kotlin中实现MediaPlayer.OnPreparedListener的几种方式

在Kotlin里实现MediaPlayer.OnPreparedListener有几种简洁的写法,以下是具体示例:

1. 匿名内部类实现

和Java的写法类似,但Kotlin语法更紧凑:

val mediaPlayer = MediaPlayer()
mediaPlayer.setOnPreparedListener(object : MediaPlayer.OnPreparedListener {
    override fun onPrepared(mp: MediaPlayer?) {
        // 播放器准备完成后执行逻辑,比如启动播放
        mp?.start()
    }
})

2. SAM转换简化(Lambda写法)

因为OnPreparedListener是单抽象方法接口,Kotlin支持直接用Lambda表达式替代,大幅简化代码:

val mediaPlayer = MediaPlayer()
// 带参数名的写法
mediaPlayer.setOnPreparedListener { mp ->
    mp?.start()
}

// 省略参数名,用默认的`it`指代
mediaPlayer.setOnPreparedListener {
    it?.start()
}

3. 自定义类实现接口(适合复杂逻辑复用)

如果准备完成后的逻辑比较复杂,或者需要在多个地方复用,可以单独定义类实现接口:

class CustomPreparedListener : MediaPlayer.OnPreparedListener {
    override fun onPrepared(mp: MediaPlayer?) {
        mp?.start()
        // 这里可以添加更多自定义逻辑,比如日志、状态回调等
    }
}

// 使用时直接实例化传入
val mediaPlayer = MediaPlayer()
mediaPlayer.setOnPreparedListener(CustomPreparedListener())

额外注意

使用MediaPlayer时要记得管理生命周期,避免内存泄漏,比如在页面销毁时释放资源:

override fun onDestroy() {
    super.onDestroy()
    mediaPlayer?.release()
}

内容的提问来源于stack exchange,提问作者Demo Nomp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:28:12