【问题标题】:Get camera roll in Android Studio在 Android Studio 中获取相机胶卷
【发布时间】:2015-11-26 14:45:41
【问题描述】:

我正在尝试创建一个auto-backup 应用程序,其中从Camera 拍摄的所有照片都将上传到 Cloudinary。但是,我似乎无法让我的代码正常工作。我做错了什么?

    class UploadPhotos implements Runnable {

        @Override
        public void run() {
            File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
            File[] listOfFiles = storageDir.listFiles();

            if (listOfFiles != null) {
                System.out.println("code does not get this far");
                for (int i = 0; i < listOfFiles.length; i++) {
                    if (listOfFiles[i].isFile()) {
                        System.out.println("File " + listOfFiles[i].getName());
                        try {
                            cloudinary.uploader().upload(listOfFiles[i], ObjectUtils.emptyMap());
                            System.out.print(listOfFiles[i] + " should have uploaded");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }

                    } else if (listOfFiles[i].isDirectory()) {
                        System.out.println("Directory " + listOfFiles[i].getName());
                    }
                }
            }
        }
    }

storageDir 路径在 Android Studio emulator 中显示为 /storage/0804-0A1C/DCIM,但 listOfFiles 为空(尽管使用相机拍摄了几张照片)。

【问题讨论】:

  • 可能是因为您的文件系统没有该路径。
  • 首先,这不是相机应用程序外部存储上推荐的基本目录。那将是DIRECTORY_DCIM。其次,没有要求任何相机应用程序将照片存储在任何特定位置,更不用说您可以访问的位置了。有数千种 Android 设备型号。这些相机预装了数百种不同的相机应用程序,并且通过 Play 商店等分销渠道提供了无数其他相机应用程序。他们都可以为所欲为。
  • @CommonsWare 谢谢,我已将其更正为 DCIM 并将编辑该帖子。但是,这仍然导致 listOfFiles 为空。肯定有办法找到设备上默认相机应用的保存位置吗?
  • “肯定有办法找到设备上默认相机应用的保存位置吗?” - 不。顺便说一句,所有DIRECTORY_ 位置都是基本目录。文件不一定直接存储在其中。对于DIRECTORY_DCIM,相机应用程序通常会设置一个子目录。因此,您将需要进行递归扫描。这在您的特定情况下无济于事(我的猜测:模拟器相机应用程序实际上并没有拍照),并且仍然无法在所有可能的设备上运行,但它至少会稍微改进您当前的算法。
  • @CommonsWare 那么,比如说,Facebook 应用程序如何在有人想要发帖时找到图像(例如insidefacebook.com/wp-content/uploads/2011/06/…)? Android Studio 确实通过网络摄像头拍照,并且它会持续重启,因此必须将图像保存在某个地方。

标签: java android image android-studio photo-gallery


【解决方案1】:

使用Android Device Monitor,我发现我的Android Studio中Camera图像的存储位置是“/storage/0804-0A1C/DCIM/Camera”。

但是,尽管进行了递归检查(因为权限?),我仍无法从该目录中读取。为避免跑题,我发布了一个新问题,链接如下:

Camera storage perms in Android Studio

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多