簡體   English   中英

Android 如何以編程方式測量視圖或應用程序的 FPS

[英]Android how to measure FPS of a View or Application programmatically

我想測量使用 TextureView 的某個 Android View 的 FPS(刷新率)。 為此,我需要某種方式以編程方式測量 FPS(例如,不使用 ADB.exe 和不使用第三方應用程序或工具)。

我見過這個問題,但它沒有回答在哪里記錄幀時間。

Android 中是否有 API 可以在屏幕刷新或組合時獲取事件? 使用它可以相對簡單地測量幀時間並因此計算 FPS。

CPU 使用率的相同問題。 任何或所有用於衡量性能的 API 表示贊賞!

好吧,看起來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 像這樣:

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 應用程序調用系統命令並不困難

SystemClock.elapsedRealtime是衡量 FPS 的關鍵。 方法很簡單: long YOUR_VARIABLE = SystemClock.elapsedRealtime / 1000.0

該代碼計算已顯示在屏幕上的幀。 elapsedRealtime以毫秒為單位計算。 以毫秒為單位的一秒是1000毫秒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM