我正在尝试制作一个气泡应用程序来截取其他应用程序的屏幕截图。
我找到了这个项目link具有媒体投影示例,但图像未保存到设备中。
有什么方法可以将此图像保存到设备上,或者有没有其他方法可以在后台服务中使用我的应用程序进行屏幕截图。
最佳答案
我已经检查了链接,我认为有一种方法可以保存从屏幕截图中获取的文件。
来自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/将其保存在您的图库中:)
关于java - 在后台服务中截取屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65144689/