/** * 获取硬件信息 * @author Administrator * */ public class SystemManager { private static SystemManager systemManager; private ActivityManager activityManager; private ConnectivityManager connectivityManager; private TelephonyManager telephonyManager; private WifiManager wifiManager; private Context context; private SystemManager(Context context) { this.context=context; activityManager=(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); wifiManager = (WifiManager) context .getSystemService(Context.WIFI_SERVICE); telephonyManager = (TelephonyManager) context .getSystemService(Context.TELEPHONY_SERVICE); } public static SystemManager getSystemManager(Context context) { if (systemManager == null) systemManager = new SystemManager(context); return systemManager; } /** * @author: JinPeng * @Time:2016-8-31: 下午12:42:59 * 设置activity沉浸式 */ public static void setchenjinshi(Activity context) { //判断当前SDK版本号,如果是4.4以上,就是支持沉浸式状态栏的 if (VERSION.SDK_INT >= VERSION_CODES.KITKAT) { context.getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } } /** * @author: JinPeng * @Time:2016-8-31: 下午12:43:41 * 获取状态栏高度 */ public static int getStatusBarHeight(Context context) { int result = 0; int resourceId = context.getResources().getIdentifier( "status_bar_height", "dimen", "android"); if (resourceId > 0) { result = context.getResources().getDimensionPixelSize(resourceId); } return result; } /** 运行内存总大小 */ public long getRamTotal() { long memory = 0; String str1 = "/proc/meminfo";// 系统内存信息文件 try { BufferedReader bufrd = new BufferedReader(new FileReader(str1)); String line = bufrd.readLine(); String memoryStr = line.split("\\s+")[1]; memory = Long.valueOf(memoryStr) * 1024;// KB---->B bufrd.close(); } catch (Exception e) { e.printStackTrace(); } return memory; } /** 运行内存 剩余大小 */ public long getRamFree() { long memory=0; MemoryInfo memoryInfo=new MemoryInfo(); activityManager.getMemoryInfo(memoryInfo); memory=memoryInfo.availMem; return memory; } /** 检测手机是否ROOT*/ public String isRoot() { Process process = null; DataOutputStream os = null; try { process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes("ls /data/\n"); os.writeBytes("exit\n"); os.flush(); //process.waitFor(); } catch (Exception e) { return "否"; } finally { try { if (os != null) { os.close(); } process.destroy(); } catch (Exception e) {} } return "是"; } /** ******************** C P U *********************** */ /** 获取CPU最大频率 */ public String getCPUmaxFreq() { String result = ""; String[] command = { "/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" }; ProcessBuilder builder = new ProcessBuilder(command); try { Process process = builder.start(); InputStream is = process.getInputStream(); byte[] buff = new byte[24]; int len; while ((len = is.read(buff)) != -1) { result = result + new String(buff, 0, len); } is.close(); } catch (IOException e) { e.printStackTrace(); return "N/A"; } return result.trim(); } /** * 获取手机可用内存数量 * * @param context * @return */ public static long getAvailableRemainsMemoryCount(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ActivityManager.MemoryInfo memoryInfo = new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(memoryInfo); return memoryInfo.availMem; } /** 获取CPU最小频率(单位KHZ)*/ public String getCpuMinFreq() { String result = ""; ProcessBuilder cmd; try { String[] args = { "/system/bin/cat", "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_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(); } /** 实时获取CPU当前频率(单位KHZ)*/ public String getCpuCurFreq() { String result = "N/A"; try { FileReader fr = new FileReader( "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"); BufferedReader br = new BufferedReader(fr); String text = br.readLine(); result = text.trim(); br.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return result; } /** 获取CPU名字*/ public 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++) { } br.close(); return array[1]; } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } /** 设备CPU数量 */ public int getCpuNumber() { class CpuFilter implements FileFilter { public boolean accept(File pathname) { if (Pattern.matches("cpu[0-9]", pathname.getName())) { return true; } return false; } } try { File dir = new File("/sys/devices/system/cpu/"); File[] files = dir.listFiles(new CpuFilter()); return files.length; } catch (Exception e) { e.printStackTrace(); return 1; } } /** ******************** W I F I *********************** */ /** 设备Wifi名称 */ public String getWifiName(){ return wifiManager.getConnectionInfo().getSSID(); // WifiInfo info = ((WifiManager) context.getSystemService(Context.WIFI_SERVICE)) // .getConnectionInfo(); // // return info.getSSID() + ""; } /** 设备Wifi的IP */ public String getWifiIP(){ int ip=wifiManager.getConnectionInfo().getIpAddress(); return longToIP(ip); } /** 设备Wifi的速度 */ public String getWifiSpeed(){ return wifiManager.getConnectionInfo().getLinkSpeed()+""; } /** 设备Wifi的MAC */ public String getWifiMAC(){ return wifiManager.getConnectionInfo().getMacAddress(); } private String longToIP(long longIp) { StringBuffer sb = new StringBuffer(""); // 将高24位置0 sb.append(String.valueOf((longIp & 0x000000FF))); sb.append("."); // 将高1位置0,然后右移8位 sb.append(String.valueOf((longIp & 0x0000FFFF) >>> 8)); sb.append("."); // 将高8位置0,然后右移16位 sb.append(String.valueOf((longIp & 0x00FFFFFF) >>> 16)); sb.append("."); // 直接右移24位 sb.append(String.valueOf((longIp >>> 24))); return sb.toString(); } /** 蓝牙状态*/ public String getBluetooth(){ String state=""; BluetoothAdapter ba = BluetoothAdapter.getDefaultAdapter(); if (ba.isEnabled()) { state = "开"; } else { state = "关"; } return state; } /** 网络连接类型 OFFLINE WIFI MOBILE? permission.ACCESS_NETWORK_STATE*/ public String getNetType(){ NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo(); if(networkInfo==null || !networkInfo.isConnected()){ return "OFFLINE"; }else{ return networkInfo.getTypeName(); } } /** ******************** P H O N E*********************** */ /** 本机号码 Permission: READ_PHONE_STATE*/ public String getPhoneNum(){ return telephonyManager.getLine1Number(); } /** 运营商名字*/ public String getSimName(){ return telephonyManager.getSimOperatorName(); } /** 设备串号 permission.READ_PHONE_STATE */ public String getIMEI(){ String id=telephonyManager.getDeviceId(); return id==null?"":id; } /** 设备系统版本号 (4.1.2?) */ public String getSDKversion(){ return Build.VERSION.RELEASE; } /** 设备系统SDK版本号 (16?) */ public String getSDKversionNo(){ return Build.VERSION.SDK_INT+""; } /** 设备CPU类型名称 (品牌 ) */ public String getCPUBrand(){ return Build.CPU_ABI; } /** 设备品牌 */ public String getPhoneBrand(){ return Build.BRAND; } /** 设备制造商 */ public String getPhoneCompany(){ return Build.MANUFACTURER; } /** 设备型号名称 */ public String getPhoneType(){ return Build.MODEL; } /** ******************** M E M O R Y*********************** */ //内置sdcard 机身内存 外置sdcard?? /** 获取手机内置sdcard 总大小 */ public long getSDCardSize(){ String state=Environment.getExternalStorageState(); if(!state.equals(Environment.MEDIA_MOUNTED)){ return 0; } File path=Environment.getExternalStorageDirectory(); StatFs statFs=new StatFs(path.getPath()); long size=statFs.getBlockSize(); long count=statFs.getBlockCount(); return size*count; } /** 获取手机内置sdcard 空闲大小 单位B */ public long getSDCardFreeSize() { String sdcardState = Environment.getExternalStorageState(); if (!sdcardState.equals(Environment.MEDIA_MOUNTED)) { return 0; } File path = Environment.getExternalStorageDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availaBlock = stat.getAvailableBlocks(); return availaBlock * blockSize; } /** 设备自身存储大小 单位B */ public long getRomSize(){ File path=Environment.getRootDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long blockCount = stat.getBlockCount(); return blockCount * blockSize; } /** 设备自身存储空闲大小 单位B */ public long getRomFreeSize(){ File path=Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availaBlock = stat.getAvailableBlocks(); return availaBlock * blockSize; } /** 手机分辨率*/ public String getResolution() { DisplayMetrics dm = new DisplayMetrics(); ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(dm); return (dm.widthPixels + " * " + dm.heightPixels); } /** 像素密度 */ public float getDensity() { DisplayMetrics metric = new DisplayMetrics(); ((Activity)context).getWindowManager().getDefaultDisplay().getMetrics(metric); return metric.density; } /** 设备外置存储SDCard全部大小 单位B , 当没有外置卡时,大小为0 */ public long getOutSdcardSize() { String path=getOutSDpath(); if(path==null){ return 0; } StatFs stat = new StatFs(path); long blockSize = stat.getBlockSize(); long blockCount = stat.getBlockCount(); return blockCount * blockSize; } /** 设备外置存储SDCard全部大小 单位B , 当没有外置卡时,大小为0 */ public long getOutSdcardFreeSize() { String path=getOutSDpath(); if(path==null){ return 0; } StatFs stat = new StatFs(path); long blockSize = stat.getBlockSize(); long availaBlock = stat.getAvailableBlocks(); return availaBlock * blockSize; } /** 获取手机外置sdcard路径, 为null表示无外置卡 */ public String getOutSDpath(){ Map<String, String> map = System.getenv(); if (map.containsKey("SECONDARY_STORAGE")) { String paths = map.get("SECONDARY_STORAGE"); String path[] = paths.split(":"); if (path == null || path.length <= 0) { return null; } return path[0]; } return null; }