2

Possible Duplicate:
Android: out of memory exception in Gallery

I am trying to display my device gallery in a grid view. Then on selecting a particular image from gallery grid view, I am uploading that image on server. There is no problem on uploading the image. But there is a problem on displaying the sd card images. My code is like below.

To display the gallery..

private void displayGallery() {

  Uri uri = MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI; // Where images are stored
  displaySdCard();
  String[] projection = {
    MediaStore.Images.ImageColumns._ID,  
    MediaStore.Images.ImageColumns.DATA, // The columns we want
    MediaStore.Images.Thumbnails.IMAGE_ID,  
    MediaStore.Images.Thumbnails.KIND };
  String selection = MediaStore.Images.Thumbnails.KIND + "="  + // Select only mini's
  MediaStore.Images.Thumbnails.MINI_KIND;
  mCursor = this.managedQuery(uri, projection, selection, null, null); 
  if (mCursor != null) { 
   mCursor.moveToFirst();
   int size = mCursor.getCount();
   Uri[] imgUri = new Uri[size];
   for(int k = 0; k < size; k++) {
    mCursor.moveToPosition(k);
       int id = mCursor.getInt(mCursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID));
       Uri img_uri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+id);
       imgUri[k] = img_uri;
   }


   GalleryImageAdapter galleryImageAdapter = new GalleryImageAdapter(this, imgUri); //(this, mCursor, size);
   gotoPage(pageGallery);
   grid_main.setAdapter(galleryImageAdapter);


  } else 
   showToast(this, "Gallery is empty.");
 }

The adapter..

public class GalleryImageAdapter extends BaseAdapter{

 Context mContext;

 public static final int ACTIVITY_CREATE = 10;

 int i = 0;

 private int mImg_uri;

 private Cursor mCursor;


 public GalleryImageAdapter(Context Cursor cursor, int img_uri){
  mContext = c;
  mCursor = cursor;
  mImg_uri = img_uri

 }
 @Override
 public int getCount() {
  // TODO Auto-generated method stub
  return mUri.length;
 }

 public View getView(int position, View convertView, ViewGroup parent) {
  // TODO Auto-generated method stub
  View v;
  if(convertView==null){
   LayoutInflater li = (LayoutInflater)mContext.getSystemService(mContext.LAYOUT_INFLATER_SERVICE);
   v = li.inflate(R.layout.album_img, null);

   ImageView iv = (ImageView)v.findViewById(R.id.icon_image);

   try {
    mCursor.moveToPosition(position);
       int id = mCursor.getInt(mCursor.getColumnIndexOrThrow(MediaStore.Images.ImageColumns._ID));
       Uri img_uri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, ""+id);
       iv.setImageURI(img_uri );

   }
   catch(Exception ex) {
    ex.printStackTrace();
   }


  }
  else
  {
   v = convertView;
  }
  return v;
 }
 @Override
 public Object getItem(int position) {
  // TODO Auto-generated method stub
  return null;
 }
 @Override
 public long getItemId(int position) {
  // TODO Auto-generated method stub
  return 0;
 }
}

First time the gallery is displaying properly. But from 2nd time onwards its giving the following error...

01-24 15:42:24.788: ERROR/AndroidRuntime(8747): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:375)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:212)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:663)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.graphics.drawable.Drawable.createFromStream(Drawable.java:641)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.ImageView.resolveUri(ImageView.java:491)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.ImageView.setImageURI(ImageView.java:287)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at com.mob.app.GalleryImageAdapter.getView(GalleryImageAdapter.java:71)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.AbsListView.obtainView(AbsListView.java:1269)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.GridView.makeAndAddView(GridView.java:1207)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.GridView.makeRow(GridView.java:263)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.GridView.fillDown(GridView.java:218)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.GridView.fillFromTop(GridView.java:334)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.GridView.layoutChildren(GridView.java:1104)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.AbsListView.onLayout(AbsListView.java:1113)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.View.layout(View.java:6133)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.View.layout(View.java:6133)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.View.layout(View.java:6133)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.layoutHorizontal(LinearLayout.java:1108)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.onLayout(LinearLayout.java:920)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.View.layout(View.java:6133)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.LinearLayout.onLayout(LinearLayout.java:918)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.View.layout(View.java:6133)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.View.layout(View.java:6133)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.View.layout(View.java:6133)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.ViewRoot.performTraversals(ViewRoot.java:929)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.os.Looper.loop(Looper.java:123)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at android.app.ActivityThread.main(ActivityThread.java:3948)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at java.lang.reflect.Method.invokeNative(Native Method)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at java.lang.reflect.Method.invoke(Method.java:521)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
01-24 15:42:24.788: ERROR/AndroidRuntime(8747):     at dalvik.system.NativeStart.main(Native Method)

Please let me know if anyone has any solution.

Community
  • 1
  • 1
Debarati
  • 3,296
  • 2
  • 18
  • 30
  • htt are lots of answers for ur que:see this:[http://stackoverflow.com/questions/3238388/android-out-of-memory-exception-in-gallery](http://stackoverflow.com/questions/3238388/android-out-of-memory-exception-in-gallery) – chikka.anddev Jan 24 '11 at 10:32

0 Answers0