抱歉,之前给出的代码有误,请参考以下代码使用 PixelCopy.request 来截取当前系统界面的屏幕截图:

// 在广播接收器中获取截图
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 获取屏幕的宽高
        DisplayMetrics metrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        windowManager.getDefaultDisplay().getRealMetrics(metrics);
        int width = metrics.widthPixels;
        int height = metrics.heightPixels;

        // 创建一个Bitmap对象来存储截图
        Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

        // 创建一个Surface对象
        Surface surface = new Surface(bitmap);

        // 使用PixelCopy.request来截取系统界面
        PixelCopy.request(windowManager.getDefaultDisplay(), bitmap, (copyResult) -> {
            if (copyResult == PixelCopy.SUCCESS) {
                // 截图成功,可以在这里进行保存或其他操作
            } else {
                // 截图失败
            }

            // 释放资源
            surface.release();
        }, new Handler());
    }
}

请确保在 AndroidManifest.xml 文件中注册广播接收器,并在合适的地方触发广播来截取系统界面的屏幕截图。

Android PixelCopy 完美截图系统界面:后台运行,广播触发

原文地址: https://www.cveoy.top/t/topic/qAxK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录