java - 找不到 Android MediaPlayer 文件路径
问题描述
我是 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.
解决方案
这是磁盘“app/src/main/res/raw/sounds/first/nested/my_sound_1.mp3”上的完整源代码
首先,这似乎是您的开发机器上的一个文件,您正试图将其作为原始资源打包到您的应用程序中。
其次,资源目录不能有子目录。您需要摆脱sounds/first/nested/
MP3 文件并将其放入raw/
.
这是我用来播放音频文件的方法
资源是您的开发机器上的一个文件。它不是设备上的文件。
有一个静态create()
方法MediaPlayer
需要一个Context
和一个资源 ID。改用它:
fun audioPlayer(context: Context, rawResourceId: Int) {
val mediaPlayer = MediaPlayer(context, rawResourceId)
mediaPlayer.prepare()
mediaPlayer.start()
}
并从您的活动或服务中将其称为audioPlayer(this, R.raw.my_sound_1)
.