【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/7/23 18:41:37 阅读更多 →
丹摩平台 | 如何在丹摩平台创建一个自己的GPU云实例

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

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

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

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

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

2026/7/23 18:41:37 阅读更多 →

最新新闻

【Rust自学】12.5. 重构 Pt.3:移动业务逻辑

【Rust自学】12.5. 重构 Pt.3:移动业务逻辑

12.5 重构 Pt.3:移动业务逻辑 12.5.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print),是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为…

2026/7/23 18:56:44 阅读更多 →
智慧工地安全帽检测系统:YOLOv5与边缘计算实践

智慧工地安全帽检测系统:YOLOv5与边缘计算实践

1. 项目背景与核心价值在建筑施工现场,安全帽是保护工人头部安全的最后一道防线。根据行业统计数据显示,超过60%的头部伤害事故都与未正确佩戴安全帽有关。传统的人工巡检方式存在监管盲区大、响应滞后等问题,而"智慧工地安全帽佩戴检测…

2026/7/23 18:56:44 阅读更多 →
每日关注简报|2026年7月23日:Copilot成效仪表盘、Codex iOS升级、Windows 11新功能与AI财报

每日关注简报|2026年7月23日:Copilot成效仪表盘、Codex iOS升级、Windows 11新功能与AI财报

🔥 个人主页: 杨利杰YJlio ❄️ 个人专栏: 《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》 《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》 《超简单:用Python让Excel飞起来》…

2026/7/23 18:56:44 阅读更多 →
【计算机Python毕业设计案例】基于 Python 的期货模拟下单与盈亏统计系统设计与实现 金融课程配套期货模拟交易实训系统(程序+文档+讲解+定制)

【计算机Python毕业设计案例】基于 Python 的期货模拟下单与盈亏统计系统设计与实现 金融课程配套期货模拟交易实训系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 18:56:44 阅读更多 →
PSO-XGBoost组合模型在工业预测中的优化与应用

PSO-XGBoost组合模型在工业预测中的优化与应用

1. 项目概述:当粒子群优化遇上XGBoost在工业预测和数据分析领域,我们常常需要处理复杂的非线性关系。传统单一算法往往难以兼顾预测精度和可解释性,这正是PSO-XGBoost组合模型大显身手的地方。这个项目完整实现了从参数优化到结果解释的全流程…

2026/7/23 18:55:43 阅读更多 →
西平装修亲测:2026年7月选这家省心

西平装修亲测:2026年7月选这家省心

2026年,西平全屋定制市场仍面临三大核心挑战:效率低下、成本失控、效果难控。据行业数据显示,73%的业主在装修过程中需要对接至少4个不同服务方(设计师、施工队、建材商、家具商),平均耗时超6个月&#xff…

2026/7/23 18:55:43 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