kotlin - 如何“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”并再次正确返回,但在音频结束后它不会改变。我希望它在音频完成时重置。我意识到问题出在我的代码上,我需要在音频完成后更改图像。我该怎么做?
解决方案
在你的行之前
mp?.start
添加监听器
mp?.setOnCompletionListener { //change your button state here }
推荐阅读
- c# - datagridview 排序未正确完成
- python - psycopg2:TypeError:字符串格式化期间并非所有参数都转换了
- teamcity - Specflow 生成所有详细信息
- java - 删除元素时 PriorityQueue 更改顺序
- javascript - 如果在其中满足条件,则停止 node-cron cron.schedule
- c# - 什么是 ssas 分区“注释”属性
- java - 没有错误,但应用程序一直在 android studio Java 中停止
- ruby-on-rails - CanCan 能力忽略一个应该禁止访问的条件?
- java - 发送带有附件的电子邮件,从内容 bytea postgresql 获取数据
- matlab - 将 bpmn 文件中的数据导入一个字符串/字符值 Matlab