2012-04-02 19 views
0

我有了用於獲取保存在SD卡的特定文件夾,上圖像的縮略圖的公共方法自定義相機...並不總是得到正確的圖像

該方法是這樣的:

public void getGalleryThumb(){ 
      // TODO add Logic for gallery images.. 
      File sdDir = new File("/sdcard/LC/images"); 
      File[] sdDirFiles = sdDir.listFiles(); 
      if(sdDir.length()>0){ 
       File lastPhoto = sdDirFiles[0]; 
       Bitmap myBitmap = BitmapFactory.decodeFile(lastPhoto.getAbsolutePath()); 
       //SET MY IMAGE VIEW BITMAP TO LAST FILE IN sdDIRFiles 
       photo.setImageBitmap(myBitmap); 
       btn_gallery.setVisibility(View.VISIBLE); 
      } 
      //Toast.makeText(getBaseContext(), "num images in gal:"+sdDirFiles.length +"last image name: "+sdDirFiles[0], Toast.LENGTH_LONG).show(); 

     } 

我注意到,如果我刪除從照片文件夾上面的方法並不總是檢索正確的圖像。我已經使用:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, 
         Uri.parse("file://"+ Environment.getExternalStorageDirectory()+"/LC/images/"))); 

在刪除和寫入新的網絡連接LES到SD卡/文件夾,但它似乎並沒有這樣的伎倆,再加上它迫使有關安裝的SD卡這惱人的敬酒的短信..

任何幫助,將不勝感激

+0

如果你想要最後一張圖片,你需要對文件進行排序。 'listFiles'不保證任何東西。 – 2012-04-02 03:34:17

回答

0

我在評論寫這,但我會在這裏提供細節。多個問題:

  • listFiles並不保證順序。您需要通過上次修改來對文件進行排序。
  • 您不應直接訪問「/ sdcard」。你的第二段代碼有Environment.getExternalStorageDirectory()。使用它。
  • 您收到有關SDCARD的消息?他們來自哪裏?如果您將其安裝到本地計算機上,則無法在安裝它時從應用程序訪問它。
+0

這些文件被命名爲一個時間戳..所以我認爲一個列表將是足夠的,直到我刪除圖像..我假設該消息來自sendbroadcast – erik 2012-04-02 07:52:18

+0

你應該仍然按照需要排序它們,因爲沒有保證如何將文件返回。操作系統可能會做一些奇怪的洗牌。儘管如此,排序它們非常簡單。看看Collections.sort。 – 2012-04-02 16:42:55

相關問題