我是android开发的新手,试图播放一个简单的音频文件。我将音频文件组织在多个嵌套文件夹中。
这是磁盘“ app / src / main / res / raw / sounds / first / nested / my_sound_1.mp3”上的完整源代码……当然,不同文件夹中还有其他文件。
这是我用来播放音频文件的方法
fun audioPlayer(path : String, fileName: String) {
var mediaPlayer = MediaPlayer()
try {
mediaPlayer.setDataSource(path + File.separator + fileName)
mediaPlayer.prepare()
mediaPlayer.start()
} catch (e: Exception) {
e.printStackTrace()
}
}
在按钮单击事件中,我正在使用此代码
audioPlayer("raw.sounds.first.nested", "my_sound_1.mp3")
这是错误。
java.io.IOException: setDataSource failed.
答案 0 :(得分:0)
这是磁盘“ app / src / main / res / raw / sounds / first / nested / my_sound_1.mp3”上的完整来源
首先,这似乎是开发计算机上的一个文件,您正尝试将其作为原始资源打包到您的应用中。
第二,资源目录不能具有子目录。您需要摆脱sounds/first/nested/
并将MP3文件放入raw/
。
这是我用来播放音频文件的方法
资源是开发计算机上的文件。它不是设备上的文件。
有a static create()
method on MediaPlayer
that takes a Context
and a resource ID。改用它:
fun audioPlayer(context: Context, rawResourceId: Int) {
val mediaPlayer = MediaPlayer(context, rawResourceId)
mediaPlayer.prepare()
mediaPlayer.start()
}
,并通过您的活动或服务将其称为audioPlayer(this, R.raw.my_sound_1)
。