如何解析Android平板电脑的/proc/cpuinfo
虚拟文件,以获取处理器核心和时钟速度的信息?
我不需要上述文件提供的所有信息;只是这两位。
有人可以帮忙吗?
答案 0 :(得分:5)
目前尚不清楚您是否希望在自己的应用中使用此信息,或仅供自己使用。
您可以使用adb获取此信息:
adb shell cat /proc/cpuinfo
如果您想在应用中使用此信息,请创建一个简单的函数来返回Map<String,String>
,例如,
public static Map<String, String> getCpuInfoMap() {
Map<String, String> map = new HashMap<String, String>();
try {
Scanner s = new Scanner(new File("/proc/cpuinfo"));
while (s.hasNextLine()) {
String[] vals = s.nextLine().split(": ");
if (vals.length > 1) map.put(vals[0].trim(), vals[1].trim());
}
} catch (Exception e) {Log.e("getCpuInfoMap",Log.getStackTraceString(e));}
return map;
}
注意,这不会得到多个cpus信息,覆盖。无论如何,大多数值都是相似的。或修改以创建CpuInfoMaps列表。
试,
Log.d("getCpuInfoMap test", getCpuInfoMap().toString());
答案 1 :(得分:0)
我希望答案不会太晚,但是,这就是我获得特定cpu核心的当前频率的方法:
public class MainActivity extends Activity{
private static final int INSERTION_POINT = 27;
private static String getCurFrequencyFilePath(int whichCpuCore){
StringBuilder filePath = new StringBuilder("/sys/devices/system/cpu/cpu/cpufreq/scaling_cur_freq");
filePath.insert(INSERTION_POINT, whichCpuCore);
return filePath.toString();
}
public static int getCurrentFrequency(int whichCpuCore){
int curFrequency = -1;
String cpuCoreCurFreqFilePath = getCurFrequencyFilePath(whichCpuCore);
if(new File(cpuCoreCurFreqFilePath).exists()){
try {
BufferedReader br = new BufferedReader(new FileReader(new File(cpuCoreCurFreqFilePath)));
String aLine;
while ((aLine = br.readLine()) != null) {
try{
curFrequency = Integer.parseInt(aLine);
}
catch(NumberFormatException e){
Log.e(getPackageName(), e.toString());
}
}
if (br != null) {
br.close();
}
}
catch (IOException e) {
Log.e(getPackageName(), e.toString());
}
}
return curFrequency;
}
}
从这里开始,你只需要调用方法:-D
int core1CurrentFreq = getCurrentFrequency(1, this);
有时核心会脱机,在这种情况下,文件路径将不存在,并且将返回-1
<强> 注 即可。返回值以KHz为单位
MHz值为core1CurrentFreq / 1e3
GHz值为core1CurrentFreq / 1e6
关于getCurFrequencyFilePath()方法的一些解释,因为它不是那么清楚。
当前频率通常存储在文件中:scaling_cur_freq
文件路径为:
"/sys/devices/system/cpu/cpu(XX)/cpufreq/scaling_cur_freq"
其中(XX)代替cpu核心号,例如:
"/sys/devices/system/cpu/cpu2/cpufreq/scaling_cur_freq"
INSERTION_POINT变量只不过是(XX)的索引,我们想要放置对应于cpu核心的数字的点
我建议您查看cpufreq文件夹中的其他一些文件,您可以使用它们获取其他信息,如最大和最小频率,可用频率列表等。
点击此按钮 Link 并向下滚动到标题3