Android 11中的等价于'/dev/null'是什么?

10

Android 11在文件存储和访问方面引入了多个更改。显然,其中一个更改是无法将输出目标指向“/dev/null”(我的情况实际上正是在这个旧问题中解释的)。

尽管引用的问题解决了特定问题,但仍有一个问题没有回答:Android 11中类似于'/dev/null'的等效物是什么。也就是说,如果不需要特定操作的输出(在我们的情况下,是创建一个很大的文件的操作),应该如何处理。

2个回答

2
最终我通过以下方式解决了我的问题(答案针对MediaRecorder问题,但也可以推广到其他情况):
fun MediaRecorder.setOutputFile(context: Context) {
    val tmpRecordingFolder = File(context.filesDir, "tmp_media")
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
        setOutputFile(File(tmpRecordingFolder, "recording.mp3"))
    } else {
        setOutputFile("/dev/null")
    }
}

基本上我正在将输出设置为内部存储。希望文件不会变得过大,并且我正在尽可能多地在代码中删除文件。这似乎适用于较新的设备,目前还没有遇到存储问题,但解决方案尚未推出到生产环境。如果有问题,我会更新我的答案。


1

我曾经遇到过同样的问题,你必须指定一个路径,因为在Android 11中,如果你没有提供路径,MediaRecorder将会崩溃。为了避免写入大量数据,你可以尝试通过停止/重新启动MediaRecorder来刷新文件。我也处理了几天这个问题。

我在这里回答了更详细的答案: MediaRecorder Android 11 start failed -1004


这并未回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - cyroxis
我编辑了我的答案,使其更易理解。 - Kaba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接