content: package org.opencv.android;
  
  import java.text.DecimalFormat;
  
  import org.opencv.core.Core;
  
  import android.graphics.Canvas;
  import android.graphics.Color;
  import android.graphics.Paint;
  import android.util.Log;
  
  public class FpsMeter {
      private static final String TAG               = "FpsMeter";
      private static final int    STEP              = 20;
      private static final DecimalFormat FPS_FORMAT = new DecimalFormat("0.00");
  
      private int                 mFramesCouner;
      private double              mFrequency;
      private long                mprevFrameTime;
      private String              mStrfps;
      Paint                       mPaint;
      boolean                     mIsInitialized = false;
      int                         mWidth = 0;
      int                         mHeight = 0;
  
      public void init() {
          mFramesCouner = 0;
          mFrequency = Core.getTickFrequency();
          mprevFrameTime = Core.getTickCount();
          mStrfps = "";
  
          mPaint = new Paint();
          mPaint.setColor(Color.BLUE);
          mPaint.setTextSize(20);
      }
  
      public void measure() {
          if (!mIsInitialized) {
              init();
              mIsInitialized = true;
          } else {
              mFramesCouner++;
              if (mFramesCouner % STEP == 0) {
                  long time = Core.getTickCount();
                  double fps = STEP * mFrequency / (time - mprevFrameTime);
                  mprevFrameTime = time;
                  if (mWidth != 0 && mHeight != 0)
                      mStrfps = FPS_FORMAT.format(fps) + " FPS@" + Integer.valueOf(mWidth) + "x" + Integer.valueOf(mHeight);
                  else
                      mStrfps = FPS_FORMAT.format(fps) + " FPS";
                  Log.i(TAG, mStrfps);
              }
          }
      }
  
      public void setResolution(int width, int height) {
          mWidth = width;
          mHeight = height;
      }
  
      public void draw(Canvas canvas, float offsetx, float offsety) {
          Log.d(TAG, mStrfps);
          canvas.drawText(mStrfps, offsetx, offsety, mPaint);
      }
  
  }
  