【Android】 SurfaceFlinger测试应用
Android surfaceflinger测试应用SurfaceFlinger test code任务目标在这个测试用例中调用surfaceflinger的API实现在手机屏幕上绘制一块纯色区域代码surfaceFlinger_test.cpp#include cutils/memory.h #include utils/Log.h #include android/native_window.h #include binder/IPCThreadState.h #include binder/ProcessState.h #include binder/IServiceManager.h #include gui/Surface.h #include gui/SurfaceComposerClient.h using namespace android; int main(int argc, char** argv) { // set up the thread-pool spProcessState proc(ProcessState::self()); ProcessState::self()-startThreadPool(); // create a client to surfaceflinger spSurfaceComposerClient client new SurfaceComposerClient(); spSurfaceControl surfaceControl client-createSurface(String8(resize), 320, 240, PIXEL_FORMAT_RGB_565, 0); spSurface surface surfaceControl-getSurface(); SurfaceComposerClient::Transaction transaction; transaction.setLayer(surfaceControl, 100000); transaction.setSize(surfaceControl, 320, 240); transaction.show(surfaceControl); transaction.apply(); ANativeWindow_Buffer outBuffer; surface-lock(outBuffer, NULL); ssize_t bpr outBuffer.stride * bytesPerPixel(outBuffer.format); // 填充每个像素为 RGB565 格式下的绿色0x07E0 uint16_t greenColor 0x07E0; for (int i 0; i outBuffer.height; i) { uint16_t *row (uint16_t*)((char*)outBuffer.bits i * bpr); for (int j 0; j outBuffer.width; j) { row[j] greenColor; } } surface-unlockAndPost(); IPCThreadState::self()-joinThreadPool(); return 0; }Android.bpcc_binary { name: surfaceFlinger_test, include_dirs: [ frameworks/native/include, system/core/include, system/libbase/include, frameworks/native/libs/gui, ], srcs: [surfaceFlinger_test.cpp], shared_libs: [ libui, libcutils, libutils, libbinder, libgui, libvndksupport, libbinder_ndk, ], }编译在platform_vendor/frameworks/native/ 路径下创建文件夹a_test并在该文件夹下添加surfaceFlinger_test.cpp和Android.bp两个文件在该文件夹路径下指令mmsoong构建系统的构建命令编译通过的结果验证刷机adb root adb push ./path/surfaceFlinger_test /data/local/tmp/为什么是 data/local/tmp 这里参考来源是/frameworks/native/services/surfaceflinger/tests/AndroidTest.xml 文件中说明了总结在这个测试用例编写过程中网上搜了许多都是比较老的帖子很多函数都已经过时了如SurfaceComposerClient::openGlobalTransaction(); surfaceControl-setSize(320, 240); SurfaceComposerClient::closeGlobalTransaction(); android_memset16((uint16_t*)outBuffer.bits, 0x07E0, bpr*outBuffer.height);通过查询资料和源码找到了对应的解决方法就是使用Transaction 事件新的写法如下SurfaceComposerClient::Transaction transaction; transaction.setLayer(surfaceControl, 100000); transaction.setSize(surfaceControl, 320, 240); transaction.show(surfaceControl); transaction.apply();这个测试用例虽然很简单但比起直接阅读庞大的surfaceflinger.cpp来说更便于理解surfaceflinger的工作方式是学习surfaceflinger的0-1的突破后面可以基于这个demo来做进一步进阶调用更多的API逐步加深对surfaceflinger的理解。

相关新闻

DMA裸板驱动使用说明

DMA裸板驱动使用说明

1 DMA简要说明1.1 GDP812的dmac812 dmac在4个subsys中集成,分别是:sysctrl、safety、mem、audio;dmac的apb slv memmap要根据各subsys 在SOC分配的地址空间决定;dmac的axi master能访问到的memmap 同样的需要去根据各subsys访问能…

2026/8/24 12:01:41 阅读更多 →
丹摩平台 | 如何在丹摩平台创建一个自己的GPU云实例

丹摩平台 | 如何在丹摩平台创建一个自己的GPU云实例

丹摩平台介绍与说明 丹摩平台,特别是其丹摩智算(DAMODEL)平台,是一个专为AI打造的智算云平台。以下是对丹摩平台的详细介绍及其主要功能的概述: 1、平台介绍 丹摩智算平台致力于提供丰富的算力资源与基础设施&#xff…

2026/8/22 11:51:37 阅读更多 →
揭秘 GitHub 最火的开源 Skills 仓库,夯爆了!30 秒带你用上,让 AI 效率起飞

揭秘 GitHub 最火的开源 Skills 仓库,夯爆了!30 秒带你用上,让 AI 效率起飞

