Android 实时获取SurfaceView渲染的内容截图

        近期的需求 偶尔需要获取当前SurfaceView上渲染的内容视图,因为是通过网页端控制的,类似预览功能吧。百度了好久,没找到能用的,无意间发现了这个类PixelCopy.java,网上没什么介绍

       安卓系统封装的一个类PixelCopy.java (frameworks\base\graphics\java\android\view\PixelCopy.java),里面已经都帮忙实现了相关的截图方法,只需要传入对应的参数即可。

下面是几个里面的方法

       传SurfaceView 和 Surface 其实是一样的,还有一个就是可以传Window 类似普通View的截图实现,我这边主要用到SurfaceView,下面是我的实现

    Bitmap mScreenBitmap = null;
    public void screenshot(SurfaceView view){
        


            //需要截取的长和宽
            int outWidth = view.getWidth();
            int outHeight = view.getHeight();

            mScreenBitmap = Bitmap.createBitmap(outWidth, outHeight,Bitmap.Config.ARGB_8888);
            PixelCopy.request(view, mScreenBitmap, new PixelCopy.OnPixelCopyFinishedListener() {
                @Override
                public void onPixelCopyFinished(int copyResult){
                    if (PixelCopy.SUCCESS == copyResult) {
                         onSuccessCallback(mScreenBitmap);
                         Log.i("gyx","SUCCESS ");
                    } else {
                         Log.i("gyx","FAILED");
                        // onErrorCallback()
                    }
                }
            }, new Handler());

        

    }

 亲测有效,源码是安卓8.0

 

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值