2011-02-09 16 views
7

Znalazłem kilka odniesień i skończył z następującego kodu:Jaki jest najbardziej niezawodny sposób określenia częstotliwości taktowania procesora w telefonach z systemem Android?

String[] args = { "/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" }; 

cmd = new ProcessBuilder(args); 

Process process = cmd.start(); 
InputStream in = process.getInputStream(); 
byte[] re = new byte[1024]; 
while (in.read(re) != -1) { 
    System.out.println(new String(re)); 
    result = result + new String(re); 
} 
in.close(); 

Powyższy kod działa całkiem dobrze, ale nie cały czas. Dostałem kilka raportów, że raportuje wyższą niż częstotliwość ustawiona przez SetCPU przy maksymalnym ustawieniu w niektórych telefonach.

Czy istnieje bardziej niezawodny sposób na znalezienie prędkości zegara telefonów z systemem Android?

+4

Czy jesteś pewien, że nie jest to 'SetCPU'„opowiadają kłamstwa”? –

+2

Również to może być bycie naiwnym, ale po co używać procesu (nie, że to jest problem, tylko zastanawiam się z powodu wydajności)? dlaczego nie pobrać bezpośrednio strumienia danych z pliku? Zakładam, że dla exec cat potrzebne są te same uprawnienia, co do odczytu katalogu proc. –

Odpowiedz

1

Jeśli chcesz otrzymać aktualną częstotliwość można odczytać z:

/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq 
+0

Dokładnie to robi - tylko o wiele bardziej skomplikowane! – Zordid

+0

@Zordid: Tak, to ta sama zasada. Ale zasugerowałem "scaling_cur_freq" podczas gdy on czyta z "cpuinfo_max_freq", w ten sposób otrzyma aktualną częstotliwość. Aktualna częstotliwość powinna być bardziej niezawodna niż maksymalna częstotliwość, która może być ustawiona różnymi narzędziami na różne sposoby. – Chris

Powiązane problemy