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();
}
問題は 、上部にあるダイアログを含む画面全体をキャプチャするにはどうすればよいかということです。ホーム画面などではなく、ルートビューの上にあるものだけをキャプチャすることにのみ関心があります。
ルート化について何か読んだことがありますが、私が書いているアプリの完全なスクリーンダンプを取得することが不可能ではないことを本当に願っています.