如何计算SurfaceView刷新的帧率?

2023-12-22

我有一个第三方框架,可以在表面视图 http://developer.android.com/reference/android/view/SurfaceView.html。我想测量视频的帧速率,以检查手机是否能够足够快地显示视频,或者是否需要使用其他解决方案向用户显示信息。

如何测量 SurfaceView 更新的速度?


如果代码不清楚,请询问。

LinkedList<Long> times = new LinkedList<Long>(){{
    add(System.nanoTime());
}};

@Override
protected void onDraw(Canvas canvas) {
    double fps = fps();
    // ...
    super.onDraw(canvas);
}

private final int MAX_SIZE = 100;
private final double NANOS = 1000000000.0;

/** Calculates and returns frames per second */
private double fps() {
    long lastTime = System.nanoTime();
    double difference = (lastTime - times.getFirst()) / NANOS;
    times.addLast(lastTime);
    int size = times.size();
    if (size > MAX_SIZE) {
        times.removeFirst();
    }
    return difference > 0 ? times.size() / difference : 0.0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算SurfaceView刷新的帧率? 的相关文章

随机推荐