Android は、SurfaceView によってレンダリングされたコンテンツのスクリーンショットをリアルタイムで取得します。

        最近の需要は、プレビュー機能と同様に Web ページを通じて制御されるため、現在の SurfaceView 上にレンダリングされたコンテンツ ビューを取得する必要がある場合があります。Baidu をずっと探していたのですが、使えそうなものが見つからず、たまたま見つけたのが PixelCopy.java というクラスで、ネット上にも紹介がありませんでした。

       Android システムによってカプセル化されたクラス PixelCopy.java (frameworks\base\graphics\java\android\view\PixelCopy.java) は、関連するスクリーンショット メソッドの実現にすでに役立っており、対応するパラメーターを渡すだけで済みます。

内部にはいくつかのメソッドがあります

       SurfaceViewとSurfaceを渡すのは実は同じで、もう一つは通常のViewと同じようにWindowのスクリーンショットを渡すというもので、ここでは主に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());

        

    }

 プロテストは有効、ソースコードは Android 8.0

 

おすすめ

転載: blog.csdn.net/weixin_35649059/article/details/119651015