我创建应用程序动物的声音 但我有一个问题声音没有播放 具有姓名,图像和声音的动物名单代码
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
}
}
问题是什么?
答案 0 :(得分:1)
以上答案对我有所帮助,但这对我当前的项目很有用。我希望它能在不久的将来对其他人有所帮助。
fun playSound() {
var resId = getResources().getIdentifier(R.raw.sawing.toString(),
"raw", activity?.packageName)
val mediaPlayer = MediaPlayer.create(activity, resId)
mediaPlayer.start()
}
sawing是原始文件夹中我文件的名称。 我正在片段中使用此功能。 如果您不了解,请乐意为您解释。
答案 1 :(得分:1)
fun playPhrase(view: 查看) { val buttonPressed: 按钮 = 以按钮的形式查看 Toast.makeText(this, buttonPressed.getTag().toString(), Toast.LENGTH_SHORT).show()
val mplayer: MediaPlayer = MediaPlayer.create(this, resources.getIdentifier(
buttonPressed.tag.toString(), "raw", packageName))
mplayer.start()
}
使用 "android:tag="mysound" 播放声音
答案 2 :(得分:0)
尝试在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())