Содержание
В этой статье расскажем о том, как получить информацию о процессоре (CPU) в сматрфонах под управлением Android.
Чтобы получить эту информацию, необходимо прочитать файл /proc/cpuinfo. Ниже пример содержимого этого файла:
Processor : ARMv6-compatible processor rev 5 (v6l)
BogoMIPS : 532.48
Features : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 6TEJ
CPU variant : 0x1
CPU part : 0xb36
CPU revision : 5
Hardware : QCT MSM7x27 SKU2
Revision : 0000
Serial : 0000000000000000
Прочитать его можно следующим образом:
package com.seostella.deviceinfo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class CPUInfoActivity extends Activity{
private static final String TAG = "CPUInfoActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getCPUInfo();
}
public void getCPUInfo() {
String procCpuInfo = "/proc/cpuinfo";
String temp;
int readBlockSize = 8192;
try {
FileReader fileReader = new FileReader(procCpuInfo);
BufferedReader bufferedReader = new BufferedReader(fileReader, readBlockSize);
while ((temp = bufferedReader.readLine()) != null) {
Log.i(TAG, temp);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
И, в качестве бонуса, представим удобный класс для получения любых свойств файла /proc/cpuinfo. Итак, код класса ProcCpuinfoProperty:
package com.seostella.deviceinfo.proc.cpuinfo;
public class ProcCpuinfoProperty {
public static final String PROCESSOR = "Processor";
public static final String BOGO_MIPS = "BogoMIPS";
public static final String FEATURES = "Features";
public static final String CPU_IMPLEMENTER = "CPU implementer";
public static final String CPU_ARCHITECTURE = "CPU architecture";
public static final String CPU_VARIANT = "CPU variant";
public static final String CPU_PART = "CPU part";
public static final String CPU_REVISION = "CPU revision";
public static final String HARDWARE = "Hardware";
public static final String REVISION = "Revision";
public static final String SERIAL = "Serial";
private String name;
private String value;
public ProcCpuinfoProperty(String name, String value) {
super();
this.name = name;
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
Парсер файла /proc/cpuinfo:
package com.seostella.deviceinfo.proc.cpuinfo;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.HashMap;
public class ProcCpuInfoParser {
private static final String PROC_CPUINFO_FILENAME = "/proc/cpuinfo";
public static HashMap<String, ProcCpuinfoProperty> parseProcCpuinfo() {
String procMemInfo = PROC_CPUINFO_FILENAME;
HashMap<String, ProcCpuinfoProperty> procCpuinfoProperties = new HashMap<String, ProcCpuinfoProperty>();
ProcCpuinfoProperty property;
String temp;
int readBlockSize = 8192;
try {
FileReader fileReader = new FileReader(procMemInfo);
BufferedReader bufferedReader = new BufferedReader(fileReader, readBlockSize);
while ((temp = bufferedReader.readLine()) != null) {
property = parseProcCpuinfoLine( temp );
if( property != null ){
procCpuinfoProperties.put( property.getName(), property );
}
}
} catch (IOException e) {
e.printStackTrace();
}
return procCpuinfoProperties;
}
private static ProcCpuinfoProperty parseProcCpuinfoLine(String line) {
String[] parts = line.split(":");
if (parts != null && parts.length == 2 && parts[0] != null
&& parts[1] != null) {
return new ProcCpuinfoProperty( parts[0].trim(), parts[1].trim() );
}
return null;
}
}
Пример использования парсера:
HashMap<String, ProcCpuinfoProperty> meminfoProperties = ProcCpuInfoParser.parseProcCpuinfo();
Log.i(TAG,
"Processor: "
+ meminfoProperties.get( ProcCpuinfoProperty.PROCESSOR ).getValue()
+ " Features: "
+ meminfoProperties.get( ProcCpuinfoProperty.FEATURES ).getValue() );
< | Как получить информацию о батарее в Android | Как получить uptime (время работы устройства от последнего запуска) в Android | > |