`
chriszeng87
  • 浏览: 740941 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android获取cpu和内存信息、网址的代码

阅读更多
	/** 获取用户硬件信息 */
	public static String getMobileInfo() {
		//StringBuffer sb = new StringBuffer();
		JSONObject mbInfo = new JSONObject();
		
		//通过反射获取用户硬件信息
		try {

			Field[] fields = Build.class.getDeclaredFields();
			for (Field field : fields) {
				// 暴力反射,获取私有信息
				field.setAccessible(true);
				String name = field.getName();
				String value = field.get(null).toString();
				//sb.append(name + "=" + value);
				//sb.append("\n");
				mbInfo.put(name, value);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//return sb.toString();
		return mbInfo.toString();
	}

	
	static public String getCpuString(){
		if(Build.CPU_ABI.equalsIgnoreCase("x86")){
			return "Intel";
		}
		
		String strInfo = "";
		try
		{
			byte[] bs = new byte[1024];
			RandomAccessFile reader = new RandomAccessFile("/proc/cpuinfo", "r");
			reader.read(bs);
			String ret = new String(bs);
			int index = ret.indexOf(0);
			if(index != -1) {
				strInfo = ret.substring(0, index);
			} else {
				strInfo = ret;
			}
		}
		catch (IOException ex){
			ex.printStackTrace();
		}
		
		return strInfo;
	}
	
	static public String getCpuType(){
		String strInfo = getCpuString();
		String strType = null;
		
		if (strInfo.contains("ARMv5")) {
			strType = "armv5";
		} else if (strInfo.contains("ARMv6")) {
			strType = "armv6";
		} else if (strInfo.contains("ARMv7")) {
			strType = "armv7";
		} else if (strInfo.contains("Intel")){
			strType = "x86";
		}else{
			strType = "unknown";
			return strType;
		}
		
		if (strInfo.contains("neon")) {
			strType += "_neon";
		}else if (strInfo.contains("vfpv3")) {
			strType += "_vfpv3";
		}else if (strInfo.contains(" vfp")) {
			strType += "_vfp";
		}else{
			strType += "_none";
		}
		
		return strType;
	}
	
	
	
	/**
	 * @hide
	 * @return
	 */
	public static CPUInfo getCPUInfo() {
		String strInfo = null;
		try
		{
			byte[] bs = new byte[1024];
			RandomAccessFile reader = new RandomAccessFile("/proc/cpuinfo", "r");
			reader.read(bs);
			String ret = new String(bs);
			int index = ret.indexOf(0);
			if(index != -1) {
				strInfo = ret.substring(0, index);
			} else {
				strInfo = ret;
			}
		}
		catch (IOException ex)
		{
			strInfo = "";
			ex.printStackTrace();
		}
		
		CPUInfo info = parseCPUInfo(strInfo);
		info.mCPUMaxFreq = getMaxCpuFreq();
				
		return info;
	}
	
	
	private final static String kCpuInfoMaxFreqFilePath = "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq";
	private static int getMaxCpuFreq() {
		int result = 0;
		FileReader fr = null;
		BufferedReader br = null;
		try {
			fr = new FileReader(kCpuInfoMaxFreqFilePath);
			br = new BufferedReader(fr);
			String text = br.readLine();
			if (text != null) {
				result = Integer.parseInt(text.trim());
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fr != null)
				try {
					fr.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			if (br != null)
				try {
					br.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}

		return result;
	}
	    
	public static class CPUInfo{
		public CPUInfo(){
			
		}
		
		public static final int CPU_TYPE_UNKNOWN			=   0x00000000;
		public static final int CPU_TYPE_ARMV5TE 			= 	0x00000001;
		public static final int CPU_TYPE_ARMV6		 		= 	0x00000010;
		public static final int CPU_TYPE_ARMV7				= 	0x00000100;
		
		public static final int CPU_FEATURE_UNKNOWS			=	0x00000000;
		public static final int CPU_FEATURE_VFP				= 	0x00000001;
		public static final int CPU_FEATURE_VFPV3			= 	0x00000010;
		public static final int CPU_FEATURE_NEON			=	0x00000100;
		
		public int mCPUType;
		public int mCPUCount;
		public int mCPUFeature;		
		public double mBogoMips;
		public long mCPUMaxFreq;
	}
	
	/**
	 * 
	 * @param cpuInfo
	 * @return
	 * @hide
	 */
	private static CPUInfo parseCPUInfo(String cpuInfo) {
		if (cpuInfo == null || "".equals(cpuInfo)) {
			return null;
		}

		CPUInfo ci = new CPUInfo();
		ci.mCPUType = CPUInfo.CPU_TYPE_UNKNOWN;
		ci.mCPUFeature = CPUInfo.CPU_FEATURE_UNKNOWS;
		ci.mCPUCount = 1;
		ci.mBogoMips = 0;

		if (cpuInfo.contains("ARMv5")) {
			ci.mCPUType = CPUInfo.CPU_TYPE_ARMV5TE;
		} else if (cpuInfo.contains("ARMv6")) {
			ci.mCPUType = CPUInfo.CPU_TYPE_ARMV6;
		} else if (cpuInfo.contains("ARMv7")) {
			ci.mCPUType = CPUInfo.CPU_TYPE_ARMV7;
		}

		if (cpuInfo.contains("neon")) {
			ci.mCPUFeature |= CPUInfo.CPU_FEATURE_NEON;
		}

		if (cpuInfo.contains("vfpv3")) {
			ci.mCPUFeature |= CPUInfo.CPU_FEATURE_VFPV3;
		}

		if (cpuInfo.contains(" vfp")) {
			ci.mCPUFeature |= CPUInfo.CPU_FEATURE_VFP;
		}

		String[] items = cpuInfo.split("\n");

		for (String item : items) {
			if (item.contains("CPU variant")) {
				int index = item.indexOf(": ");
				if (index >= 0) {
					String value = item.substring(index + 2);
					try {
						ci.mCPUCount = Integer.decode(value);
						ci.mCPUCount = ci.mCPUCount == 0 ? 1 : ci.mCPUCount;
					} catch (NumberFormatException e) {
						ci.mCPUCount = 1;
					}
				}
			} else if (item.contains("BogoMIPS")) {
				int index = item.indexOf(": ");
				if (index >= 0) {
					String value = item.substring(index + 2);
				}
			}
		}
		
		return ci;
	}



	/**
	 * 获取设备内存大小值
	 * @return 内存大小,单位MB
	 */
	public static long getTotalMemory() { 
	    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();
		    if (str2 != null) {
		    	arrayOfString = str2.split("\\s+");
		    	initial_memory = Integer.valueOf(arrayOfString[1]).intValue()/1024;
		    }
		    localBufferedReader.close();
		    return initial_memory;
	    } 
	    catch (IOException e) 
	    {       
	        return -1;
	    }
	}


	/**
	 * @hide
	 * @return
	 */
	public CPUInfo getCPUInfo() {
		String strInfo = null;
		try
		{
			byte[] bs = new byte[1024];
			RandomAccessFile reader = new RandomAccessFile("/proc/cpuinfo", "r");
			reader.read(bs);
			String ret = new String(bs);
			int index = ret.indexOf(0);
			if(index != -1) {
				strInfo = ret.substring(0, index);
			} else {
				strInfo = ret;
			}
		}
		catch (IOException ex)
		{
			strInfo = "";
			ex.printStackTrace();
		}
		
		CPUInfo info = parseCPUInfo(strInfo);
		info.mCPUMaxFreq = getMaxCpuFreq();
				
		return info;
	}

	/**
	 * 获取android CPU类型
	 * 
	 * @return String CPU类型
	 */
	public static String getCpuModel(){
		String cpu_model = "";

		CPUInfo in = getCPUInfo();
			  
		if ((in.mCPUType & CPUInfo.CPU_TYPE_ARMV5TE) == CPUInfo.CPU_TYPE_ARMV5TE)
			cpu_model="armv5";
		else if ((in.mCPUType & CPUInfo.CPU_TYPE_ARMV6) == CPUInfo.CPU_TYPE_ARMV6)
			cpu_model="armv6";
		else if ((in.mCPUType & CPUInfo.CPU_TYPE_ARMV7) == CPUInfo.CPU_TYPE_ARMV7)
			cpu_model="armv7";
		else
			cpu_model="unknown";
		return cpu_model;
	}

	/**
	 * 获取android CPU特性
	 * 
	 * @return String CPU特性
	 */
	public static String getCpuFeature(){
	  	String cpu_feature = "";
	      	
		CPUInfo in = getCPUInfo();
			  	
		if ((in.mCPUFeature & CPUInfo.CPU_FEATURE_NEON ) == CPUInfo.CPU_FEATURE_NEON)
			cpu_feature="neon";
		else if ((in.mCPUFeature & CPUInfo.CPU_FEATURE_VFP ) == CPUInfo.CPU_FEATURE_VFP)
			cpu_feature="vfp";
		else if ((in.mCPUFeature & CPUInfo.CPU_FEATURE_VFPV3 ) == CPUInfo.CPU_FEATURE_VFPV3)
			cpu_feature="vfpv3";
		else
			cpu_feature="unknown"; 
		return cpu_feature;
	}

	/**
	 * 获取ip地址
	 * 
	 * @param mContext  Context
	 * @return ip地址字符串
	 */
	public static String getIpAddress(Context mContext) {
		String ipAddress = null;
		try {
			for (Enumeration<NetworkInterface> en = NetworkInterface
					.getNetworkInterfaces(); en.hasMoreElements();) {
				NetworkInterface intf = en.nextElement();
				for (Enumeration<InetAddress> enumIpAddr = intf
						.getInetAddresses(); enumIpAddr.hasMoreElements();) {
					InetAddress inetAddress = enumIpAddr.nextElement();
					if (!inetAddress.isLoopbackAddress()) {
						ipAddress = inetAddress.getHostAddress().toString(); 
					}
				}
			}
		} catch (SocketException ex) {
			return null;
		}
	    if (DEBUG) {
	        Log.d(TAG, "ip address:" + ipAddress);
	    }
		return ipAddress;
	}
 

 

0
0
分享到:
评论
1 楼 songshuaiyang 2017-03-01  
哥们写东西可真乱啊 

相关推荐

    Android获取cpu,内存,磁盘使用率信息

    在Android平台上,获取CPU、内存和磁盘使用率信息对于开发者来说是十分重要的,这有助于监控设备性能,优化应用运行,以及提供用户友好的反馈。然而,由于Android系统的安全机制,不同的权限级别决定了你能获取到何...

    android 获取cpu使用率, 内存 实时数据

    在Android平台上,获取CPU使用率和内存实时数据是开发者进行性能监控、优化应用或实现系统监控功能的关键步骤。本文将详细介绍如何在Android中获取这些关键信息,并提供相关的代码示例。 首先,我们要理解CPU使用率...

    Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例

    本文实例讲述了Android编程实现获取系统内存、CPU使用率及状态栏高度的方法。分享给大家供大家参考,具体如下: DeviceInfoManage类用于获取系统的内存,CPU的信息,以及状态栏的高度 import java.io.BufferedReader...

    Android中获取系统内存信息以及进程信息

    在Android系统中,开发者可以通过Android提供的API来获取系统的内存信息以及...通过对内存信息和进程信息的获取,开发者可以更有效地调试、优化代码,提高用户体验。记住,合理的资源管理是构建高效、稳定应用的关键。

    Android代码-查看手机应用的CPU和内存资源的使用情况

    Due to undocumented changes made by Google, on Android 7.0 CPU usage information for processes others than the own AnotherMonitor one will not be available (not even with root access). Rest of the app...

    android硬件信息获取样例

    本示例主要关注如何获取CPU信息、内存信息以及手机型号等关键硬件数据。以下将详细介绍这些知识点。 首先,Android系统提供了一个名为`HardwareInformation`的接口,通过这个接口,开发者可以获取到设备的各种硬件...

    获取android手机CPU\内存\屏幕密度等硬件信息

    在Android中,获取CPU信息相对复杂,因为没有直接的API。一种常见的做法是读取系统的`/proc/cpuinfo`文件,这通常需要使用到`FileReader`和`BufferedReader`来读取文件内容: ```java try { BufferedReader reader...

    解析Android获取系统cpu信息,内存,版本,电量等信息的方法详解

    这两段代码分别读取了`cpuinfo_max_freq`和`cpuinfo_min_freq`文件,以获取CPU的最大和最小频率。 内存信息的获取相对复杂一些,因为Android提供了多种API来获取内存状态。例如,可以使用`ActivityManager`类的`get...

    获取硬件内存和CPU

    在Android系统中,获取硬件内存和CPU信息是开发者或普通用户了解设备性能的重要途径。本文将详细介绍如何在Android平台上查询手机的硬件内存大小以及CPU的核心数等关键信息。 首先,我们要明白内存(Memory)通常指...

    Python获取android设备cpu和内存占用情况

    在本文中,我们将深入探讨如何使用Python通过ADB(Android Debug Bridge)来获取Android设备上特定应用的CPU和内存占用情况。这个过程对于Android应用的性能分析、优化以及故障排查至关重要。 首先,要实现这个功能,...

    获取android手机的内存,cpu使用率,mac地址等一系列信息

    在Android平台上,获取设备的各种信息,如内存使用情况、CPU使用率以及MAC地址等,是进行系统监控和应用优化的重要步骤。以下将详细介绍如何获取这些关键信息。 首先,获取IP地址通常涉及到网络接口的交互。在...

    获取 Android 设备的系统信息 包含屏幕信息、内存信息、IMEI、存储、传感器、CPU等信息.zip

    在Android平台上,获取设备的系统信息是开发过程中常见的需求,这包括屏幕参数、内存状态、IMEI号码、存储空间、传感器信息以及CPU详情等。以下将详细解释如何获取这些信息。 1. **屏幕信息**: - 屏幕尺寸:通过`...

    android获取手机信息

    Android 获取手机信息 Android 操作系统提供了...使用 Java 代码可以轻松地获取 Android 手机的各种信息,包括安装的应用信息、手机可用内存和总内存、手机 CPU 信息等。这些信息对于开发 Android 应用程序非常有用。

    获取CPU占用率的代码

    这段代码使用了PDH(Performance Data Helper)库来获取CPU的% Processor Time计数器,它表示CPU在用户模式和内核模式下执行指令所消耗的时间。`Sleep`函数是为了确保获取的是一个时间段内的平均CPU使用率,而不是...

    Android获取设备CPU核数、时钟频率以及内存大小的方法

    首先,获取CPU核数是通过访问/sys/devices/system/cpu/目录完成的。在这个目录下,以cpu开头的文件代表一个CPU核心。通过统计这些文件的数量,我们可以得到CPU的核数。例如,如果该目录下有cpu0、cpu1、cpu2等文件,...

    CPU和内存获取 动态变化

    当程序运行时,它们的部分代码和数据会被加载到内存中,以便CPU快速访问。内存容量越大,系统同时处理的数据就越多,运行速度通常也会更快。内存的动态变化主要体现在内存占用量上,这可能由打开的应用程序数量、...

    Android 的cpu 硬盘 内存 网络设置 系统信息 硬件信息.pdf

    上述知识点涵盖了如何获取Android设备的CPU、硬盘、内存、网络设置、系统信息和硬件信息,并通过代码示例展示了这些信息的具体获取方法。在实际应用开发中,开发者可以参照这些方法,结合具体的项目需求,实现所需...

    Android的cpu硬盘内存网络设置系统信息硬件信息.pdf

    本文主要围绕Android设备的CPU、硬盘、内存以及网络设置等信息的获取进行探讨。 首先,查看手机信息的可行性分析涉及到对系统接口的理解和使用。在Android系统中,大部分硬件和系统信息可以通过Java API或者系统...

    获取Android设备常见硬件信息

    获取CPU信息通常通过系统属性或第三方应用,如`/sys/devices/system/cpu`目录下的文件,如`cpuinfo`,可以查看CPU型号、核心数、频率等。 2. **内存(RAM)**:RAM是临时存储数据的地方,用于运行应用程序和操作...

Global site tag (gtag.js) - Google Analytics