如何测量 ARCore Android 应用的帧率?

How to measure the frame rate of an ARCore Android app?

我正在使用HelloAR sample application. The sample uses ARCore。我是 运行 Android Samsung Galaxy Tab S5e 上的样本。

如何测量 AR 应用程序的帧率(每秒帧数)?我需要绘制数据图表,所以理想情况下,我采用的任何方法的输出都会给我某种 CSV,例如时间,fps

我试过查看 GameBench,但这需要我填写表格并等待“专家”回复我...我也尝试过使用 framestats 的 dumpsys,但只输出 2框架和很少更新。我也尝试了一些来自 GitHub (TinyDancer) 的项目,但那是行不通的。

有什么想法吗?

要测量 ARCore 1.19 中的帧速率,您可以使用 public class FramegetTimestamp() public 方法。在 60 fps 下,每帧大约持续 16.67 ms(或 ~16670000 ns)。

public long getTimestamp()

看看官方documentation怎么说:

getTimestamp() method returns the timestamp in nanoseconds when this image was captured. This can be used to detect dropped frames or measure the camera frame rate. The time base of this value is specifically not defined, but it is likely similar to System.nanoTime().

因此,如果每个当前帧和前一帧之间的时间差为 ~16670000 纳秒,则帧速率为 60 fps。但是如果时间差是 ~33330000 纳秒,那么帧速率是 30 fps。