无法读取通话自动录音文件

2023-07-26 15:43:12 +08:00
 atusss
String directoryPath = "/storage/emulated/0/Sounds/CallRecord/"
在这个文件夹里,确实是有录音文件的。但是我通过
File[] callRecordFiles = soundRecorderDir.listFiles();
只能获取到一个/storage/emulated/0/Sounds/CallRecord/.nomedia
如果我把录音文件放在/storage/emulated/0/Sounds/就能正常获取到
用的是华为手机,请问应该如何处理呢?
8160 次点击
所在节点    Android
10 条回复
atusss
2023-07-26 15:52:32 +08:00
有没有老哥会的啊
xmai
2023-07-26 16:29:38 +08:00
被 `.nomedia` 过滤 了

```
File[] callRecordFiles = soundRecorderDir.listFiles(new FileFilter() {
@Override
public boolean accept(File file) {
// 排除以 .nomedia 结尾的文件
return !file.getName().toLowerCase().endsWith(".nomedia");
}
});
```
atusss
2023-07-26 16:51:24 +08:00
@xmai 不行呢,刚试了。以前 callRecordFiles 还有一个 file,现在过滤了.nomedia ,就直接 callRecordFiles 啥也没有了。
atusss
2023-07-26 16:52:07 +08:00
@xmai 但是/storage/emulated/0/Sounds/CallRecord/ 文件夹里面是有录音文件的。
xmai
2023-07-26 17:07:44 +08:00
从 Android 10 ( API 级别 29 )开始,对通话录音文件的访问进一步受到限制,并且不再直接支持通过标准的文件 I/O 接口读取通话录音文件。你可以试试使用 MediaStore API 。
dingwen07
2023-07-26 17:12:54 +08:00
54lazycat
2023-07-26 17:50:52 +08:00
老哥是不是接了侠客行的外包?
atusss
2023-07-26 18:00:40 +08:00
@dingwen07 感觉不是这样的,我看有这个功能的 APP 没有去选,文件夹内容,授权,而是直接就获取了文件。
atusss
2023-07-26 18:01:56 +08:00
@54lazycat 不是哦,MD 本来我说不可以实现,但是偏偏竞品的就可以,我只能苦哈哈的找办法实现了。
atusss
2023-07-27 10:56:23 +08:00
此贴终结
我把 targetSdk 降低到了 26 就能正常读取文件了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/959917

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX