在Kotlin播放来自原始文件的声音

时间:2017-08-24 20:48:51

标签: android audio 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
}

}

问题是什么?

3 个答案:

答案 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())
相关问题