не всегда получается правильное изображение - PullRequest
0 голосов
/ 02 апреля 2012

У меня есть пользовательская камера, у которой есть публичный метод для получения миниатюры последнего изображения, сохраненного в определенной папке на 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/")));

при удалении и записи новых файлов на эту SDCard /папка, но она, кажется, не работает, плюс она вызывает это надоедливое сообщение о том, что sdcard монтируется ..

любая помощь будет признательна

1 Ответ

0 голосов
/ 02 апреля 2012

Я писал это в комментарии, но я опишу детали здесь.Многочисленные проблемы:

  • listFiles не гарантирует порядок.Вам нужно отсортировать файлы по последнему измененному.
  • Вы не должны обращаться к "/ sdcard" напрямуюВаш второй фрагмент кода имеет Environment.getExternalStorageDirectory().Используйте это.
  • Вы получаете сообщения о SDCARD?Откуда они?Если вы подключите его к локальному компьютеру, вы не сможете получить к нему доступ из приложения, пока оно подключено.
...