如何以编程方式拍摄设备屏幕的快照?

时间:2012-10-18 08:52:27

标签: android android-intent

我想在按钮点击时拍摄设备屏幕快照的快照。请提供一些代码示例而不是链接。

提前致谢。

2 个答案:

答案 0 :(得分:4)

我得到了我的问题的答案。 Actualy我得到位图为null。但我找到了原因和解决方案。

View v = findViewById(R.id.attachments_list);
    v.setDrawingCacheEnabled(true);
    // this is the important code :)
    // Without it the view will have a dimension of 0,0 and the bitmap will
    // be null
    v.measure(MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
            MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());

    v.buildDrawingCache(true);
    Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());

答案 1 :(得分:1)

您无法使用设备的屏幕截图(未植根),但可以在应用程序中使用。

下面是截取应用程序屏幕截图并在SD卡中保存文件的代码。

mLayoutRoot.setDrawingCacheEnabled(true); //mLayoutRoot is your Parent Layout(may be RelativeLayout, LinearLayout or etc..)
mLayoutRoot.buildDrawingCache();

Bitmap mBitmap= mLayoutRoot.getDrawingCache();
try {
    if(mBitmap!=null)
    {
        FileOutputStream out = new FileOutputStream("/sdcard/filename.png"));
        mBitmap.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.flush();
        out.close();
    }
} catch (Exception e) {}