2015-11-26 43 views
0

我正在尝试创建一个auto-backup应用,其中从Camera拍摄的所有照片都将上传到Cloudinary。但是,我似乎无法让我的代码工作。我究竟做错了什么?在Android Studio中获取相机镜头

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为空(尽管已经采取了一些照片与相机)。

+1

可能是因为你的文件系统不hvae这条道路。 –

+0

首先,这不是摄像头应用程序的外部存储器上推荐的基础目录。这将是'DIRECTORY_DCIM'。其次,没有要求任何相机应用程序将照片存储在任何特定位置,更不用说您有权访问的照片。 有成千上万的Android设备型号。这些应用程序随附数百种不同的预装摄像头应用程序,并且有许多其他相机应用程序可通过Play商店等分销渠道获得。他们都可以做他们想做的。 – CommonsWare

+0

@CommonsWare谢谢,我已将它更正为DCIM并将编辑帖子。但是,这仍然导致listOfFiles为空。当然,必须有办法找到设备上的默认相机应用程序的保存位置? –

回答

0

使用Android设备监视器,我发现我的Android Studio中的摄像头图像的存储位置是“/ storage/0804-0A1C/DCIM/Camera”。

但是,即使递归检查(因为权限?),我仍无法从此目录读取数据。为了避免去题外话,我已经张贴下面链接了一个新问题:

Camera storage perms in Android Studio