当我单击多个按钮时,多个音频开始在 android studio 中同时播放
Posted
技术标签:
【中文标题】当我单击多个按钮时,多个音频开始在 android studio 中同时播放【英文标题】:When i click on multiple buttons, multiple audios start playing at the same time in android studio 【发布时间】:2021-07-27 19:30:05 【问题描述】:当我单击 recyclerview 的多个图像时,会开始播放多个音频,而不会停止前一个。它越来越烦人。我希望有人能帮我解决这个问题。我读过关于单例类并且只使用一个媒体播放器实例,但不明白如何正确实现它。
class RecylerViewAdapter (var context: Context, var arrayList: ArrayList<ItemModel>) :
RecyclerView.Adapter<RecylerViewAdapter.ItemHolder>()
var mediaPlayer: MediaPlayer? = null
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ItemHolder
val viewHolder = LayoutInflater.from(parent.context)
.inflate(R.layout.sound_item_list, parent, false)
return ItemHolder(viewHolder)
override fun onBindViewHolder(holder: ItemHolder, position: Int)
val itemModel: ItemModel = arrayList[position]
holder.soundImage.setImageResource(itemModel.soundImage)
holder.soundTitle.text = itemModel.soundTitle
mediaPlayer = MediaPlayer.create(context, itemModel.soundTrack)
mediaPlayer!!.isLooping = true
holder.soundImage.setOnClickListener
Toast.makeText(context, itemModel.soundTitle, Toast.LENGTH_LONG).show()
mediaPlayer!!.start()
override fun getItemCount(): Int
return arrayList.size
class ItemHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
var soundImage = itemView.soundImage
var soundTitle = itemView.soundTitle
【问题讨论】:
你永远不会在上一个音轨上停止。 我也试过了,但是没用。 【参考方案1】:代码看起来不错。请记住在播放器上调用release()
并在播放之前使用新的媒体文件再次对其进行初始化。也许实现一个MediaPlayer.OnCompletionListener 可能对您有用,您可以在其中调用player.release()
或许这已经足够了:
holder.soundImage.setOnClickListener
mediaPlayer!!.release()
mediaPlayer = null
mediaPlayer = MediaPlayer.create(context, itemModel.soundTrack)
Toast.makeText(context, itemModel.soundTitle, Toast.LENGTH_LONG).show()
mediaPlayer!!.start()
【讨论】:
嗨,马塞尔,感谢您帮助我。不胜感激,但是建议的代码仍然无法正常工作,我也面临同样的问题。你有其他方法吗?? 您是否尝试过在您的播放器对象上实现 on CompletionListener? 是的,但在这种情况下,应用程序崩溃了。 这不应该发生 :D 我相信 onCompletionListener 将是你的关键。你有没有像第 18 章那样尝试过? myandroid.site/… 媒体播放器设置为循环播放,所以我认为 onCompletionListener 不起作用。我试过了,但没有得到预期的结果。以上是关于当我单击多个按钮时,多个音频开始在 android studio 中同时播放的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio:单击按钮时一一更新多个按钮的背景