Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to take screenshot programmatically and save it on gallery?

Tags:

android

sdk

i would to know what is the code to take a screenshot of the current screen (after a press of a button) and save it on a gallery because I don't have a device with sd cards. So i would to save in the default gallery. thank you

like image 448
penny89 Avatar asked Mar 07 '13 16:03

penny89


3 Answers

  Bitmap bitmap;
  View v1 = findViewById(R.id.rlid);// get ur root view id
  v1.setDrawingCacheEnabled(true); 
  bitmap = Bitmap.createBitmap(v1.getDrawingCache());
  v1.setDrawingCacheEnabled(false);

This should do the trick.

For saving

  ByteArrayOutputStream bytes = new ByteArrayOutputStream();
  bitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes);
  File f = new File(Environment.getExternalStorageDirectory()
                    + File.separator + "test.jpg")
  f.createNewFile();
  FileOutputStream fo = new FileOutputStream(f);
  fo.write(bytes.toByteArray()); 
  fo.close();
like image 82
Raghunandan Avatar answered Nov 15 '22 06:11

Raghunandan


    View v1 = L1.getRootView();
    v1.setDrawingCacheEnabled(true);
    Bitmap bm = v1.getDrawingCache();
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bm);
    image = (ImageView) findViewById(R.id.screenshots);
    image.setBackgroundDrawable(bitmapDrawable);

For complete source code go through the below blog

http://amitandroid.blogspot.in/2013/02/android-taking-screen-shots-through-code.html

For storing the Bitmap to see the below link

Android Saving created bitmap to directory on sd card

like image 31
Amit Gupta Avatar answered Nov 15 '22 05:11

Amit Gupta


This will save to the gallery. The code also sets an image path.. that is useful with Intent.SEND_ACTION and email Intents.

String imagePath = null;
Bitmap imageBitmap = screenShot(mAnyView);
if (imageBitmap != null) {
    imagePath = MediaStore.Images.Media.insertImage(getContentResolver(), imageBitmap, "title", null);
}


public Bitmap screenShot(View view) {
    if (view != null) {
        Bitmap bitmap = Bitmap.createBitmap(view.getWidth(),
                view.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        view.draw(canvas);
        return bitmap;
    }
    return null;
}
like image 26
Lee Hounshell Avatar answered Nov 15 '22 06:11

Lee Hounshell