Я работаю над записью своего экрана с помощью MediaProjection следующим образом
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
displayWidth = size.x;
displayHeight = size.y;
imageReader = ImageReader.newInstance(displayWidth, displayHeight, ImageFormat.JPEG, 5);
int flags = DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY | DisplayManager.VIRTUAL_DISPLAY_FLAG_PUBLIC;
DisplayMetrics metrics = getResources().getDisplayMetrics();
int density = metrics.densityDpi;
mediaProjection.createVirtualDisplay("test", displayWidth, displayHeight, density, flags,
imageReader.getSurface(), null, projectionHandler);
Image image = imageReader.acquireLatestImage();
byte[] data = getDataFromImage(image);
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
Проблема заключается в том, что записанные изображения содержат черную рамку, как показано ниже.
ИЗМЕНИТЬ
Вышеупомянутая проблема может быть решена с помощью растровых операций.
Однако теперь я ищу решение, которое можно применить к MediaProjection
или SurfaceView
для ImageReader
для реализации записи устройства.