Android上的照片库更新

时间:2013-04-19 08:25:04

标签: java android gallery

我在使用Eclipse开发的Android应用程序时遇到了麻烦。

问题在于,当我使用以下说明捕获新图像时:

intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,Uri.fromFile(file)); startActivityForResult(intent,TAKE_IMAGE); 设备将文件正确存储在正确的目标(extSdCard)中,但在重新启动设备之前,以下代码应该重新加载目录内容,但不会找到新文件。

images.clear();
final String[] columns = { MediaStore.Images.Thumbnails._ID };
final String orderBy = MediaStore.Images.Media._ID;
String condition = MediaStore.Images.Media.DATA + " like '%/"+
Singleton.getCurrentPatient().getNrdo()+"/%'";

Cursor imagecursor =  getContentResolver().query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
            condition, null, orderBy);

if(imagecursor != null){
 int image_column_index = imagecursor
                .getColumnIndex(MediaStore.Images.Media._ID);
 int count = imagecursor.getCount();
 for (int i = 0; i < count; i++) {
            imagecursor.moveToPosition(i);
       int id = imagecursor.getInt(image_column_index);
       ImageItem imageItem = new ImageItem();
      imageItem.id = id;
      lastId = id;
      imageItem.img = MediaStore.Images.Thumbnails.getThumbnail(
                    getApplicationContext().getContentResolver(), id,
                    MediaStore.Images.Thumbnails.MICRO_KIND, null);
     images.add(imageItem);
 }
   imagecursor.close();
 }
notifyDataSetChanged();

}

不幸的是,我尝试了很多解决方案而没有任何作用

我第一次使用此代码

mScanner = new MediaScannerConnection(
AndroidCustomGalleryActivity.this,new MediaScannerConnection.MediaScannerConnectionClient() {
    public void onMediaScannerConnected() {
      mScanner.scanFile(imageUri.getPath(), null /* mimeType */);
 }
    public void onScanCompleted(String path, Uri uri) {
     if (path.equals(imageUri.getPath())) {
         mScanner.disconnect();
                AndroidCustomGalleryActivity.this
             .runOnUiThread(new Runnable() {
                 public void run() {
                    updateUI();
                  }
        });
         }
         }
     });
mScanner.connect();

imageUri在onMediaScannerConnected方法中包含正确的路径,但从不调用onScanCompleted

我在捕获照片后尝试了这些说明

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, imageUri));    
updateUI(); 

再次,updateUI方法不会检测到新文件。

你能帮我吗?

1 个答案:

答案 0 :(得分:0)

使用它来代替你所有的东西:

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

在图库扫描程序完成后,使用以下代码从sdcard获取imageBitmap:

File imageFile = new File("/sdcard/gallery_photo_4.jpg");
ImageView jpgView = (ImageView)findViewById(R.id.imageView);
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getAbsolutePath());
jpgView.setImageDrawable(bitmap);