如何解决什么是 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 举报,一经查实,本站将立刻删除。