使用MediaProjection API進(jìn)行屏幕截圖的時(shí)候,會(huì)不斷給出:
E/BufferQueueProducer: [ImageReader-1080x1920f1m2-22674-60] dequeueBuffer: BufferQueue has been abandoned
這樣一個(gè)錯(cuò)誤提示,大概一秒鐘報(bào)十幾次...截圖的代碼如下:
ImageReader imageReader = ImageReader.newInstance(screen.getWidth(),
screen.getHeight(), PixelFormat.RGBA_8888, 2);
VirtualDisplay virtualDisplay = mediaProjection.createVirtualDisplay("screen-mirror",
screen.getWidth(), screen.getHeight(), screen.getDensity(),
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, imageReader.getSurface(),
null, null);
SystemClock.sleep(1000);
Image image = imageReader.acquireLatestImage();
int width = image.getWidth();
int height = image.getHeight();
final Image.Plane[] planes = image.getPlanes();
final ByteBuffer buffer = planes[0].getBuffer();
//每個(gè)像素的間距
int pixelStride = planes[0].getPixelStride();
//總的間距
int rowStride = planes[0].getRowStride();
int rowPadding = rowStride - pixelStride * width;
Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
bitmap = Bitmap.createBitmap(bitmap, 0, 0, screen.getWidth(), screen.getHeight());
image.close();
imageReader.close();
要怎么才能去掉這個(gè)錯(cuò)誤提示啊
添加回答
舉報(bào)
0/150
提交
取消