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

22 阅读1分钟

背景

在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

详细成果视频: www.bilibili.com/video/BV1Vd…

相关完整源码可以私聊获取 更多framework干货,请关注下面“千里马学框架”