大家好,我是程序员鱼皮。 如今的 GitHub 真是太魔幻了,有个 AI 相关的项目,几乎全是 Markdown 文本文件,但是不到半年就拿到了 18 万 Star! 这个仓库叫 skills,作者 Matt Pocock 是前端 TypeScript 领域很…

2026/8/24 18:36:05 阅读更多 →

最新新闻

智能招聘系统:AI如何重塑人才匹配与筛选

智能招聘系统:AI如何重塑人才匹配与筛选

1. 智能招聘系统的行业变革背景2026年的招聘市场正在经历一场前所未有的技术革命。传统招聘平台依靠人工筛选简历、电话邀约面试的模式,正在被新一代智能招聘系统彻底颠覆。这些系统通过深度学习算法和大数据分析,正在重构人才匹配的底层逻辑。过去三年间…

2026/8/25 6:06:44 阅读更多 →
HTML 的 <input> 元素

HTML 的 <input> 元素

引言 <input> 元素是 HTML 表单中最核心、最常用的元素之一&#xff0c;它允许用户通过多种方式输入数据。从简单的文本输入框到复杂的文件上传控件&#xff0c;<input> 元素通过其 type 属性的不同取值&#xff0c;展现出强大的灵活性和功能性。本文将全面解析 &…

2026/8/25 6:06:44 阅读更多 →
从刷题到思维建模:构建高效算法解题框架与实战策略

从刷题到思维建模:构建高效算法解题框架与实战策略

最近和几位刚入行的朋友聊天&#xff0c;他们不约而同地提到了同一个困惑&#xff1a;刷了上百道 LeetCode&#xff0c;面试时遇到新题还是没思路&#xff0c;感觉刷题像在“背答案”&#xff0c;刷完就忘。这让我想起自己刚开始刷题时&#xff0c;也经历过同样的阶段——把 Le…

2026/8/25 6:06:44 阅读更多 →
理性看待智慧工地评审:评审的真正价值与现实必要性

理性看待智慧工地评审:评审的真正价值与现实必要性

摘要不少工程人把智慧工地评审简单理解为 “拿证书、做观摩”&#xff0c;认为只是创优的加分手段。实际上以《智慧工地评价标准》T/CECS 1368‑2023 为代表的星级评审&#xff0c;是一套完整的项目数字化建设校验体系。本文剖析智慧工地评审的现实必要性&#xff0c;拆解评审带…

2026/8/25 6:06:44 阅读更多 →
从RAG基础到GraphRAG进阶:基于LangChain构建本地知识库问答系统

从RAG基础到GraphRAG进阶:基于LangChain构建本地知识库问答系统

最近在尝试将大语言模型&#xff08;LLM&#xff09;应用到企业知识库或专业领域问答时&#xff0c;你是否遇到过这样的困境&#xff1a;模型要么“一本正经地胡说八道”&#xff08;幻觉问题&#xff09;&#xff0c;要么对最新的、非公开的信息一无所知&#xff1f;直接微调&…

2026/8/25 6:06:44 阅读更多 →
TLS 1.3 深度详解:彻底告别 TLS1.2 冗余设计,为什么它是目前最快、最安全的HTTPS协议

TLS 1.3 深度详解:彻底告别 TLS1.2 冗余设计,为什么它是目前最快、最安全的HTTPS协议

0. 前言现在绝大多数网站、APP、接口服务都已升级 HTTPS&#xff0c;但很多开发者、运维只知道“HTTPS 更安全”&#xff0c;却完全不清楚TLS1.2 与 TLS1.3 的本质区别。很多人误以为 TLS 只是小版本迭代&#xff0c;实际上 TLS1.3&#xff08;RFC 8446&#xff09;是一次结构性…

2026/8/25 6:05:44 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子&#xff0c;从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战&#xff1a;零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run &#x1f917; Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述&#xff1a;从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”&#xff0c;这个名字对理工科学生来说&#xff0c;分量极重。每年&#xff0c;无数团队在三天三夜的时间里&#xff0c;为一个开放性问题绞尽脑汁&#xff0c;从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态&#xff0c;宏观上观察到的光是由无数个微观的光量子组成的&#xff0c;每个光子在产生的瞬间&#xff0c;其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前&#xff0c;在微观层面&#xff0c;每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”&#xff0c;而是SIP会话的动态重定向你有没有遇到过这样的场景&#xff1a;客服坐席A正在和客户通电话&#xff0c;突然需要把这通对话无缝转给专家坐席B&#xff0c;客户完全感知不到中间的断连——既没听到忙音&#xff0c;也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack&#xff1f;如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法&#xff0c;那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/23 12:10:44 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →