2016-05-08 5 views
2

Ich habe ein Android-Spiel mit libgdx erstellt, das auf vielen Geräten in Ordnung ist. Ich habe kürzlich ein "Low-End" -Telefon benutzt, um mein Spiel zu überprüfen, und es war nicht wirklich spielbar.Eine einfache Möglichkeit, zwischen einem schnellen und einem langsamen Android-Gerät zu unterscheiden

Mit den Android Studio-Tools dachte ich, dass das Problem nicht die Menge an CPU-Zeit war (die für dieses Low-End-Gerät konstant zwischen 10% -20% lag). Ich habe dann das gleiche Spiel erstellt, mit den gleichen Grafiken, aber die Hälfte der Größe (wo eine Grafik früher 128x128 war, war es jetzt 64x64 Pixel). Das hat sehr geholfen und das Spiel lief wieder gut.

Meine Frage ist jetzt, was ist ein kluger Weg, um herauszufinden, ob ich die normale Größe von Grafiken oder die "halbe" Größe von Grafiken verwenden sollte? Ich habe Dinge wie die Geschwindigkeit der CPU (die ich denke, sollte ein guter Indikator für die Geschwindigkeit der GPU sein, wie Geräte mit einem Low-End-Prozessor wahrscheinlich wahrscheinlich auch Low-End-GPUs haben), aber zu prüfen finden Sie die Geschwindigkeit eines Prozessors ist nicht so einfach wie man möchte.

Woran ich jetzt denke, ist Folgendes, wenn die kleinste Größe der Bildschirmgröße in Pixel 800 oder weniger ist, ist es ein Low-End-Gerät, ansonsten ist es ein "normales" Gerät. Ja, sehr willkürlich, ich weiß, und ich hoffe auf einen klügeren Weg zu finden, ob ein Gerät einigermaßen schnell ist. Ich habe einen Überblick über alle Bildschirmgrößen, die für Android-Geräte existieren (soweit ich weiß) die ersten acht sind (unter Verwendung meiner '800 oder weniger' Regel) Low-End-Geräte, die anderen sind normal.

Low-end: 800x480, 800x600, 960x540, 1024x758, 1024x600, 1024x768, 1280x720 & 1366x768

Normal: 1280x800, 1920x1200, 2048x1536, 2736x1824, 1600x900, 1600x1200, 1920x1080, 1920x1280, 2160x1440, 2560x1440, 2560x1600 , 2738x2048 & 3840x2160.

Antwort

4

Eine Sache, die Sie tun können, ist dieses System Datei lesen:

/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

Es Sie, was ist die maximale Taktrate von der wissen erlaubt Prozessor. Dann bestimmen Sie, wann Sie es als ein langsames Gerät oder ein schnelles Gerät betrachten sollten.

Eine andere Möglichkeit, die CPU Informationen zuzugreifen, ist/zuzugreifen proc/cpuinfo wie folgt aus:

private String getInfo() 
{ 
    StringBuffer sb = new StringBuffer(); 
    sb.append("abi: ").append(Build.CPU_ABI).append("n"); 

    if (new File("/proc/cpuinfo").exists()) 
    { 
     try 
     { 
      BufferedReader br = new BufferedReader(new FileReader(new File("/proc/cpuinfo"))); 
      String aLine; 
      while ((aLine = br.readLine()) != null) 
      { 
       sb.append(aLine + "n"); 
      } 

      if (br != null) 
      { 
       br.close(); 
      } 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
    return sb.toString(); 
} 

//-Code stammt von hier http://www.roman10.net/2011/12/31/how-to-get-cpu-information-on-android/ ich es nicht getestet, sollte aber funktionieren. Credits geht an Roman10 für das Skript.

Diese zweite Methode sollte Root-Zugriff benötigen, aber ich bin mir nicht sicher für die erste.

Auch für die GPU sind dies Chipsätze, die in die CPU integriert sind. Wenn Sie also die CPU-ID haben, haben Sie grundsätzlich die GPU.

Hoffnung, die Ihnen hilft.

+0

Dies scheint eine gute Möglichkeit zu sein, um herauszufinden, welcher Prozessor verwendet wird, aber sagt nicht wirklich etwas über Geschwindigkeiten. Zumindest nicht, wenn Sie keine Dokumentation zu jedem verfügbaren Prozessor und Modell haben und auch nicht wirklich zukunftssicher sind, wenn neue Prozessoren eingeführt werden. Auf der anderen Seite, antworten Sie ist die einzige Antwort (danke!) Und ich werde versuchen, es als Grundlage für etwas zu verwenden, das für mich funktioniert. – Tjeerd

+0

Die Verwendung der CPU-Referenz ist keine gute Idee, da, wie Sie sagten, neue Modelle nicht unterstützt werden.Aber was man mit der zweiten Technic machen kann, ist die Anzahl der Cores (angezeigt durch: Prozessor: 0, Prozessor: 1 ...) und auch die BogoMIPS, das ist ein Wert, der vom Linux-Kernel beim Booten berechnet wird Es ist eine Art Geschwindigkeitswert (nicht wissenschaftlich), die Sie verwenden können, um Äther zu bestimmen, es ist eine langsame CPU oder eine schnelle. Hoffe das hilft dir ein bisschen mehr. –

Verwandte Themen