Как получить информацию о процессоре (CPU) в Android

июня
07
2012
Метки: android cpu

Содержание

В этой статье расскажем о том, как получить информацию о процессоре (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:

ProcMeminfoProperty.java

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:

ProcMeminfoParser.java

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 >

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии