web-dev-qa-db-fra.com

Comment mesurer FPS sur Android pendant le développement de l'application

Existe-t-il un moyen (peut-être certaines applications, hacks, bibliothèques) de mesurer les images par seconde (FPS) pendant le développement d'applications pour Android?

25
Roman Minenok

Notez que les performances seront terribles avec le débogueur attaché.

À partir de mon propre Android, le temps d'image peut être mesuré avec Android.os.SystemClock . Autrement dit, vous appelez SystemClock.elapsedRealtime() une fois par image et soustrayez la valeur de la trame précédente. Puisque elapsedRealtime() est mesurée en millisecondes, le calcul de la fréquence d'images est aussi simple que 1000.0 / frametime.

Vous pouvez publier votre code dans un cadre en cours en utilisant Choreographer#postFrameCallback si vous ciblez l'API de niveau 16 ou plus récent (Jelly bean).

Notez également que le frametime est généralement un meilleur indicateur de performance que le framerate. La différence entre 1000fps et 1200fps est la même quantité de temps que la différence entre 60fps et 61fps (environ, probablement moins que cela cependant)

16
Robert Rouhani

Vous pouvez utiliser la bibliothèque TinyDancer .

Ajoutez simplement du code comme:

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);
  }
}

Et vous verrez une vue interactive avec des informations sur le FPS actuel en haut de vos écrans.

enter image description here

27
Nick Moskalenko

J'ai utilisé GameBench pour l'analyse FPS d'une Android (ce n'est pas un jeu, je voulais vérifier le FPS lorsqu'une animation de mon application démarre)). GameBench capture les métriques de fréquence d'images clés (FPS), qui sont le meilleur indicateur objectif de la fluidité d'un UX.

Mon exigence était de vérifier que le FPS était de 30FPS lorsqu'une animation de mon Android Android démarre.

J'ai vérifié les points suivants avec le rapport Graph fourni par l'outil GameBench,

  • Lorsque l'animation démarre, le FPS est passé de 0 FPS à 30FPS.
  • À la fin de l'animation, le FPS est passé de 30FPS à 0 FPS

Voir capture d'écran.

enter image description here

Pour utiliser cet outil, vous devez installer une application Android et un lanceur de bureau.

  1. Installez l'application GameBench sur votre appareil Android.
  2. Inscrivez-vous à GameBench à l'aide d'une adresse e-mail et installez l'application de bureau.
  3. Téléchargez et installez GameBench Desktop Launcher.
  4. Connectez l'appareil au bureau. Vous pouvez recevoir une fenêtre contextuelle sur votre appareil vous demandant d'autoriser le débogage USB
  5. Dans l'application GameBench Android, vous pouvez sélectionner l'application (que j'ai déjà installée sur la tablette) pour l'analyse.
  6. Ensuite, vous pouvez enregistrer le cadre par seconde et générer le rapport (il est également disponible dans le tableau de bord Web, le FPS, la capture d'écran, les performances, la batterie, etc.).

Référence:

  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

En remarque,

J'ai également utilisé application FPS Meter , mais cela semble inexact dans mon cas. A obtenu 29FPS à 31 FPS lorsque mon animation dans l'application Android démarre. Le FPS attendu est de 30FPS.

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

6
Hardian

Il y a apps dans le Playstore qui peut mesurer les FPS d'une session de jeu. Veuillez consulter GameBench. Il peut mesurer les performances de n'importe quel jeu pendant qu'il est joué et vous pouvez corréler les baisses de FPS avec ce qui était rendu à l'écran.

3
Karthik H