如何在没有root电话的情况下包含截图功能?

时间:2015-11-14 14:53:36

标签: android image screenshot root

我是Android功能和库功能的新手,因此我在询问是否有其他方法可以在我的应用中包含屏幕截图功能而无需根植我的手机?

我在这里阅读的几乎所有文章都只会导致手机生根以应用截屏功能。但是,我在这些文章中放了一个代码答案,因为我的手机没有植根,所以只返回了黑色图像。我猜。

还有其他方式或者我现在应该开始生根吗?

1 个答案:

答案 0 :(得分:0)

您不需要图书馆或root来获取自己应用的屏幕截图,因为该应用可以访问自己的所有View。我们只需要获取Activity' DecorView,然后通过Bitmap将其绘制到Canvas。以下方法包含boolean cropStatusBar参数,以适应沉浸式模式捕获。

public static Bitmap getActivityScreenshot(Activity activity, boolean cropStatusBar) {
    int statusBarHeight = 0;

    if (cropStatusBar) {
        int resId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
        statusBarHeight = activity.getResources().getDimensionPixelSize(resId);
    }

    View decor = activity.getWindow().getDecorView();
    Bitmap result = Bitmap.createBitmap(decor.getWidth(),
                                        decor.getHeight() - statusBarHeight,
                                        Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(result);

    decor.setDrawingCacheEnabled(true);
    Bitmap bmp = decor.getDrawingCache();
    Rect src = new Rect(0, statusBarHeight, bmp.getWidth(), bmp.getHeight());
    Rect dst = new Rect(0, 0, result.getWidth(), result.getHeight());
    c.drawBitmap(bmp, src, dst, null);
    decor.setDrawingCacheEnabled(false);

    return result;
}