在Android的应用开发过程中,有没有办法(可能是某些应用,黑客,库)测量每秒帧数(FPS)?
答案 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信息的交互式视图。
答案 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工具提供的图表报告验证了以下内容,
见截图。
要使用此工具,您必须安装Android应用程序和桌面启动器。
参考:
作为旁注,
我也使用了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下降与屏幕上呈现的内容相关联。