【问题标题】:Having trouble saving images to a public directory [Kotlin]无法将图像保存到公共目录 [Kotlin]
【发布时间】:2021-04-27 23:20:59
【问题描述】:

所以我希望标题有意义,但这里有更多上下文。

我想制作自己的相机应用程序,我正在关注 Google Practice 的 cameraX。我已经让相机在我的实体手机上工作,但问题是我无法查看我拍摄的图像。奇怪的是图像会在第二天出现在画廊中,而不是在拍照后立即出现。

现在我不太清楚为什么会这样,但经过研究,似乎该文件没有保存在公共目录中,至少这是我屈服的结论。这是应用保存到的目录:/storage/emulated/0/Android/media/com.astro.openingcamera/openingCamera。

这是生成目录的代码块

    private fun getOutputDirectory(): File {
    val mediaDir = externalMediaDirs.firstOrNull()?.let {
        File(it, resources.getString(R.string.app_name)).apply { mkdirs() } }
    return if (mediaDir != null && mediaDir.exists())
        mediaDir else filesDir
}

那么有没有办法修改这个块,这样我就可以在拍照后立即查看图像?请记住,拍照后图片不会立即出现在图库中。

其他人已经指出了这个documentation,但我不太明白

提前致谢

【问题讨论】:

  • 在使用过的设备上运行哪个 Android 版本?此外,您应该为您的新文件启动 mediascanner。然后它会被编入索引,您会立即在图库中看到它。
  • 我认为我使用的是 API 29 或 30。我还没有听说过媒体扫描仪,所以我很想研究一下

标签: android kotlin androidx android-camerax


【解决方案1】:

我找到了 blackapps 建议的解决方案,我使用 mediascanner 更新目录,所以这是我的代码

 MediaScannerConnection.scanFile(this ,
            arrayOf(outputDirectory.toString()),null,
    null) 

【讨论】:

    猜你喜欢
    • 2014-03-18
    • 2012-08-13
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    相关资源
    最近更新 更多