微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

什么是 Android 11 的“/dev/null”等价物

如何解决什么是 Android 11 的“/dev/null”等价物

Android 11 对文件存储和访问进行了多项更改。显然其中之一是不能再将输出定位到“/dev/null”(我的场景实际上在此 old question 中得到了准确解释)。

尽管所引用的问题解决了特定问题,但有一件事仍未得到解答:Android 11 与“/dev/null”的等价物是什么。也就是说,如果不需要特定操作的输出(在我们的例子中,它是一个创建大文件的操作)。

解决方法

最终我通过以下方式解决了我的问题(针对 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")
    }
}

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。