找不到Android MediaPlayer文件路径

时间:2018-07-20 20:29:11

标签: java android kotlin 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.

1 个答案:

答案 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)