Open Amitdygon opened 1 year ago
Maybe, you can try the code below to take screen shot of group video.
Bitmap bitmap = Bitmap.createBitmap(mGridVideoViewContainer.getWidth(), mGridVideoViewContainer.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
HandlerThread takeSnapshopThread = new HandlerThread("TakeSnapshopThread");
takeSnapshopThread.start();
Handler drawHandler = new Handler(takeSnapshopThread.getLooper());
Rect containerRect = new Rect();
mGridVideoViewContainer.getGlobalVisibleRect(containerRect);
for (int i = 0; i < mGridVideoViewContainer.getChildCount(); i++) {
View childAt = ((ViewGroup)mGridVideoViewContainer.getChildAt(i)).getChildAt(0);
if(childAt instanceof SurfaceView){
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
CountDownLatch latch = new CountDownLatch(1);
Bitmap childBitmap = Bitmap.createBitmap(childAt.getWidth(), childAt.getHeight(), Bitmap.Config.ARGB_8888);
Rect destRect = new Rect();
childAt.getGlobalVisibleRect(destRect);
destRect.left = destRect.left - containerRect.left;
destRect.top = destRect.top - containerRect.top;
destRect.right = destRect.left + childAt.getWidth();
destRect.bottom = destRect.top + childAt.getHeight();
PixelCopy.request((SurfaceView) childAt, childBitmap, copyResult -> {
canvas.drawBitmap(childBitmap, null, destRect, paint);
latch.countDown();
}, drawHandler);
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
childBitmap.recycle();
}
}
}
takeSnapshopThread.quit();
How can i take screen shot of group video call .
I have tried simple bitmap creation but its seem to not working due to surface view show how can i implement this method its used to take screen shot of single surface view but its show erro mGridVideoViewContainer beacuse its a recycler view can any one help me here to take screen shot when multiple user joined in call.
` final Bitmap bitmap = Bitmap.createBitmap(mGridVideoViewContainer.getWidth(), mGridVideoViewContainer.getHeight(), Bitmap.Config.ARGB_8888);