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

android14多屏幕帧率刷新率统计显示开发及成果展示

背景

在SurfaceFlinger课程专题有做了一个帧率显示的工具,大部分在当时的代码大部分在SurfaceFlinger层面实现的。
在这里插入图片描述
当时帧率主要还是针对主屏幕这个单一的屏幕。
在这里插入图片描述
但是近来有学员提到一个疑问,那就是如果是存在多屏的情况下,而且多屏都在刷新的情况下,那么帧率显示起来就比较乱,因为原来方案基本上都是有layer显示就会累计,根本不管到底是哪个屏幕的。

所以针对上面学员提出的问题,那么就需要考虑对多屏幕的帧率进行区分,各自帧率统计可以针对单独屏幕各自分开,具体设计图如下:
在这里插入图片描述
即可以实现有多少屏幕就有多少个对应的帧率,彼此独立。

修改方案

方案设计图:
在这里插入图片描述
SurfaceFlinger层面

1、针对layer需要获取每个layer的对应的displayID
2、把displayId需要保存到FrameTimeline类中
3、通过getprop debug.fps.displayId获取当前要求显示哪个displayId
4、在computFps时候,针对拿layer的dispkayID和prop获取的displayID进行比较,相等则可以统计

app层面

1、通过DisplayManager接口获取系统中存在的所有display数组
2、针对display的数组进行list展示,接受点击
3、用户点击具体的display的Item则调用setprop debug.fps.displayId displayID

详细成果视频:
https://www.bilibili.com/video/BV1Vd4negE6b/

相关完整源码可以私聊获取(限vip学员朋友)

hal+perfetto+surfaceflinger

https://mp.weixin.qq.com/s/LbVLnu1udqExHVKxd74ILg
在这里插入图片描述更多framework假威风耗:androidframework007


http://www.kler.cn/a/301065.html

相关文章:

  • 23种设计模式-备忘录(Memento)设计模式
  • MySQL系列之数据授权(privilege)
  • Spark 中 RDD checkpoint 是通过启动两个独立的 Job 完成的。
  • AJAX笔记 (速通精华版)
  • 反向代理模块
  • Linux网络:HTTPS协议
  • 如何打造一款成功的游戏
  • OPENAIGC开发者大赛企业组银奖 | Gambit-AI智能合同审核助手
  • 测试开发基础——软件测试中的bug
  • MME-RealWorld:您的多模态大型语言模型能挑战高分辨率的真实世界场景吗?这些场景对人类来说都非常困难!
  • OpenCV结构分析与形状描述符(9)检测轮廓相对于其凸包的凹陷缺陷函数convexityDefects()的使用
  • 【重学 MySQL】二十、运算符的优先级
  • 相亲交友程序系统开发产品分析
  • 小样本目标定位:Few-shot Object Localization
  • 万龙觉醒免费辅助:VMOS云手机辅助巴克尔阵容搭配攻略!
  • 【SQL】在SQL中,行转列
  • C++的三大特性,简易说明
  • 利用命令模式构建高效的手游后端架构
  • 使用mingw64 编译 QT开发流程
  • 快速上手 | 数据可观测性平台 Datavines 自定义SQL规则使用指南
  • Android Studio 2024最新版Hello World
  • docker-nginx数据卷挂载
  • 如何在Android 12 aosp系统源码中添加三指下滑截图功能
  • 什么是CPU、GPU、NPU?(包懂+会)
  • 基于微信小程序的宿舍报修系统的设计与实现
  • linux 安装three.js