Воспроизведение звуков из сырого файла в Котлине

Я создаю приложение Звуки животных, но у меня есть проблема. Звуки не играют. Код списка животных с именем, изображением и звуком.

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. Надеюсь, он также может работать.

    EDIT: в соответствии с предложением @bakawali вместо этого использования, чтобы получить context .

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

    Если ваш идентификатор будет следующим:

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

    убедитесь, что anum.aSound – это просто название звука без расширения

    Пример: Звуковой файл: ringtone.mp3 – написать:

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