Android截屏

public static int getWindowHeight(Context context) {
    return context.getResources().getDisplayMetrics().heightPixels;
}

public static int getWindowWidth(Context context) {
    return context.getResources().getDisplayMetrics().widthPixels;
}

VirtualDisplay mVirtualDisplay;


private void parseData(Intent data) {
    MediaProjection mMediaProjection = mMediaProjectionManager.getMediaProjection(Activity.RESULT_OK, data);
    @SuppressLint("WrongConstant") ImageReader mImageReader = ImageReader.newInstance(
            getWindowWidth(this),
            getWindowHeight(this),
            PixelFormat.RGBA_8888, 1);
    mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror",
            getWindowWidth(this),
            getWindowHeight(this),
            Resources.getSystem().getDisplayMetrics().densityDpi,
            DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
            mImageReader.getSurface(), null, null);

    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        @Override
        public void run() {
            Image image = mImageReader.acquireLatestImage();
            int width = getWindowWidth(AiClassActivity.this);
            int height = getWindowHeight(AiClassActivity.this);
            final Image.Plane[] planes = image.getPlanes();
            final ByteBuffer buffer = planes[0].getBuffer();
            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, width, height);
            image.close();
            saveBitmap(bitmap);

            if (mVirtualDisplay == null) {
                return;
            }
            mVirtualDisplay.release();
            mVirtualDisplay = null;
            if (currenttransition != null) {
                doSnapshot(currenttransition);
            }
        }
    }, 300);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值