Sto lavorando a registrare il mio schermo con MediaProjection come segueAndroid mediaprojection screenshot contiene cornice nera
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);
Il problema è che le immagini acquisite contiene cornice nera come immagine qui sotto.
EDIT
Il problema di cui sopra possono essere risolti con operazioni bitmap.
Tuttavia, ora sto cercando una soluzione che può essere applicata a MediaProjection
o a SurfaceView
di ImageReader
per implementare la registrazione del dispositivo.
Scatta una foto dello schermo (con un secondo dispositivo) e confronta i due. Stai perdendo pixel dal bordo dello schermo? L'intero display è rappresentato? L'app è a schermo intero - l'originale ha una barra di navigazione/barra di notifica visibile? – fadden
L'immagine di fadden contiene la visualizzazione a schermo intero inclusa la barra di navigazione, la barra di notifica e rappresenta l'intero display inclusa la cornice nera all'esterno dell'immagine – AMD
@AMD hai provato a provare il mio codice? –