2011-02-09 13 views
7

Ho trovato alcuni riferimenti e finirono con il seguente codice:Qual è il modo più affidabile per determinare la frequenza di clock della CPU dei telefoni 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(); 

Il codice precedente funziona abbastanza bene, ma non tutto il tempo. Ho ottenuto alcuni rapporti che riporta superiori alla frequenza impostata da SetCPU con impostazione massima su alcuni telefoni.

Esiste un modo più affidabile per trovare la velocità di clock dei telefoni Android?

+4

Sei sicuro che non è 'SetCPU' che è "mentire"? –

+2

Anche questo potrebbe essere che io sia ingenuo, ma perché usare un processo (non che sia il problema, mi chiedo solo per motivi di prestazioni)? perché non ottenere direttamente l'inputstream dal file? Presumo che siano necessarie le stesse autorizzazioni per eseguire cat in quanto è necessario leggere la directory proc. –

risposta

1

Se si desidera ottenere la frequenza attuale si può leggere da:

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

Questo è esattamente quello che fa, solo molto più complicato! – Zordid

+0

@Zordid: Sì, è lo stesso principio. Ma ho suggerito "scaling_cur_freq" mentre sta leggendo da "cpuinfo_max_freq", quindi otterrebbe la frequenza corrente. La frequenza corrente dovrebbe essere più affidabile della frequenza massima, che può essere impostata da strumenti diversi in modi diversi. – Chris