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

猜你喜欢

转载自blog.csdn.net/weixin_35649059/article/details/119651015