我可能看过所有关于在 Android 上以编程方式捕获屏幕(屏幕截图、屏幕转储)的 SO 文章,它们通常都得到相同的答案。
它的问题在于它捕获了您指定的视图,但它没有捕获任何可能位于“根视图”之上的对话框。这是我使用的代码,它无法捕获“顶部”的任何内容:
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();
}
问题是: 如何捕获整个屏幕,包括顶部的对话框?我只对捕获我正在编写的应用程序感兴趣,而不是主屏幕或类似的东西,只是在我的根视图之上的任何东西。
我确实读过一些关于生根的文章,但我真的希望对我正在编写的应用程序进行完整的屏幕转储不是不可能的。