在Kotlin播放原始文件中的声音

我创建动物的应用程序声音,但我有一个问题声音不是播放名称,图像和声音动物列表的代码

listanimales.add(animals("Cat",R.drawable.a1,R.raw.a1)) listanimales.add(animals("Dog",R.drawable.a2,R.raw.a2)) listanimales.add(animals("Fox",R.drawable.a3,R.raw.a3)) 

 override fun getView(postion: Int, p1: View?, p2: ViewGroup?): View? { var anum = mylistofAnimals[postion] var myView = layoutInflater.inflate(R.layout.design,null) myView.anImage.setImageResource(anum.aImage!!) myView.anName.text = anum.aName!! myView.anImage.setOnClickListener { player = MediaPlayer() try { player!!.setDataSource(anum.aSound) player!!.prepare() player!!.start() }catch (ex:Exception){ } } return myView } 

最后是我的班级

 class animals{ var aName:String?=null var aImage:Int?=null var aSound:Int?=null constructor(aName:String,aImage:Int,aSound:Int){ this.aName = aName this.aImage = aImage this.aSound = aSound } 

}

有什么问题 ?

尝试在kotlin中使用以下代码:

 player = MediaPlayer() player.create(this,anum.aSound) player!!.start() 

下面的代码从java转换到kotlin。 希望它也可以运行。

编辑:按照@ bakawali建议,而不是这个使用view来获取context

 val mediaPlayer = MediaPlayer.create(mView.Context, resID) mediaPlayer.start() 

你的resID将如下所示:

 var resID = getResources().getIdentifier(anum.aSound, "raw", getPackageName()) 

确保anum.aSound只是没有扩展名的声音

例如:声音文件:ringtone.mp3 – 写入:

 .getIndentifier("ringtone","raw",getPackageName())