я работаю над записью мой экран с MediaProjection следующимскриншот Android 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
для осуществления записи устройства.
Сфотографируйте экран (со вторым устройством) и сравните два. Вы теряете пиксели от края экрана? Представлен ли весь дисплей? Является ли приложение полноэкранным - у оригинала есть видимая панель навигации/панель уведомлений? – fadden
@ fadden picture содержит полноэкранный просмотр, включая навигационную панель, notif-бар и представляет весь дисплей, включая черную рамку за пределами изображения – AMD
@AMD вы дали мой код попробовать? –