【问题标题】:Taking screenshot in a Background Service在后台服务中截屏
【发布时间】:2020-12-04 13:45:04
【问题描述】:

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

我发现这个项目link 有一个媒体投影示例,但图像没有保存到设备中。

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

【问题讨论】:

标签: java android kotlin background-service


【解决方案1】:

我检查了链接,我认为有一种方法可以保存截取的文件。

来自ImageTransmogrifier

@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 对象,从这里您实际上可以将此位图保存到您想要保存的任何位置。

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

【讨论】:

  • 如何在后台从BroadcastReceiver 类调用start record
猜你喜欢
  • 2015-07-29
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-24
  • 1970-01-01
相关资源
最近更新 更多