gpt4 book ai didi

Android Q,如何使用正确的文件名使用 MediaStore 保存录音?

转载 作者:行者123 更新时间:2023-12-03 13:41:44 25 4
gpt4 key购买 nike

我想将使用我的应用程序录制的 mp3 文件存储到带有 MediaStore 的 Music 文件夹中,用于 Android 10 的新“范围存储”。
此方法效果很好,但文件以时间戳命名(例如 1576253519449),没有 .mp3扩大。
如果我使用文件管理器手动添加扩展名,则文件被正确记录。
我如何使用 fileName + ".mp3"命名文件?

String fileName; //Obtained by intent
MediaRecorder audioRecorder;
Uri audiouri;
ParcelFileDescriptor file;

private void startRecording() throws IOException {
ContentValues values = new ContentValues(4);
values.put(MediaStore.Audio.Media.TITLE, fileName);
values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (System.currentTimeMillis() / 1000));
values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/mp3");
values.put(MediaStore.Audio.Media.RELATIVE_PATH, "Music/Recordings/");

audiouri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values);
file = getContentResolver().openFileDescriptor(audiouri, "w");

if (file != null) {
audioRecorder = new MediaRecorder();
audioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
audioRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
audioRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
audioRecorder.setOutputFile(file.getFileDescriptor());
audioRecorder.setAudioChannels(1);
audioRecorder.prepare();
audioRecorder.start();
}
}

enter image description here

还有一个问题: MediaStore.Audio.Media.RELATIVE_PATH仅适用于 Android 10。
如何保持与旧版本的追溯兼容性?

编辑:
为了向后兼容,您可以删除 values.put(MediaStore.Audio.Media.RELATIVE_PATH, "Music/Recordings/"); :文件将直接保存在 Music 目录中。
或使用 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q)仅在 Android 10 上添加子目录。

最佳答案

正如@blackapps 建议的那样,可以使用 DISPLAY_NAME属性(property)。

关于Android Q,如何使用正确的文件名使用 MediaStore 保存录音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59327033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com