Android取得当前屏幕的截图

Android取得屏幕截图主要使用了Bitmap类里的方法,首先取得一个bitmap然后用取得的bitmap去绘制一张图片然后进行保存。

代码如下:

import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.Rect; 
import android.os.Environment; 
import android.util.Log; 
import android.view.View; 
public class ShotScreen { 
    private static final String TAG="shotscreen"; 
    @SuppressWarnings("unused") 
    private static Bitmap takeScreenShot(Activity activity){ 
        View view =activity.getWindow().getDecorView(); 
        view.setDrawingCacheEnabled(true); 
        view.buildDrawingCache(); 
        Bitmap bitmap = view.getDrawingCache(); 
        Rect rect = new Rect(); 
        activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(rect); 
        int statusBarHeight = rect.top; 
        System.out.println(statusBarHeight); 
        int width = activity.getWindowManager().getDefaultDisplay().getWidth(); 
        int height = activity.getWindowManager().getDefaultDisplay().getHeight(); 
        Bitmap bitmap2 = Bitmap.createBitmap(bitmap,0,statusBarHeight, width, height - statusBarHeight); 
        view.destroyDrawingCache(); 
        return bitmap2; 
    } 
    @SuppressWarnings("unused") 
    private static void savePic(Bitmap bitmap,String filename){ 
        FileOutputStream fileOutputStream = null; 
        try { 
            fileOutputStream = new FileOutputStream(filename); 
            if (fileOutputStream != null) { 
                bitmap.compress(Bitmap.CompressFormat.PNG, 90, fileOutputStream); 
                fileOutputStream.flush(); 
                fileOutputStream.close(); 
            } 
        } 
        catch (FileNotFoundException e) { 
            Log.d(TAG, "Exception:FileNotFoundException"); 
            e.printStackTrace(); 
        } 
        catch (IOException e) { 
            Log.d(TAG, "IOException:IOException"); 
            e.printStackTrace(); 
        } 
    } 
    public static void shoot(Activity a){ 
        if (android.os.Environment.MEDIA_MOUNTED != "mounted") { 
            ShotScreen.savePic(ShotScreen.takeScreenShot(a), "/sdcard/抽样.png");    
        } 
        else{ 
            ShotScreen.savePic(ShotScreen.takeScreenShot(a), "/data/data/"+a.getPackageName()+"/抽样.png"); 
        } 
    } 
}

接着在main.xml中加入一个Button

<Button 
    android:id="@+id/button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="获得截图"
    />