安卓系统工具类、开发的时候有用的到哦。

来源:互联网 发布:退火算法实例matlab 编辑:程序博客网 时间:2024/05/22 08:15
/** * 获取硬件信息 * @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() + "";   }     /** 设备WifiIP */   public String getWifiIP(){      int ip=wifiManager.getConnectionInfo().getIpAddress();      return longToIP(ip);   }      /** 设备Wifi的速度 */   public String getWifiSpeed(){      return wifiManager.getConnectionInfo().getLinkSpeed()+"";   }      /** 设备WifiMAC */   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;   }
原创粉丝点击