繁体   English   中英

在后台服务中截屏

[英]Taking screenshot in a Background Service

我正在尝试制作一个可以截取其他应用程序的气泡应用程序。

我找到了这个带有媒体投影示例的项目链接,但图像没有保存到设备中。

有没有办法可以将此图像保存到设备上,或者有没有其他方法可以在后台服务中使用我的应用程序截取屏幕截图。

我已经检查了链接,我认为有一种方法可以保存从屏幕截图中获取的文件。

来自ImageTransmogrifier class

@Override
  public void onImageAvailable(ImageReader reader) {
    final Image image=imageReader.acquireLatestImage();

    if (image!=null) {
      Image.Plane[] planes=image.getPlanes();
      ByteBuffer buffer=planes[0].getBuffer();
      int pixelStride=planes[0].getPixelStride();
      int rowStride=planes[0].getRowStride();
      int rowPadding=rowStride - pixelStride * width;
      int bitmapWidth=width + rowPadding / pixelStride;

      if (latestBitmap == null ||
          latestBitmap.getWidth() != bitmapWidth ||
          latestBitmap.getHeight() != height) {
        if (latestBitmap != null) {
          latestBitmap.recycle();
        }

        latestBitmap=Bitmap.createBitmap(bitmapWidth,
            height, Bitmap.Config.ARGB_8888);
      }

      latestBitmap.copyPixelsFromBuffer(buffer);
      image.close();

      ByteArrayOutputStream baos=new ByteArrayOutputStream();
      Bitmap cropped=Bitmap.createBitmap(latestBitmap, 0, 0,
        width, height);

      cropped.compress(Bitmap.CompressFormat.PNG, 100, baos);

      byte[] newPng=baos.toByteArray();

      svc.processImage(newPng);
    }
  }

如您所见,那里有一个latestBitmap object,从这里您实际上可以将此 bitmap 保存到您要保存的任何位置。

例如,您可以参考此链接https://www.simplifiedcoding.net/android-save-bitmap-to-gallery/将其保存在您的图库中:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM