首页 > 解决方案 > Android mediaPlayer setDataSource 失败,给出 IOException

问题描述

这个问题很奇怪。问题是,每当我尝试使用时间戳字符串命名文件时,setDataSource 方法都无法给出 IOException,但如果我给出包含诸如“Hello.m4a”之类的字母的名称,则它可以正常工作。

以下代码给出错误:

java.io.IOException:setDataSource 失败。

outputFile =Environment.getExternalStorageDirectory()+"/Notes/Audio/AUD_";

private String getTimeStamp() {
    Calendar calendar = Calendar.getInstance();


    return new SimpleDateFormat("ddMMyyyyHHmmss",Locale.ENGLISH).format(calendar.getTimeInMillis())+".m4a";


}
mediaPlayer.setDataSource(outputFile+getTimeStamp());
mediaPlayer.prepare();

以下代码工作正常

outputFile =Environment.getExternalStorageDirectory()+"/Notes/Audio/AUD_";

private String getTimeStamp() {
    return "hello.m4a"
}

mediaPlayer.setDataSource(outputFile+getTimeStamp());
mediaPlayer.prepare();

我想用时间戳命名文件以轻松构建文件。

标签: javaandroid

解决方案


setDataSource(String path) 设置要使用的数据源(文件路径)。

文件的路径不能为 null
否则你会得到一个错误 - 在你的情况下是一个IOException.

此外,您正在尝试访问不存在的文件。表达方式

SimpleDateFormat("ddMMyyyyHHmmss",Locale.ENGLISH).format(calendar.getTimeInMillis())+".m4a"

使用当前时间创建一个字符串,该字符串在您的目录中不存在。

您应该传递确切的文件路径。


推荐阅读