【发布时间】:2018-09-09 14:50:05
【问题描述】:
我正在尝试通过 Android 中的 MediaRecorder 类录制音频,将其保存在文件中,然后使用 MediaPlayer 播放。
在这里我选择要保存音频文件的文件:
currentDate = Calendar.getInstance().getTime();
condensedDate = currentDate.toString().replaceAll("\\s", "")
fileName = getExternalCacheDir().getAbsolutePath();
fileName += File.separator + condensedDate + ".3gp";
在这里我将它设置为MediaRecorder的输出文件
Recorder.setOutputFile(fileName);
然后,在另一个Activity 中,我使用MediaPlayer 播放该文件的音频:
MediaPlayer player = new MediaPlayer();
try {
player.setDataSource(fileName);
player.prepare();
player.start();
} catch (IOException e) {
e.printStackTrace();
}
这是问题开始的地方,没有播放任何内容,这是我的日志:
09-09 14:31:38.887 1522-26066/? E/FileSource: Failed to open file '/storage/emulated/0/Android/data/com.mycompany.dbmeter.pro/cache/SunSep0914:31:19GMT+00:002018.3gp'. (Permission denied)
09-09 14:31:38.887 1522-26066/? E/GenericSource: Failed to create data source!
09-09 14:31:38.887 25996-26064/com.mycompany.dbmeter.pro E/MediaPlayerNative: error (1, -2147483648)
这很奇怪,因为我一步步跟着官方的示例代码,可以找到here。
我尝试按照in this stack overflow post 的建议使文件世界可读。
我也尝试了here 的建议,但没有任何改变。
我做错了什么?
【问题讨论】:
-
您的清单中是否有
READ_EXTERNAL_STORAGE,您是否允许在您的应用中使用它?似乎这是许可的原因 -
不,我不需要,但我认为我不需要它,因为我在那里保存和读取其他文件没有任何问题。此外,现在它可以工作了。知道为什么该文件名可能有导致问题? (见我自己的答案)
标签: android android-mediaplayer mediarecorder