2015-11-26 37 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