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/

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

### 屏幕刷新率帧率的区别 屏幕刷新率是指显示器硬件每秒能够刷新图像的次数,单位为赫兹(Hz)。例如,一个120Hz的显示器可以在一秒内显示120帧图像。刷新率显示器的一个物理属性,它决定了屏幕更新画面的速度[^1]。 帧率则是指视频、动画或游戏中的图像每秒钟变化的次数,单位为帧每秒(fps)。帧率描述的是内容本身的变化速度,而不是显示设备的能力。例如,在玩游戏时,计算机图形处理器(GPU)生成新帧的速度就是帧率。 两者的区别在于刷新率显示器的能力,而帧率是所观看内容的特性。刷新率越高,理论上可以提供更流畅的视觉体验,但这并不意味着实际观看的内容也会同样流畅,因为这还取决于内容的帧率。 ### 刷新率帧率之间的联系 尽管刷新率帧率是不同的概念,但它们共同影响着用户的视觉体验。理想情况下,如果内容的帧率显示器的刷新率相匹配,则可以获得最流畅的画面效果。然而,在实际情况中,当显卡输出的帧率低于显示器的刷新率时,可能会出现重复显示同一画面的情况,导致视觉上的卡顿感;反之,如果帧率超过了刷新率,则多余的帧无法被立即显示出来,可能导致画面撕裂现象[^2]。 为了缓解这些问题,市场上出现了多种同步技术,如V-Sync(垂直同步)、FreeSync 和 G-Sync 等,这些技术旨在使GPU生成图像的速度与显示刷新屏幕的速度保持一致,从而减少或消除画面撕裂和卡顿的问题[^4]。 此外,动态刷新率技术允许显示器根据输入信号的帧率来调整自身的刷新频率,这样既可以在高帧率场景下提供流畅的视觉体验,又能在低帧率或者静态场景下节省能源消耗。这种技术要求显示器和支持它的硬件之间有良好的兼容性[^5]。 ### 示例代码:计算不同刷新率下的帧间隔时间 下面是一个简单的Python示例,用来计算给定刷新率下每帧之间的理论时间间隔(以毫秒为单位)。 ```python def calculate_frame_interval(refresh_rate): """计算每帧之间的理论时间间隔""" return 1000 / refresh_rate # 将秒转换成毫秒 # 计算60Hz和120Hz刷新率下的帧间隔 frame_interval_60hz = calculate_frame_interval(60) frame_interval_120hz = calculate_frame_interval(120) frame_interval_60hz, frame_interval_120hz ``` 执行上述代码后,对于60Hz刷新率,每帧之间的理论时间间隔约为16.67毫秒;而对于120Hz刷新率,这一数值则降低到了约8.33毫秒。这意味着更高的刷新率可以缩短每帧之间的时间间隔,进而可能带来更加流畅的视觉体验[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值