2011-02-09 15 views
7

Tôi tìm thấy một số tài liệu tham khảo và kết thúc với đoạn mã sau:Cách đáng tin cậy nhất để xác định tần số xung nhịp CPU của điện thoại Android là gì?

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

Đoạn mã trên hoạt động khá tốt nhưng không phải tất cả các thời gian. Tôi đã nhận được một số báo cáo rằng nó báo cáo cao hơn tần số do SetCPU đặt ở mức tối đa trên một số điện thoại.

Có cách nào đáng tin cậy hơn để tìm tốc độ đồng hồ của điện thoại Android không?

+4

Bạn có chắc chắn rằng nó không phải là 'SetCPU' đó là "dối trá nói"? –

+2

Ngoài ra điều này có thể là tôi ngây thơ, nhưng tại sao sử dụng một quá trình (không phải là nó là vấn đề, chỉ cần tự hỏi vì lý do hiệu suất)? tại sao không chỉ nhận được inputstream từ tập tin trực tiếp? Tôi giả định các điều khoản tương tự là cần thiết để exec mèo như có để đọc các thư mục proc. –

Trả lời

1

Nếu bạn muốn nhận được tần số hiện tại bạn có thể đọc từ:

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

Đó chính xác là những gì anh ấy làm - chỉ phức tạp hơn nhiều! – Zordid

+0

@Zordid: Vâng, đó là cùng một priciple. Nhưng tôi đề nghị "scaling_cur_freq" trong khi ông đang đọc từ "cpuinfo_max_freq", do đó ông sẽ có được tần số hiện tại. Tần số hiện tại phải đáng tin cậy hơn tần số tối đa, có thể được thiết lập bởi các công cụ khác nhau theo những cách khác nhau. – Chris