Android實現截取當前屏幕圖片並保存至SDCard

功能

1. 實現截取當前屏幕的功能。

 

2. 把截取的圖片保存到SDCard中的某個目錄文件夾下面。

 

 

Java代碼

[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的讀寫權限:

[html]  

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

 

發佈留言