当前位置: 首页 > news >正文

Android 原生层SurfaceView截屏

背景:flutter嵌入原生view时,原生view使用的surfaveview,导致下面两种方法无法正常使用。

  1. 导致flutter无法通过id找到RenderRepaintBoundarytoImage来抓取widget
  2. 原生层无法通过view去获取Bitmap

方案:使用PixelCopy方法抓取屏幕像素数据,并且复制到Bitmap

import android.os.Looper;
import android.graphics.Bitmap;
import android.view.PixelCopy;
import android.view.SurfaceView;
import java.io.ByteArrayOutputStream;

// surfaceView 为所需要截图的组件

private void getSurfaceViewBitmap() {
	if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
	    int width = surfaceView.getWidth();
	    int height = surfaceView.getHeight();
	    final Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
	    PixelCopy.request(surfaceView, bitmap, copyResult -> {
	        if (copyResult == PixelCopy.SUCCESS) {
	            ByteArrayOutputStream stream = new ByteArrayOutputStream();
	            // 此处为了flutter层使用,实际纯原生可以不做这个转换
	            bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
	            byte[] imageInByte = stream.toByteArray();
	            HashMap<String, Object> map = new HashMap<>();
	            map.put("bytes", imageInByte);
	            Log.d("jingluo", "success")
	        } else {
	            Log.d("jingluo", "failed")
	        }
	    }, new Handler(Looper.getMainLooper()));
	}
}
http://www.dtcms.com/a/13925.html

相关文章:

  • 力扣刷题(数组篇)
  • DeepSeek本地部署详细指南
  • docker 逃逸突破边界
  • docker 部署nginx,nginx 504
  • ONES 功能上新|ONES Copilot、ONES TestCase、ONES Wiki 新功能一览
  • Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)
  • 【云安全】云原生-K8S(三) 安装 Dashboard 面板
  • Visual Studio 进行单元测试【入门】
  • 计算机网络(1)基础篇
  • 2025 年前端开发现状分析:卷疯了还是卷麻了?
  • 排序算法整理(冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序、计数排序、桶排序、基数排序)
  • [AI]Mac本地部署Deepseek R1模型 — — 保姆级教程
  • Jsoup 教程:从基础到爬虫实战
  • 柔性数组与c/c++程序中内存区域的划分
  • pycharm如何对比两个文档
  • deepseek:三个月备考高级系统架构师
  • Docker Compose:编排多容器应用
  • 尚硅谷爬虫note002
  • MySQL第五次作业
  • HTTP 请求头、响应头常见字段分析
  • git,bash - 例子整理
  • Calico网络组件本地部署支持IPv6(Kubernetes)
  • deepseek和chatgpt对比
  • 移远通信边缘计算模组成功运行DeepSeek模型,以领先的工程能力加速端侧AI落地
  • DeepSeek教unity------MessagePack-01
  • vue纯静态实现 视频转GIF 功能(附源码)
  • HARCT 2025 分论坛10:Intelligent Medical Robotics智能医疗机器人
  • 详解df -h命令
  • BERT文本分类(PyTorch和Transformers)畅用七个模型架构
  • win11 MBR 启动 如何把我的硬盘改 GPT win11 的 UEFI 启动