对于我正在尝试制作的应用,我需要定期捕获小部件的屏幕截图(我的应用程序将成为其主机)。但我希望在不唤醒屏幕的情况下捕获这些屏幕截图。
基本上我想刷新小部件,捕获屏幕截图,然后在手机屏幕关闭时通过互联网发送。
修改:是否可以加载窗口小部件,然后在关闭/锁定手机屏幕时访问其视图(以生成视图的屏幕截图)?
答案 0 :(得分:2)
只要你有一个视图实例,你就应该可以。我不是100%确定视图的画布仍然在屏幕关闭时绘制。值得一试。以下是我用来抓取网页截图的一些代码(注意不同视图大小的压缩差异)
public static byte[] captureScreenshot(View view) throws JSONException {
//maybe do something with filename
String fileName = null;
try {
// create bitmap screen capture
Bitmap bitmap;
view.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Bitmap.CompressFormat compressionFormat;
int filename = view.getId();
if (filename == -1) {
filename = 1010;
}
if (getBitMapSize(bitmap) > 750000) {
compressionFormat = Bitmap.CompressFormat.JPEG;
fileName = String.valueOf(filename) + ".jpg";
} else {
compressionFormat = Bitmap.CompressFormat.PNG;
fileName = String.valueOf(filename) + ".png";
}
bitmap.compress(compressionFormat, 60, outputStream);
byte[] imageBytes = outputStream.toByteArray();
} catch (Exception e) {
Log.e("Error creating screenshot: ");
}
return byte[];