1

我正在 Android Pie (Android 9) 上开发一个系统应用程序。我需要捕获屏幕而不是整个屏幕,我只需要从第 1 层(用于墙纸)到第 2 层(用于应用程序)捕获。

我像这样使用 SurfaceControl:

Rect crop = new Rect(0, 0, 1920, 1080);
int width = crop.width();
int height = crop.height();
Bitmap bitmap = SurfaceControl.screenshot(crop, width, height, 1, 2, false, 0); 
// "1" is the lowest (bottom-most Z order) surface layer to include in the screenshot
// "2" is the highest (top-most Z order) surface layer to include in the screenshot

但返回bitmap的始终是黑色图像。

我的应用程序是系统私有应用程序,它被放置在/system/priv-app. 此外,我已经在以下权限中添加了AndroidManifest.xml

<uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
<uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />

我做错了什么?是否有另一种方法来捕获具有选定图层的屏幕

4

1 回答 1

0

我无法用 SurfaceControl 解决您的问题。

但是您可以尝试按照示例来捕获您想要的图层

https://github.com/nitiwari-dev/Blur-behind-alert-dialog

在此处输入图像描述

于 2020-06-11T15:20:58.893 回答