android - 如何将录制的音频保存在特定位置
问题描述
使用 Media Recorder 时,我面临无效状态问题:4 如果我选择以下给出的任何其他路径:
fileName = Environment.getExternalStorageDirectory() + File.separator
+ Environment.DIRECTORY_DCIM + File.separator + "audiorecordtest.3gp";
我想将我的 3gp 文件保存到 DIRECTORY_DCIM 的子文件夹中。有什么方法可以在 DIRECTORY_DCIM 之外保存录音。
我正在关注https://developer.android.com/guide/topics/media/mediarecorder ,只有我所做的更改是权限和存储路径位置。
解决方案
尝试这个 ;
public void recordAndSaveAudioFile(String audioName) {
saved_path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + "Special Folder";
File destinationDirectory = new File(saved_path);
if (!destinationDirectory.exists()) {
destinationDirectory.mkdirs();
}
destinationFile = new File(destinationDirectory, audioName);
try {
FileOutputStream outputStream = new FileOutputStream(destinationFile);
outputStream.flush();
outputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
setupMediaRecorder(destinationFile);
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(this, "Recording...", Toast.LENGTH_SHORT).show();
}
private void setupMediaRecorder(File destination) {
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
mediaRecorder.setOutputFile(Uri.parse(String.valueOf(destination)).toString());
}
推荐阅读
- javascript - 如何自动提交价格过滤器?
- python - 如何使用枚举完成数组中的数组之间的匹配?
- reactjs - 为什么在 this.state 上使用 useState?
- oracle - 无法显示工资超过 1300 的员工
- javascript - 我想在我的数据表中添加 excel 按钮以进行 excel 导出
- ios - 在 URLSession.shared.dataTask 之后,它要么不返回错误,要么不成功
- javascript - 我应该如何修改我的搜索栏代码以同时影响 2 个表,而不仅仅是 1 个?
- python-3.x - 熊猫,如何使用带有多索引数据框的子集删除值?
- scala - 匹配表达式后,for循环不返回列表中的值
- javascript - 如何使模态窗口的标题固定在顶部