Android获取各种设备信息
Android获取各种设备信息,如下图:
public class EquipmentInfoCollection {
TelephonyManager telephonyManager;
/**
* 设备信息PO
*/
private EquipmentPO equipment;
public EquipmentPO getEquipmentInfo(Context context) {
telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
equipment = new EquipmentPO();
//手机品牌
equipment.setBrand(Build.BRAND);
//越狱标识
equipment.setBreakFlag(isRoot() + "");
//手机运营商
equipment.setCarrier(getProvidersName(telephonyManager));
//手机IP
equipment.setIp(getIPAddress(context));
//媒体接入控制(MAC)地址
equipment.setMac(getMacAddress(context));
//运营商国家
equipment.setCountry(telephonyManager.getNetworkCountryIso());
//CPU支持的指令集
equipment.setCpuABI(getCpuAbi());
//CPU数量
equipment.setCpuCount(getCPUNumCores() + "");
//CPU型号
equipment.setCpuHardware(getCpuName());
//CPU序列
equipment.setCpuSerial(getCPUSerial());
//CPU速度
String minCpuFreq = getMinCpuFreq();
minCpuFreq = minCpuFreq.length() != 0 ? minCpuFreq : "0";
String maxCpuFreq = getMaxCpuFreq();
maxCpuFreq = maxCpuFreq.length() != 0 ? maxCpuFreq : "0";
String curCpuFreq = getCurCpuFreq();
curCpuFreq = curCpuFreq.length() != 0 ? curCpuFreq : "0";
equipment.setCpuSpeed("{'cpuSpeed': { 'min':'" + minCpuFreq + "' , 'max':'" + maxCpuFreq + "' ,'cur':'" + curCpuFreq + "'}}");
//手机设备ID
equipment.setDeviceId(getUDID(context));
//国际移动用户ID
equipment.setImsi(telephonyManager.getSubscriberId());
//机型
equipment.setModel(Build.MODEL);
//网络类型
equipment.setNetworkType(getNetworkType(context));
//屏幕分辨率
equipment.setResolution(getScreenResolution(context));
//模拟器标识
equipment.setSimulator(isEmulator(context, telephonyManager));
//系统总内存
equipment.setTotalStorage(getTotalExternalMemorySize());
//系统剩余内存
equipment.setLeftDisk(getAvailableExternalMemorySize());
//SD卡总内存
equipment.setTotalMemory(getTotalInternalMemorySize());
//SD卡可用内存;
equipment.setLeftMemory(getAvailableInternalMemorySize());
/**获取系统触摸屏的触摸方式*/
equipment.setTouchScreen("");
//输入法类型
equipment.setInputMethod(getInputMethod(context));
/**输入法版本*/
equipment.setInputMethodVersion("");
//时区
equipment.setTimeZone(getCurrentTimeZone());
//语言
equipment.setLanguage(Locale.getDefault().getLanguage());
//获取手机SIM序列号
equipment.setSim(telephonyManager.getSimSerialNumber());
String meid = "";
String imei = "";
if (Build.VERSION.SDK_INT < 21) {
//如果获取系统的IMEI/MEID,14位代表meid 15位是imei
if (Find_IMEI_MEID.getNumber(context, telephonyManager) == 14) {
//meid
meid = Find_IMEI_MEID.getImeiOrMeid(context, telephonyManager);
} else if (Find_IMEI_MEID.getNumber(context, telephonyManager) == 15) {
//imei1
imei = Find_IMEI_MEID.getImeiOrMeid(context, telephonyManager);
}
// 21版本是5.0,判断是否是5.0以上的系统 5.0系统直接获取IMEI1,IMEI2,MEID
} else if (Build.VERSION.SDK_INT >= 21) {
//meid
meid = Find_IMEI_MEID.getMeid(context, telephonyManager);
//imei
imei = Find_IMEI_MEID.getImei(context, telephonyManager);
}
//获取GSM手机的基带串号
equipment.setImei(imei);
/**获取CDMA手机的用户身份号 和上一个属性用同一个获取方法*/
equipment.setMeid(meid);
//默认浏览器
equipment.setDefaultBrowser(getBrowserApp(context));
//本机手机号
equipment.setPhoneNum(telephonyManager.getLine1Number());
//照片总数
equipment.setDevice_pic_cnt(getPhotoNumber(context));
//剩余电量
equipment.setDevice_battery_level(getDevice_battery_level(context));
return equipment;
}
/**
* 判断当前手机是否有ROOT权限
*
* @return 0代表未越狱 1代表已越狱
*/
private int isRoot() {
int result = 0;
try {
if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())) {
result = 0;
} else {
result = 1;
}
Log.d("EC.isROOT", "result = " + result);
} catch (Exception e) {
Log.e("isRoot", e.getMessage());
}
return result;
}
/**
* 返回手机运营商名称
*
* @param telephonyManager
* @return
*/
private String getProvidersName(TelephonyManager telephonyManager) {
String ProvidersName = null;
String IMSI = telephonyManager.getSubscriberId();
if (IMSI == null) {
return "unknow";
}
if (IMSI.startsWith("46000") || IMSI.startsWith("46002")) {
ProvidersName = "中国移动";
} else if (IMSI.startsWith("46001")) {
ProvidersName = "中国联通";
} else if (IMSI.startsWith("46003")) {
ProvidersName = "中国电信";
}
return ProvidersName;
}
/**
* 获取手机IP地址
*
* @param context
* @return
*/
private String getIPAddress(Context context) {
NetworkInfo info = ((ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info != null && info.isConnected()) {
//当前使用2G/3G/4G网络
if (info.getType() == ConnectivityManager.TYPE_MOBILE) {
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) {
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException e) {
Log.e("EquipmentInfoCollection", e.getMessage());
}
//当前使用无线网络
}