我想测量使用TextureView的某个Android视图的FPS(刷新率)。为此,我需要一些方法来以编程方式测量FPS(例如,不使用ADB.exe而不使用第三方应用程序或工具)。
我见过this question,但它没有回答记录帧时间的位置。
Android中是否有API可以在屏幕刷新或组合时获取事件?使用它,测量帧时间并因此计算FPS将相对简单。
CPU使用率相同的问题。任何或所有衡量绩效的API都会受到赞赏!
答案 0 :(得分:2)
好吧,看起来TinyDancer可以做你想做的事情:
//you can add a callback to get frame times and the calculated
//number of dropped frames within that window
TinyDancer.create()
.addFrameDataCallback(new FrameDataCallback() {
@Override
public void doFrame(long previousFrameNS, long currentFrameNS, int droppedFrames) {
//collect your stats here
}
})
.show(this);
}
如果您需要了解CPU使用率,可以始终使用top
。像这样的Smth:
root@android:/data # top -n 1 -s cpu
User 28%, System 29%, IOW 0%, IRQ 0%
User 189 + Nice 162 + Sys 355 + Idle 509 + IOW 0 + IRQ 0 + SIRQ 2 = 1217
PID PR CPU% S #THR VSS RSS PCY UID Name
31096 0 20% S 20 463368K 78884K fg u0_i77 com.android.chrome:sandboxed_process0
29042 1 11% S 54 451036K 84876K fg u0_a10 com.android.chrome
130 2 9% S 25 79228K 37136K fg system /system/bin/surfaceflinger
...
...
...
从Android应用is not difficult调用系统命令。
答案 1 :(得分:0)
SystemClock.elapsedRealtime
是衡量 FPS 的关键。方法很简单:long YOUR_VARIABLE = SystemClock.elapsedRealtime / 1000.0
代码计算已显示在屏幕上的帧数。 elapsedRealtime
以毫秒为单位计算。以毫秒为单位的一秒是 1000
毫秒。