如何目前捕捉一切在屏幕上,包括对话框(How to capture everything curre

2019-08-31 11:48发布

我已经看了大概每SO文章concering捕捉屏幕(屏幕截图,screendump)程序在Android上,他们通常都具有相同的回答结束了。

它的问题在于,它捕捉你所指定的视图,但它并没有反映出可能是“之上”的“根视图”任何对话框。 这是我使用的代码,即不能“上头”捕获任何:

Bitmap bitmap;
View v1 = findViewById(android.R.id.content);
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);
File path = Environment.getExternalStorageDirectory();
File file = new File(path, "myDump.jpg");

FileOutputStream outputStream;

try 
{
    outputStream = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 10, outputStream);
    outputStream.flush();
    outputStream.close();
} 

catch (Exception e) 
{
  e.printStackTrace();
}

现在的问题是: 我怎么能捕捉整个屏幕,包括那些在上面的对话框? 我只是在捕捉我写的应用程序,而不是主屏幕或类似的东西,只是什么是我的根视图的顶部感兴趣。

我看过一些关于生根,但我真的希望,走的是应用程序我写的一个完整的screendump不能是不可能的。

Answer 1:

使用这个库....它为我的伟大工程。 https://github.com/jraska/Falcon

  // Saving screenshot to file
            Falcon.takeScreenshot(this, imageFile);
            // Take bitmap and do whatever you want
            Bitmap bitmap = Falcon.takeScreenshotBitmap(this);


Answer 2:

这是工作打开DialogFragment内。

View v1 = ((ViewGroup) (((MyActivity)getActivity()).findViewById(android.R.id.content)));
v1.setDrawingCacheEnabled(true);
Bitmap bitmapParent = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

// dialogView is the inflated view of the DialogFragment
dialogView.setDrawingCacheEnabled(true);
Bitmap bitmapDialog = Bitmap.createBitmap(dialogView.getDrawingCache());
dialogView.setDrawingCacheEnabled(false);

Canvas canvas = new Canvas(bitmapParent);
Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(bitmapDialog, 0, 0, paint);   

// Activity and dialog captured!!
bitmapParent.compress(Bitmap.CompressFormat.PNG, 100, new FileOutputStream(new File(directory, name)));


Answer 3:

这是可能的,你需要画所有视图根位图。 试试这个库: https://github.com/jraska/Falcon它可以捕捉Dailogs你的屏幕截图。



文章来源: How to capture everything currently on screen including Dialogs