gpt4 book ai didi

android - 无法在 storage/emulated/0 中创建目录和保存相机拍摄的照片

转载 作者:行者123 更新时间:2023-11-29 23:22:21 25 4
gpt4 key购买 nike

首先,我正在使用我的 Google Pixel XL(第一代 32 GB 版本,运行 Android 9 API 级别 28)测试此应用

基本上,我正在尝试制作一个基于 Android Camera 2 API 的相机应用程序(我刚刚从 https://github.com/googlesamples/android-Camera2Basic 下载示例代码)。我被卡住了,因为我试图将相机拍摄的照片保存到“/storage/emulated/0/”内的“Pictures”文件夹中。

但是,由于某些原因,即使我似乎能够做到这一点,但当我使用 ES 文件资源管理器检查它们时,文件夹和图片文件不存在。

到目前为止,我已经尝试了 3 种方法:

尝试 #1:

    mFile = new File(getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "newPicture.jpg");
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){

mFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "picture.jpg");
mFile.mkdirs();
}

尝试 #2:

    File filePath = new File(Environment.getExternalStorageDirectory().getPath(),"randomFolder");
if(!filePath.exists()){
filePath.mkdirs();
}
String fullPathName = filePath.getAbsolutePath() + "/" + "newPicture.jpg";
mFile = new File(fullPathName);

尝试 #3:

    mFile = new File(fullPathName);
File filePath = new File(Environment.getExternalStorageDirectory() + "/Pictures/");
if (!filePath.exists()){
filePath.mkdirs();
}
mFile = new File(filePath,"newPicture.jpg");

mFile是“newPicture”保存到的文件路径,基本上应该保存到“/storage/emulated/0/Pictures/newPicture.jpg”

现在,我尝试使用 getExternalFilesDir() 方法将图片保存到 /storage/emulated/0/Android/data/com.***.***[包名]/files/Pictures/newPicture.jpg”,在这种情况下,它完全可以工作!但是我真的想将图片保存到 /storage/emulated/0 目录,因为我希望用户以后能够轻松访问数据。

为了更好地说明这一点,我记录了应用程序的运行情况,然后拍了一张照片并将其保存为 gif 格式,并上传到 imgur 就在这里: https://imgur.com/Szpc1HR

看到了吗?图片似乎已成功保存到“/storage/emulated/0/Pictures/newPicture.jpg”,但是当我去 ES 文件资源管理器查看图片时,“图片”文件夹没有创建,nada。

我实在是无计可施哈哈,有谁知道这个问题的解决方案吗?任何建议将不胜感激

附言差点忘了说,我已经在AndroidManifest.xml中添加了权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

最佳答案

正如有人在这篇文章中所说:

how-can-i-access-storage-emulated-0-dcim-on-android-device,“/storage/emulated/”文件夹实际上并不存在。它可能被称为“符号链接(symbolic link)”,或者更简单地说,是对实际数据存储位置的引用。您需要在设备上找到存储它的实际物理位置。

也许这个链接会有所帮助,或者这个 Can't create a directory on /storage/emulated/0 on emulator .

关于android - 无法在 storage/emulated/0 中创建目录和保存相机拍摄的照片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54073476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com