【问题标题】:What is Android 11's equivalent of '/dev/null'什么是 Android 11 的“/dev/null”等效项
【发布时间】:2021-04-24 20:26:09
【问题描述】:

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

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

【问题讨论】:

    标签: android android-11 dev-null


    【解决方案1】:

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

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

    【讨论】:

    【解决方案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")
        }
    }
    

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

    【讨论】:

      猜你喜欢
      • 2011-08-20
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 2012-05-17
      • 2013-11-26
      • 2012-05-05
      相关资源
      最近更新 更多