Arrow
Arrow

Reputation: 163

code doesnt work on device in android

i want to display the stored images from folder AutoistDiary in sdcard into gallery, the activity starts in emulator in which i have wrote that code,but when i execute same apk on my device ,it lets force close,

here is my code,it through force close in actual device, what to do in such a case ?

//get the gallery view---------------------------------------------------------------------        
         Gallery g = (Gallery) findViewById(R.id.gallery);  
            g.setAdapter(new ImageAdapter(this, SDCard()));           
            g.setOnItemClickListener(new OnItemClickListener() 
            {  
                public void onItemClick(AdapterView<?> parent,  View v, int position, long id) 
                {  

                    Log.i("position", Integer.toString(position));
                }  
            });  




    }
    private List<String> SDCard()  
    {  
        Log.i("inside", "SDCard() method");
     List<String> tFileList = new ArrayList<String>();  
     File dir = Environment.getExternalStorageDirectory();
//   File yourFile = new File(dir, "path/to/the/file/inside/the/sdcard.ext");
     //It have to be matched with the directory in SDCard  
     File f = new File( dir, "/AutoistDiary/");  
    //File f = new File(  "/sdcard/");
     File[] files=f.listFiles();  

     for(int i=0; i<files.length; i++)  
     {  
      File file = files[i];  
      /*It's assumed that all file in the path 
        are in supported type*/  
      tFileList.add(file.getPath());

      msg="getting autioistdiary file path" + i+tFileList;
      showToastMessage(msg);

     }  

     return tFileList;  
    } 

    public class ImageAdapter extends BaseAdapter 
    {  
        int mGalleryItemBackground;  
        private Context mContext;  
        private List<String> FileList;  

        public ImageAdapter(Context c, List<String> fList) 
        {  
            mContext = c;  
            FileList = fList;  
            TypedArray a = obtainStyledAttributes(R.styleable.Gallery1);  
            mGalleryItemBackground = a.getResourceId(  
            R.styleable.Gallery1_android_galleryItemBackground,0);  
            a.recycle();  
        }  

        public int getCount() {  
            return FileList.size();  
        }  

        public Object getItem(int position) {  
            return position;  
        }   

        public long getItemId(int position) {  
            return position;  
        }  

        public View getView(int position, View convertView,  
          ViewGroup parent) {  
            ImageView i = new ImageView(mContext);  

            Bitmap bm = BitmapFactory.decodeFile(FileList.get(position).toString());  
            i.setImageBitmap(bm);  

            i.setLayoutParams(new Gallery.LayoutParams(100,70));  
            i.setScaleType(ImageView.ScaleType.FIT_XY);  
            i.setBackgroundResource(mGalleryItemBackground);  

            Log.i("images ", "added to gallery from card");
            msg="added to gallery from card";
            showToastMessage(msg);
            return i;  
        }  
    }  
    public TypedArray obtainStyledAttributes(int theme) {  
        // TODO Auto-generated method stub  
        return null;  
    } 

here is my logcat 12-27 12:02:42.016: I/inside(1217): docsshow 12-27 12:02:42.056: D/szipinf(1217): Initializing inflate state 12-27 12:02:42.086: D/szipinf(1217): Initializing inflate state 12-27 12:02:42.216: I/inside(1217): SDCard() method 12-27 12:02:42.996: D/skia(1217): --- SkImageDecoder::Factory returned null 12-27 12:02:43.017: I/images(1217): added to gallery from card 12-27 12:02:43.866: D/skia(1217): --- SkImageDecoder::Factory returned null 12-27 12:02:43.886: I/images(1217):

Upvotes: 0

Views: 155

Answers (1)

Puneet
Puneet

Reputation: 611

I gone through your given code there may be two issues, one it is not getting SDCard path, and returning Bitmap null, or images are two large to display. Hope this will help you

if (requestCode == ACTIVITY_SELECT_IMAGE)
      {
       if (resultCode == Activity.RESULT_OK) 
        {
            Uri selectedImage = data.getData();
            galleryImatePath = getRealPathFromURI(selectedImage);

            Bitmap bitmapThumbnail = null;

            BitmapFactory.Options bfOptions =new BitmapFactory.Options();
            try 
            {

                bfOptions.inDither=false;                     //Disable Dithering mode
                bfOptions.inPurgeable=true;                   //Tell to gc that whether it needs free memory, the Bitmap can be cleared
                bfOptions.inInputShareable=true;              //Which kind of reference will be used to recover the Bitmap data after being clear, when it will be used in the future
                bfOptions.inSampleSize=5;
                bfOptions.inTempStorage=new byte[32 * 1024];
                //highImageReso.setVisibility(View.VISIBLE);
                imgbutCross.setVisibility(View.VISIBLE);
                imgbutPriview.setVisibility(View.VISIBLE);

                /**
                 * Algorithm for uploading picture with low resolution                  
                 */
                InputStream stream;
                try {
                    stream = getContentResolver().openInputStream(selectedImage);
                    myImage = BitmapFactory.decodeStream(stream, null , bfOptions);
                } catch (Exception e2) {
                    e2.printStackTrace();
                }
                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                myImage.compress(Bitmap.CompressFormat.JPEG, 100, bos);
                bitmapdata = bos.toByteArray();

                /**
                 * Algorithm for selected image preview on Add Note Popup                   
                 */
                InputStream streamFromLocation = null;
                try {
                    streamFromLocation = getContentResolver().openInputStream(selectedImage);
                    bitmapThumbnail = decodeSampledBitmapFromResource(streamFromLocation, 120, 120, selectedImage);

                } catch (Exception e) {
                    e.printStackTrace();
                }
                imgbutPriview.setImageBitmap(bitmapThumbnail);
                isPhoto = true;

            } 
            catch (OutOfMemoryError e)
            {
                System.out.println("OutofMemoryException------------------"+e.toString());
                bfOptions.inDither=false;                     //Disable Dithering mode
                bfOptions.inPurgeable=true;                   //Tell to gc that whether it needs free memory, the Bitmap can be cleared
                bfOptions.inInputShareable=true;              //Which kind of reference will be used to recover the Bitmap data after being clear, when it will be used in the future
                bfOptions.inSampleSize=8;
                bfOptions.inTempStorage=new byte[32 * 1024];

                try {
                    InputStream stream;
                    try {
                        stream = getContentResolver().openInputStream(selectedImage);
                        myImage = BitmapFactory.decodeStream(stream, null , bfOptions);
                    } catch (Exception e2) {
                        // TODO Auto-generated catch block
                        e2.printStackTrace();
                    }
                } catch (OutOfMemoryError e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }

                ByteArrayOutputStream bos = new ByteArrayOutputStream();
                myImage.compress(Bitmap.CompressFormat.JPEG, 100, bos);
                bitmapdata = bos.toByteArray();

                /**
                 * Algorithm for selected image preview on Add Note Popup                   
                 */
                InputStream streamFromLocation = null;
                try {
                    streamFromLocation = getContentResolver().openInputStream(selectedImage);
                    bitmapThumbnail = decodeSampledBitmapFromResource(streamFromLocation, 120, 120, selectedImage);

                } catch (Exception e2) {
                    e2.printStackTrace();
                }
                imgbutPriview.setImageBitmap(bitmapThumbnail);

                isPhoto = true;
            }
            catch(Exception e)
            {

            }
        } 
      }

Upvotes: 2

Related Questions