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

/**
 * 获取硬件信息
 * @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;
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值