Android 如何在不支持手机的情况下包含屏幕截图功能?

Android 如何在不支持手机的情况下包含屏幕截图功能?,android,image,screenshot,root,Android,Image,Screenshot,Root,我不熟悉android的功能和库功能,因此我想问,是否有其他方法可以在我的应用程序中包含屏幕截图功能而不必支持我的手机 我在这里读到的几乎所有文章都只是为了应用屏幕截图功能而对手机进行根操作。然而,我把其中一个代码答案放在那些文章中,只是返回了一个黑色图像,因为我的手机没有根。我想是吧 有没有其他方法,或者我现在就开始使用我的手机根目录?你不需要库或根目录来获取你自己的应用程序的屏幕截图,因为该应用程序可以访问它自己的所有视图。我们只需获取活动的DecorView,并通过画布将其绘制到位图。以下

我不熟悉android的功能和库功能,因此我想问,是否有其他方法可以在我的应用程序中包含屏幕截图功能而不必支持我的手机

我在这里读到的几乎所有文章都只是为了应用屏幕截图功能而对手机进行根操作。然而,我把其中一个代码答案放在那些文章中,只是返回了一个黑色图像,因为我的手机没有根。我想是吧


有没有其他方法,或者我现在就开始使用我的手机根目录?

你不需要库或根目录来获取你自己的应用程序的屏幕截图,因为该应用程序可以访问它自己的所有
视图。我们只需获取
活动
DecorView
,并通过
画布
将其绘制到
位图
。以下方法包括一个
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;
}

你只是想要你的应用程序的截图,还是想在任何地方截图?我知道了,只是我的应用程序@MikeM.Ohh内的截图。谢谢请问cropStatusBar的初始值是多少?cropStatusBar在哪里更新?另外,resId的getIdentifier的参数是什么?