0

我有一个自定义相机,它有一个公共方法来获取保存到 sdcard 上特定文件夹的最后一张图像的缩略图......

该方法如下所示:

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/")));

在删除新文件并将新文件写入该 sdcard/文件夹时,但它似乎并没有解决问题,而且它会强制发出关于正在挂载 sdcard 的烦人 toast 消息。

任何帮助,将不胜感激

4

1 回答 1

0

我在评论中写了这个,但我会把细节放在这里。多个问题:

  • listFiles 不保证顺序。您需要按上次修改对文件进行排序。
  • 您不应该直接访问“/sdcard”。您的第二段代码具有Environment.getExternalStorageDirectory(). 用那个。
  • 您收到有关 SDCARD 的消息?他们来自哪里?如果您将其挂载到本地计算机,则在挂载时您将无法从应用程序访问它。
于 2012-04-02T03:37:18.763 回答