拍摄常规视图和 SurfaceView 的复合屏幕视图的屏幕截图



所以,我有一个相机预览(由表面视图支持),并将常规的Android UI视图作为叠加层放置在预览上。如何对显示的屏幕视图进行简单的屏幕截图。

我尝试了MediaProjection但无法使其工作(我仍在弄清楚为什么它不起作用)。但我只想将MediaProjection用作最后一个选项,因为它涉及启动新活动。我也PixelCopy阅读了有关这个新 API 的信息,但不确定它是否适用于合成视图(surafceview 和常规视图),但仍然需要弄清楚该 API 是否适合我。

请注意,当屏幕基本上显示 2 个窗口及其各自的表面合成以提供最终显示时,我正在尝试截取屏幕的屏幕截图。任何拥有此方案的示例代码或某些指针的人将不胜感激。

这可能会有所帮助:将视图对象传递给函数,它将捕获该特定视图的屏幕截图。

public static String captureScreen(View v) {
        Toast.makeText(v.getContext(), "Generating Screenshot. Please wait..", Toast.LENGTH_LONG).show();
        // View v = activity.getWindow().getDecorView().getRootView();
        v.setDrawingCacheEnabled(true);
        Bitmap bmp = Bitmap.createBitmap(v.getDrawingCache());
        v.setDrawingCacheEnabled(false);
        try {
            File dir = new File(Environment.getExternalStorageDirectory() + "/myfolder");
            if (!dir.exists()) {
                dir.mkdirs();
            }
            File file = new File(dir, System.currentTimeMillis() + ".jpg");
            FileOutputStream fos = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.JPEG, 90, fos);
            fos.flush();
            fos.close();
            return file.getAbsolutePath();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

你能试试这个库吗

https://github.com/Muddz/PixelShot

库的主要功能是这个。

private Bitmap getViewBitmap() {
            Bitmap bitmap;
            if (view instanceof TextureView) {
                bitmap = ((TextureView) view).getBitmap();
                Canvas canvas = new Canvas(bitmap);
                view.draw(canvas);
                canvas.setBitmap(null);
                return bitmap;
            } else {
                bitmap = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
                Canvas canvas = new Canvas(bitmap);
                view.draw(canvas);
                canvas.setBitmap(null);
                return bitmap;
            }
        }

相关内容

  • 没有找到相关文章

最新更新