在设备屏幕关闭时是否可以捕获窗口小部件的屏幕截图?

时间:2015-05-26 21:23:03

标签: android

对于我正在尝试制作的应用,我需要定期捕获小部件的屏幕截图(我的应用程序将成为其主机)。但我希望在不唤醒屏幕的情况下捕获这些屏幕截图。

基本上我想刷新小部件,捕获屏幕截图,然后在手机屏幕关闭时通过互联网发送。

修改:是否可以加载窗口小部件,然后在关闭/锁定手机屏幕时访问其视图(以生成视图的屏幕截图)?

1 个答案:

答案 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[];