Search code examples
androidandroid-viewpagerandroid-sdcardandroid-imageandroid-gallery

how to save ViewPager Current image to sd card on button click


i am working on a image swipe app in which i am swiping images on ViewPager and i want to save current showing image to sd card on button click.

my code: SwipeActivity.java

package com.td.gridview;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;

public class SwipeActivity extends Activity {

    protected int curruntPosition;
    protected int hh;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.swipe_view);

        // get intent data
        Intent i = getIntent();

        // Selected image id
        final int position = i.getExtras().getInt("id");

        final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
        ImagePagerAdapter adapter = new ImagePagerAdapter();
        viewPager.setAdapter(adapter);
        viewPager.setCurrentItem(position);
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                // TODO Auto-generated method stub
                // Here you can set the wallpaper
                curruntPosition = arg0;
                if (curruntPosition == arg0) {
                    hh = 1;
                }
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
                // TODO Auto-generated method stub

            }

        });
        //
        Button bx = (Button) findViewById(R.id.xoom);
        bx.setOnClickListener(new View.OnClickListener() {
            public void onClick(View vx) {
                // // TODO Auto-generated method stub

                if (hh == 1) {
                    // Sending image id to FullScreenActivity
                    Intent i2 = new Intent(getApplicationContext(),
                            Full_Zoom.class);
                    // passing array index
                    i2.putExtra("id", curruntPosition);
                    startActivity(i2);
                } else {
                    // get intent data
                    Intent i3 = getIntent();

                    // Selected image id
                    int position = i3.getExtras().getInt("id");
                    // Sending image id to FullScreenActivity
                    Intent i2 = new Intent(getApplicationContext(),
                            Full_Zoom.class);
                    // passing array index
                    i2.putExtra("id", position);
                    startActivity(i2);
                }

            }
        });
        //

        // Save ViewPager current image  to sd card on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                // Save ViewPager current image  to sd card

            }
        });

    }

    public class ImagePagerAdapter extends PagerAdapter {
        int[] icons = MainActivity.ICONS;

        @Override
        public int getCount() {
            return icons.length;
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == ((ImageView) object);
        }

        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            Context context = SwipeActivity.this;
            ImageView imageView = new ImageView(context);
            // int padding = context.getResources().getDimensionPixelSize(
            // R.dimen.padding_large);
            // imageView.setPadding(padding, padding, padding, padding);
            imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            imageView.setImageResource(icons[position]);
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }

        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView((ImageView) object);
        }
    }

}

in this above code find this code: here i want to perform save image from viewpager to sd card

// Save ViewPager current image  to sd card on button click
        Button b1 = (Button) findViewById(R.id.wll);
        b1.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v2) {
                // // TODO Auto-generated method stub

                // Save ViewPager current image  to sd card

            }
        });

Solution

  • i found my answer:

    package com.td.gridview;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Random;
    
    import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.graphics.drawable.BitmapDrawable;
    import android.graphics.drawable.Drawable;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v4.view.ViewPager.OnPageChangeListener;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.Button;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    public class SwipeActivity extends Activity {
    
        Context mContext;
    
        //set save file location example: .getAbsolutePath() + "/Pictures");
        final File myDir = new File(Environment.getExternalStorageDirectory()
                .getAbsolutePath() + "/");
        boolean success = false;
    
        protected int curruntPosition;
        protected int hh;
    
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.swipe_view);
    
            final Context mContext;
            mContext = this;
    
            // get intent data
            Intent i = getIntent();
    
            // Selected image id
            final int position = i.getExtras().getInt("id");
    
            final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
            final ImagePagerAdapter adapter = new ImagePagerAdapter();
            viewPager.setAdapter(adapter);
            viewPager.setCurrentItem(position);
            viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    
                @Override
                public void onPageSelected(int arg0) {
                    // TODO Auto-generated method stub
                    // Here you can set the wallpaper
                    curruntPosition = arg0;
                    if (curruntPosition == arg0) {
                        hh = 1;
                    }
                }
    
                @Override
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void onPageScrollStateChanged(int arg0) {
                    // TODO Auto-generated method stub
    
                }
    
            });
            //
            Button bx = (Button) findViewById(R.id.xoom);
            bx.setOnClickListener(new View.OnClickListener() {
                public void onClick(View vx) {
                    // // TODO Auto-generated method stub
    
                    if (hh == 1) {
                        // Sending image id to FullScreenActivity
                        Intent i2 = new Intent(getApplicationContext(),
                                Full_Zoom.class);
                        // passing array index
                        i2.putExtra("id", curruntPosition);
                        startActivity(i2);
                    } else {
                        // get intent data
                        Intent i3 = getIntent();
    
                        // Selected image id
                        int position = i3.getExtras().getInt("id");
                        // Sending image id to FullScreenActivity
                        Intent i2 = new Intent(getApplicationContext(),
                                Full_Zoom.class);
                        // passing array index
                        i2.putExtra("id", position);
                        startActivity(i2);
                    }
    
                }
            });
            //
    
            // Save ViewPager current image to sd card on button click
            Button b1 = (Button) findViewById(R.id.wll);
            b1.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v2) {
                    // // TODO Auto-generated method stub
    
                    // Save ViewPager current image to sd card
    
                    //
                    final Random generator = new Random();
                    int n = 10000;
                    n = generator.nextInt(n);
                    final String fname = "temp_image" + n + ".png";
    
                    myDir.mkdirs();
    
                    File image = new File(myDir, fname);
    
                    int currentItem = viewPager.getCurrentItem();
                    Drawable drawable = mContext.getResources().getDrawable(
                            adapter.mImages[currentItem]);
                    Bitmap bitmap = ((BitmapDrawable) drawable).getBitmap();
    
                    // Encode the file as a PNG image.
                    FileOutputStream outStream;
                    try {
    
                        outStream = new FileOutputStream(image);
                        bitmap.compress(Bitmap.CompressFormat.PNG, 100, outStream);
                        /* 100 to keep full quality of the image */
    
                        outStream.flush();
                        outStream.close();
                        success = true;
                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
    
                    if (success) {
                        Toast.makeText(getApplicationContext(),
                                "Image saved with success at /sdcard/temp_image",
                                Toast.LENGTH_LONG).show();
                    } else {
                        Toast.makeText(getApplicationContext(),
                                "Error during image saving", Toast.LENGTH_LONG)
                                .show();
                    }
                    sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri
                            .parse("file://mnt/sdcard/"
                                    + Environment.getExternalStorageDirectory())));
    
                }
    
                //
    
            });
    
        }
    
        public class ImagePagerAdapter extends PagerAdapter {
            protected int[] mImages = MainActivity.ICONS;
            int[] icons = MainActivity.ICONS;
    
            @Override
            public int getCount() {
                return icons.length;
            }
    
            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == ((ImageView) object);
            }
    
            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                Context context = SwipeActivity.this;
                ImageView imageView = new ImageView(context);
                // int padding = context.getResources().getDimensionPixelSize(
                // R.dimen.padding_large);
                // imageView.setPadding(padding, padding, padding, padding);
                imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
                imageView.setImageResource(icons[position]);
                ((ViewPager) container).addView(imageView, 0);
                return imageView;
            }
    
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                ((ViewPager) container).removeView((ImageView) object);
            }
        }
    
    }