如何在应用开发期间测量Android上的FPS

时间:2012-01-18 09:36:02

标签: android performance

在Android的应用开发过程中,有没有办法(可能是某些应用,黑客,库)测量每秒帧数(FPS)?

4 个答案:

答案 0 :(得分:25)

您可以使用TinyDancer库。

只需添加以下代码:

public class DebugApplication extends Application {

  @Override public void onCreate() {

   // default config
   TinyDancer.create().show(this);

   //or customazed config
   TinyDancer.create()
      .redFlagPercentage(.1f) // set red indicator for 10%
      .startingGravity(Gravity.TOP)
      .startingXPosition(200)
      .startingYPosition(600)
      .show(this);
  }
}

您将在屏幕顶部看到包含当前FPS信息的交互式视图。

enter image description here

答案 1 :(得分:16)

请注意,附加调试器后性能会很差。

从我自己的Android游戏中,可以使用android.os.SystemClock来衡量帧时间。也就是说,您每帧调用SystemClock.elapsedRealtime()一次,并从前一帧中减去该值。由于elapsedRealtime()以毫秒为单位,因此计算帧率就像1000.0 / frametime一样简单。

如果定位API级别16或更高版本(Jelly Bean),您可以使用Choreographer#postFrameCallback将代码发布到正在进行的框架中。

另请注意,帧时间通常比帧率更好地衡量性能。 1000fps和1200fps之间的差异与60fps和61fps之间的差异相同(大约可能小于那个)

答案 2 :(得分:6)

我已经将GameBench用于Android应用程序的FPS分析(它不是游戏,我想在我的应用程序的动画开始运行时检查FPS)。 GameBench捕获关键帧速率(FPS)指标,这是衡量用户体验流动性的最佳客观指标。

我的要求是在我的Android应用程序的动画开始时验证FPS为30FPS。

我已使用GameBench工具提供的图表报告验证了以下内容,

  • 当动画开始时,FPS从0 FPS移动到30FPS。
  • 当动画结束时,FPS从30FPS移动到0 FPS

见截图。

enter image description here

要使用此工具,您必须安装Android应用程序和桌面启动器。

  1. 在Android设备中安装GameBench应用程序。
  2. 使用电子邮件地址注册GameBench并安装桌面应用程序。
  3. 下载并安装GameBench Desktop Launcher。
  4. 将设备连接到桌面。您可能会在设备上收到一个弹出窗口,要求您允许USB调试
  5. 在GameBench Android应用程序中,您可以选择应用程序(我已在平板电脑上安装)进行分析。
  6. 然后,您可以每秒记录一次帧并生成报告(在Web仪表板中也可以使用,FPS,屏幕截图,性能,电池等)。
  7. 参考:

    1. https://play.google.com/store/apps/details?id=com.gamebench.metricscollector
    2. https://www.gamebench.net/
    3. https://docs.gamebench.net/web-dashboard/getting-started
    4. 作为旁注,

      我也使用了FPS Meter app,但在我的情况下似乎不准确。当Android应用程序中的动画启动时,得到29FPS到31 FPS。预计FPS为30FPS。

      https://play.google.com/store/apps/details?id=com.ftpie.fpsmeter&hl=en

答案 3 :(得分:3)

Playstore中有apps可以测量播放会话的FPS。请看GameBench。它可以测量任何游戏在播放时的性能,并且可以将FPS下降与屏幕上呈现的内容相关联。