使用ContentResolver.insert创建AAC音频时,如何直接生成.m4a后缀文件?
直接生成带.m4a后缀的AAC音频文件
当然可以直接生成,不用后续重命名,核心是在指定DISPLAY_NAME时直接带上.m4a后缀,同时建议让MIME类型和格式对应更规范。
修改方案:
- 把
DISPLAY_NAME的值从"audio"改成"audio.m4a",明确指定文件名后缀; - 可选(更规范):将MIME类型从
"audio/aac"改为audio/mp4——因为.m4a本质是MP4容器封装的AAC,标准MIME类型是audio/mp4,这样能避免系统因类型不匹配做自动修正。
修改后的代码:
val contentValues = ContentValues().apply { put(MediaStore.Audio.Media.IS_PENDING, 1) put(MediaStore.Audio.Media.DISPLAY_NAME, "audio.m4a") // 直接指定带.m4a后缀的文件名 put(MediaStore.Audio.Media.DATE_ADDED, System.currentTimeMillis() / 1000) put(MediaStore.Audio.Media.MIME_TYPE, "audio/mp4") // 对应m4a的标准MIME类型 put(MediaStore.Audio.Media.RELATIVE_PATH, "Music/My_App_Name") } val uri = contentResolver.insert( MediaStore.Audio.Media.getContentUri(volume), contentValues )!!
这样执行插入操作后,系统会直接生成audio.m4a文件,无需后续重命名步骤。
内容的提问来源于stack exchange,提问作者user25
相关产品推荐
相关产品推荐

