import java.io.BufferedReader;
import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.util.regex.Pattern;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Environment;
import android.os.StatFs;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
/********************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*类名: SmartVideoPhoneZChou01
*作者: Sun_skin
*标记: 无
*作用: TODO
********************************************************/
public class HK_PhoneInfo_Util {
private static String TAG = "HK_PhoneInfo_Util";
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getCpuName
*作者: Sun_Skin
*输入参数: @return
*返回值: String
*标记: 无
*作用: 获取CPU型号
********************************************************/
public static String getCpuName()
{
try
{
FileReader fr = new FileReader("/proc/cpuinfo");
BufferedReader br = new BufferedReader(fr);
String text = br.readLine();
String[] array = text.split(":\\s+",2);
for(int i = 0; i < array.length; i++)
{
}
return array[1];
}catch(FileNotFoundException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
return null;
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getNumCores
*作者: Sun_Skin
*输入参数: @return
*返回值: int
*标记: 无
*作用: 获取CPU核心数
********************************************************/
public static int getNumCores()
{
//Private Class to display only CPU devices in the directory listing
class CpuFilter implements FileFilter
{
@Override
public boolean accept(File pathname) {
//Check if filename is "cpu", followed by a single digit number
if(Pattern.matches("cpu[0-9]", pathname.getName())) {
return true;
}
return false;
}
}
try {
//Get directory containing CPU info
File dir = new File("/sys/devices/system/cpu/");
//Filter to only list the devices we care about
File[] files = dir.listFiles(new CpuFilter());
Log.d(TAG, "CPU Count: "+files.length);
//Return the number of cores (virtual CPU devices)
return files.length;
} catch(Exception e) {
//Print exception
Log.d(TAG, "CPU Count: Failed.");
e.printStackTrace();
//Default to return 1 core
return 1;
}
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getMinCpuFreq
*作者: Sun_Skin
*输入参数: @return
*返回值: String
*标记: 无
*作用: 无获取CPU最大频率
********************************************************/
public static String getMinCpuFreq()
{
String result = "";
ProcessBuilder cmd;
try {
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[24];
while (in.read(re) != -1)
{
result = result + new String(re);
}
in.close();
} catch (IOException ex) {
ex.printStackTrace();
result = "N/A";
}
return result.trim();
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getRamMemory
*作者: Sun_Skin
*输入参数: @param context
*输入参数: @return
*返回值: long
*标记: 无
*作用: RAM内存大小
********************************************************/
public static long getRamMemory(Context context)
{
String str1 = "/proc/meminfo";// 系统内存信息文件
String str2;
String[] arrayOfString;
long initial_memory = 0;
try
{
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小
arrayOfString = str2.split("\\s+");
for (String num : arrayOfString) {
Log.i(str2, num + "\t");
}
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte
localBufferedReader.close();
} catch (IOException e) {
}
//return Formatter.formatFileSize(context, initial_memory);// Byte转换为KB或者MB,内存大小规格化
System.out.println("总运存--->>>"+initial_memory/(1024*1024));
return initial_memory/(1024*1024);
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getTotalInternalMemorySize
*作者: Sun_Skin
*输入参数: @return
*返回值: long
*标记: 无
*作用: ROM大小
********************************************************/
public static long getTotalInternalMemorySize()
{
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
public static String getScreenResolution(Activity context)
{
DisplayMetrics dm = new DisplayMetrics();
context.getWindowManager().getDefaultDisplay().getMetrics(dm);
String strOpt = dm.widthPixels + " * " + dm.heightPixels;
return strOpt;
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getPhoneModel
*作者: Sun_Skin
*输入参数: @return
*返回值: String
*标记: 无
*作用: 获取手机型号
********************************************************/
public static String getPhoneModel()
{
return android.os.Build.MODEL;
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getManufacturer
*作者: Sun_Skin
*输入参数: @return
*返回值: String
*标记: 无
*作用: 获取手机厂商
********************************************************/
public static String getManufacturer()
{
return android.os.Build.MANUFACTURER;
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getSdkVersion
*作者: Sun_Skin
*输入参数: @return
*返回值: int
*标记: 无
*作用: SDK版本
********************************************************/
public static int getSdkVersion()
{
return android.os.Build.VERSION.SDK_INT;
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getOsVersion
*作者: Sun_Skin
*输入参数: @return
*返回值: String
*标记: 无
*作用: 系统版本
********************************************************/
public static String getOsVersion()
{
return android.os.Build.VERSION.RELEASE;
}
/*******************************************************
*日期: 2016年2月14日
*文件名: HK_PhoneInfo_Util.java
*函数名: getAppVersionName
*作者: Sun_Skin
*输入参数: @param context
*输入参数: @return
*返回值: String
*标记: 无
*作用: 获取软件版本号
********************************************************/
public static String getAppVersionName(Context context)
{
String versionName = "";
try {
PackageManager packageManager = context.getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo("cn.testgethandsetinfo", 0);
versionName = packageInfo.versionName;
if (TextUtils.isEmpty(versionName))
{
return "";
}
} catch (Exception e) {
e.printStackTrace();
}
return versionName;
}
}