android获取系统相关信息(后续更新)

package com.muzhiwan.sdk.core.utils;


import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;


import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.telephony.TelephonyManager;
import android.text.format.Formatter;
import android.view.Display;


public class SystemInfoUtils {
/**
* 获取当前手机的网络类型

* @param context
*            上下文对象
* @return 成功返回对应的网络类型(如:wifi、2g、3g、4g),失败返回null
*/
public static String getCurrentNetType(Context context) {
String type = "";
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();
if (info == null) {
type = "null";
} else if (info.getType() == ConnectivityManager.TYPE_WIFI) {
type = "wifi";
} else if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
int subType = info.getSubtype();
if (subType == TelephonyManager.NETWORK_TYPE_CDMA || subType == TelephonyManager.NETWORK_TYPE_GPRS || subType == TelephonyManager.NETWORK_TYPE_EDGE) {
type = "2g";
} else if (subType == TelephonyManager.NETWORK_TYPE_UMTS || subType == TelephonyManager.NETWORK_TYPE_HSDPA || subType == TelephonyManager.NETWORK_TYPE_EVDO_A || subType == TelephonyManager.NETWORK_TYPE_EVDO_0 || subType == TelephonyManager.NETWORK_TYPE_EVDO_B) {
type = "3g";
} else if (subType == TelephonyManager.NETWORK_TYPE_LTE) {
type = "4g";
}
}
return type;
}


/**
* 获取手机ip地址

* @return
*/
public static String getPhoneIp() {
String ipInfo = "";
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() && inetAddress instanceof Inet4Address) {
ipInfo = inetAddress.getHostAddress().toString();
}
}
}
} catch (Exception e) {


}
return ipInfo;
}


/**
* 获取android当前可用内存

* @param context
*            上下文对象
* @return 系统当前可用内存
*/
public static String getAvailMemory(Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
am.getMemoryInfo(mi);


return Formatter.formatFileSize(context, mi.availMem);
}


/**
* 获取系统总内存大小

* @param context
*            上下文对象
* @return 系统总内存大小(Byte为单位)
*/
public static String getTotalMemory(Context context) {
String memoryFilePath = "/proc/meminfo";// 系统内存信息文件
String memoryInfo;
String[] arrayOfInfo;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(memoryFilePath);
BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);
memoryInfo = localBufferedReader.readLine();
arrayOfInfo = memoryInfo.split("\\s+");
initial_memory = Integer.valueOf(arrayOfInfo[1]).intValue() * 1024;
localBufferedReader.close();
} catch (IOException e) {


}
return Formatter.formatFileSize(context, initial_memory);
}


/**
* 获取屏幕宽高(数组形式)

* @param context
*            上下文对象
* @return 索引为0的为宽,索引为1的为高
*/
public static int[] getWidthAndHeightArray(Context context) {
Display display = ((Activity) context).getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
int[] widthAndHeight = new int[] { width, height };
return widthAndHeight;
}


/**
* 获取屏幕宽高(字符串形式)

* @param context
*            上下文对象
* @return 返回格式为:"宽 X 高"
*/
public static String getWidthAndHeightString(Context context) {
return getWidthAndHeightArray(context)[0] + " X " + getWidthAndHeightArray(context)[1];
}


/**
* 获取屏幕宽度

* @param context
*            上下文对象
* @return 屏幕宽度
*/
public static int getWidth(Context context) {
return getWidthAndHeightArray(context)[0];
}


/**
* 获取屏幕高度

* @param context
*            上下文对象
* @return 屏幕高度
*/
public static int getHeight(Context context) {
return getWidthAndHeightArray(context)[1];
}


/**
* 获取设备硬件信息集合

* @param context
*            上下文对象
* @return 索引0,1,2,3,4分别对应imei,imsi,手机号,手机型号,手机品牌
*/
public static String[] getInfo(Context context) {
TelephonyManager mtm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
String imei = mtm.getDeviceId();
String imsi = mtm.getSubscriberId();
String phoneNum = mtm.getLine1Number();
String phoneModel = android.os.Build.MODEL;
String phoneBrand = android.os.Build.BRAND;
return new String[] { imei, imsi, phoneNum, phoneModel, phoneBrand };
}


/**
* 获取设备IMEI号

* @param context
*            上下文对象
* @return 设备IMEI号
*/
public static String getIMEI(Context context) {
return getInfo(context)[0];
}


/**
* 获取设备IMSI号

* @param context
*            上下文对象
* @return 设备IMSI号
*/
public static String getIMSI(Context context) {
return getInfo(context)[1];
}


/**
* 获取手机号码

* @param context
*            上下文对象
* @return 手机号码
*/
public static String getPhoneNum(Context context) {
return getInfo(context)[2];
}


/**
* 获取设备型号

* @param context
*            上下文对象
* @return 设备型号
*/
public static String getPhoneModel(Context context) {
return getInfo(context)[3];
}


/**
* 获取设备品牌

* @param context
*            上下文对象
* @return 设备品牌
*/
public static String getPhoneBrand(Context context) {
return getInfo(context)[4];
}


/**
* 获取手机MAC地址(只有手机开启wifi才能获取到MAC地址)

* @param context
* @return
*/
public static String getMacAddress(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
return wifiInfo.getMacAddress();
}


/**
* 获取设备cpu信息

* @return cpu信息,索引0、1分别对应cpu型号、cpu频率
*/
public static String[] getCpuInfo() {
String cpuFilePath = "/proc/cpuinfo";
String cpuInfo = "";
String[] cpuInfos = { "", "" };
String[] arrayOfCpuInfo;
try {
FileReader fr = new FileReader(cpuFilePath);
BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
for(int i = 0; i < 5; i ++){
cpuInfo = localBufferedReader.readLine();
}
arrayOfCpuInfo = cpuInfo.split("\\s+");
for (int i = 2; i < arrayOfCpuInfo.length; i++) {
cpuInfos[0] = cpuInfos[0] + arrayOfCpuInfo[i] + " ";
}
for(int i = 0; i < 3; i ++){
cpuInfo = localBufferedReader.readLine();
}
arrayOfCpuInfo = cpuInfo.split("\\s+");
cpuInfos[1] += arrayOfCpuInfo[2];
localBufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return cpuInfos;
}

public static String testSystemUtils(Context context){
String testResult = "信息如下:";
testResult += "\n可用内存大小为:" + getAvailMemory(context);
testResult += "\n总内存大小为:" + getTotalMemory(context);
testResult += "\n当前网络类型为:" + getCurrentNetType(context);
testResult += "\n当前ip为:" + getPhoneIp();
testResult += "\n当前宽高为:" + getWidthAndHeightString(context);
testResult += "\n当前imei为:" + getIMEI(context);
testResult += "\n当前imsi为:" + getIMSI(context);
testResult += "\n当前电话号码为:" + getPhoneNum(context);
testResult += "\n当前设备型号为:" + getPhoneModel(context);
testResult += "\n当前设备品牌为:" + getPhoneBrand(context);
testResult += "\n当前mac地址为:" + getMacAddress(context);
testResult += "\n当前cpu型号为:" + getCpuInfo()[0];
testResult += "\n当前cpu频率为:" + getCpuInfo()[1];

return testResult;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值