首页 > 解决方案 > 找不到 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.

标签: javaandroidkotlinandroid-mediaplayer

解决方案


这是磁盘“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).


推荐阅读