Android实现截取当前屏幕图片并保存至SDCard

jopen 11年前

功能

1. 实现截取当前屏幕的功能。

2. 把截取的图片保存到SDCard中的某个目录文件夹下面。


Java代码
    package com.app.test01;                import java.io.File;        import java.io.FileOutputStream;                import android.app.Activity;        import android.graphics.Bitmap;        import android.graphics.Bitmap.Config;        import android.os.Bundle;        import android.os.Environment;        import android.view.Display;        import android.view.View;        import android.view.View.OnClickListener;        import android.view.WindowManager;        import android.widget.Button;        import android.widget.Toast;                public class JieTu extends Activity {            private Button btnButton;                    @Override            protected void onCreate(Bundle savedInstanceState) {                // TODO Auto-generated method stub                super.onCreate(savedInstanceState);                setContentView(R.layout.jietu);                btnButton = (Button) findViewById(R.id.button1);                btnButton.setOnClickListener(new OnClickListener() {                    @Override                    public void onClick(View v) {                        // TODO Auto-generated method stub                        GetandSaveCurrentImage();                    }                });            }                    /**            * 获取和保存当前屏幕的截图            */            private void GetandSaveCurrentImage() {                // 1.构建Bitmap                WindowManager windowManager = getWindowManager();                Display display = windowManager.getDefaultDisplay();                int w = display.getWidth();                int h = display.getHeight();                Bitmap Bmp = Bitmap.createBitmap(w, h, Config.ARGB_8888);                // 2.获取屏幕                View decorview = this.getWindow().getDecorView();                decorview.setDrawingCacheEnabled(true);                Bmp = decorview.getDrawingCache();                String SavePath = getSDCardPath() + "/AndyDemo/ScreenImage";                // 3.保存Bitmap                try {                    File path = new File(SavePath);                    // 文件                    String filepath = SavePath + "/Screen_1.png";                    File file = new File(filepath);                    if (!path.exists()) {                        path.mkdirs();                    }                    if (!file.exists()) {                        file.createNewFile();                    }                    FileOutputStream fos = null;                    fos = new FileOutputStream(file);                    if (null != fos) {                        Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);                        fos.flush();                        fos.close();                        Toast.makeText(this, "截屏文件已保存至SDCard/AndyDemo/ScreenImage/下",                                Toast.LENGTH_LONG).show();                    }                        } catch (Exception e) {                    e.printStackTrace();                }            }                    /**            * 获取SDCard的目录路径功能            */            private String getSDCardPath() {                File sdcardDir = null;                // 判断SDCard是否存在                boolean sdcardExist = Environment.getExternalStorageState().equals(                        android.os.Environment.MEDIA_MOUNTED);                if (sdcardExist) {                    sdcardDir = Environment.getExternalStorageDirectory();                }                return sdcardDir.toString();            }        }  

添加读写权限

由于要对SDCard进行操作,所以别忘记了在manifest.xml文件中赋以对SDCard的读写权限:

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>