java - 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();
我想用时间戳命名文件以轻松构建文件。
解决方案
setDataSource(String path)
设置要使用的数据源(文件路径)。
文件的路径不能为 null。
否则你会得到一个错误 - 在你的情况下是一个IOException
.
此外,您正在尝试访问不存在的文件。表达方式
SimpleDateFormat("ddMMyyyyHHmmss",Locale.ENGLISH).format(calendar.getTimeInMillis())+".m4a"
使用当前时间创建一个字符串,该字符串在您的目录中不存在。
您应该传递确切的文件路径。
推荐阅读
- azure-devops - Azure DevOps:部署组作业状态是如何决定的?
- linux - 如何使用 bsub 为我的代码考虑两组输入
- ansible - 如果文件已被修改,如何跳过任务
- sql - 使用 Informatica powercenter 或 SQL 将列成对转换为行
- html - 将带有媒体查询 1 - 2 的 flexbox 重新组织为 2 -1
- c# - showdialog表单问题上的任务异步数据表
- python - 在 Pandas 中使用不同的数据框查找两个日期之间的最小值
- c# - 在 Newtonsoft.Json 中将 CamelCaseText 转换为 CamelCaseNamingStrategy
- javascript - 如何使用递归计算数组中数字的实例?
- python - 根据客户对数据框中的列进行排序