Android 代码获取帧率FPS

 private long mStartFrameTIme = 0;
    private int mFrameCount = 0;
    private static final long MONITOR_INTERVAL = 160L;
    private static final long MONITOR_INTERVAL_NANOS = MONITOR_INTERVAL * 1000 * 1000;
    private void getFps() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
            return;
        }
        Choreographer.getInstance().postFrameCallback(new Choreographer.FrameCallback() {
            @Override
            public void doFrame(long frameTimeNanos) {
                if (mStartFrameTIme == 0) {
                    mStartFrameTIme = frameTimeNanos;
                }
                float interval = (frameTimeNanos - mStartFrameTIme) / 1000000.0f;
                if (interval > MONITOR_INTERVAL) {
                    double fps = ((double) mFrameCount * 1000L) / interval;
                    Log.e("test", "fps:" + fps);
                    mFrameCount = 0;
                    mStartFrameTIme = 0;
                } else {
                    ++mFrameCount;
                }
                Choreographer.getInstance().postFrameCallback(this);
            }
        });
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容