Android系统信息(内存、cpu、sd卡、电量、版本)获取

/*APPInfo.java*/
public class AppInfo {    private String appLable;    private Drawable appicon;    private String pkgName;    private String versionCode;    private String versionName;    private int service;    private String num;    private boolean isCheck;    private int pid;        public AppInfo(String appLable, Drawable appicon, String pkgName,            String versionCode, String versionName, int service, String num,            boolean isCheck, int pid) {        super();        this.appLable = appLable;        this.appicon = appicon;        this.pkgName = pkgName;        this.versionCode = versionCode;        this.versionName = versionName;        this.service = service;        this.num = num;        this.isCheck = isCheck;        this.pid = pid;    }        public AppInfo() {        super();    }        public String getAppLable() {        return appLable;    }    public void setAppLable(String appLable) {        this.appLable = appLable;    }        public Drawable getAppicon() {        return appicon;    }    public void setAppicon(Drawable appicon) {        this.appicon = appicon;    }        public String getPkgName() {        return pkgName;    }    public void setPkgName(String pkgName) {        this.pkgName = pkgName;    }        public String getVersionCode() {        return versionCode;    }    public void setVersionCode(String versionCode) {        this.versionCode = versionCode;    }        public String getVersionName() {        return versionName;    }    public void setVersionName(String versionName) {        this.versionName = versionName;    }        public int getService() {        return service;    }    public void setService(int service) {        this.service = service;    }        public String getNum() {        return num;    }    public void setNum(String num) {        this.num = num;    }        public boolean isCheck() {        return isCheck;    }    public void setCheck(boolean isCheck) {        this.isCheck = isCheck;    }        public int getPid() {        return pid;    }    public void setPid(int pid) {        this.pid = pid;    }}
/* AppInfoManager.java */
public class AppInfoManager {    ArrayList<AppInfo> allapp;    List<RunningAppProcessInfo> runningAppProcessInfos;    private Context context;    private ActivityManager mActivityManager;    public AppInfoManager(Context context) {        this.context=context;        mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);    }        //全部应用    public ArrayList<AppInfo> getAllApp(){        ArrayList<AppInfo> allapp = new ArrayList<AppInfo>();        PackageManager packageManager=context.getPackageManager();        List<PackageInfo> packages=packageManager.getInstalledPackages(0);        for(int i=0; i<packages.size(); i++){            PackageInfo packageInfo=packages.get(i);            AppInfo appInfo=new AppInfo();            appInfo.setAppLable((String) packageInfo.applicationInfo.loadLabel(packageManager));            appInfo.setPkgName(packageInfo.packageName);            appInfo.setVersionName(packageInfo.versionName);            appInfo.setVersionCode(packageInfo.versionCode+"");            appInfo.setAppicon(packageInfo.applicationInfo.loadIcon(packageManager));            allapp.add(appInfo);        }        return allapp;    }        //获取系统手机应用信息    public List<AppInfo> getSystemApp(){        ArrayList<AppInfo> appList = new ArrayList<AppInfo>();        PackageManager packageManager=context.getPackageManager();        List<PackageInfo> packages=packageManager.getInstalledPackages(0);        for(int i=0; i<packages.size(); i++){            PackageInfo packageInfo=packages.get(i);            AppInfo appInfo=new AppInfo();            appInfo.setAppLable((String) packageInfo.applicationInfo.loadLabel(packageManager));            appInfo.setPkgName(packageInfo.packageName);//            appInfo.setService(packageInfo.services.length);            appInfo.setVersionName(packageInfo.versionName);            appInfo.setVersionCode(packageInfo.versionCode+"");            appInfo.setAppicon(packageInfo.applicationInfo.loadIcon(packageManager));                        if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0){                appList.add(appInfo);            }        }        return appList;    }        //获得第三方应用    public ArrayList<AppInfo> getThirsApp(){        ArrayList<AppInfo> appList = new ArrayList<AppInfo>();        PackageManager packageManager=context.getPackageManager();        List<PackageInfo> packages=packageManager.getInstalledPackages(0);        for(int i=0;i<packages.size();i++){            PackageInfo packageInfo=packages.get(i);            AppInfo appInfo=new AppInfo();            appInfo.setAppLable((String) packageInfo.applicationInfo.loadLabel(packageManager));            appInfo.setPkgName(packageInfo.packageName);            appInfo.setVersionName(packageInfo.versionName);            appInfo.setVersionCode(packageInfo.versionCode+"");            appInfo.setAppicon(packageInfo.applicationInfo.loadIcon(packageManager));            if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0){                appList.add(appInfo);            }        }        return appList;    }            //获取手机占用内存    public String getAvailMemory() {// 获取android当前可用内存大小          ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);          MemoryInfo mi = new MemoryInfo();          am.getMemoryInfo(mi);          //mi.availMem; 当前系统的可用内存          return Formatter.formatFileSize(context, mi.availMem);// 将获取的内存大小规格化      }      //获取手机全部内存    public String getTotalMemory() {          String str1 = "/proc/meminfo";// 系统内存信息文件          String str2;          String[] arrayOfString;          long initial_memory = 0;            try {              FileReader localFileReader = new FileReader(str1);              BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);              str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小                arrayOfString = str2.split("\\s+");              for (String num : arrayOfString) {                  Log.i(str2, num + "/t");              }                        initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte              localBufferedReader.close();        } catch (IOException e) {          }          return Formatter.formatFileSize(context, initial_memory);// Byte转换为KB或者MB,内存大小规格化      }          //获取手机正在运行的软件信息    public ArrayList<AppInfo> getRunningAppInfo(){        ArrayList<AppInfo> thirdAppNameList = new ArrayList<AppInfo>();          ArrayList<AppInfo> nowRunningApp = new ArrayList<AppInfo>();          thirdAppNameList = getThirsApp();  //用户程序        runningAppProcessInfos = mActivityManager.getRunningAppProcesses();//获取正在运行的程序        for (int i = 0; i < thirdAppNameList.size(); i++) {            for (int j = 0; j < runningAppProcessInfos.size(); j++) {                if(thirdAppNameList.get(i).getPkgName().equals(runningAppProcessInfos.get(j).processName)){                                        int pid= runningAppProcessInfos.get(j).pid;  //包名匹配                    //内存信息                    Debug.MemoryInfo[] memoryInfos = mActivityManager.getProcessMemoryInfo(new int[]{pid});                    String p = Formatter.formatFileSize(context, memoryInfos[0].dalvikPrivateDirty*1024);                                        // 获得系统总内存,单位是KB,乘以1024转换为Byte,然后规格化                    AppInfo app = new AppInfo();                    app.setAppLable(thirdAppNameList.get(i).getAppLable());                    app.setAppicon(thirdAppNameList.get(i).getAppicon());                    app.setService(thirdAppNameList.get(i).getService());                    app.setPid(pid);                    app.setPkgName(thirdAppNameList.get(i).getPkgName());                    app.setNum(p);                    nowRunningApp.add(app);                }            }        }        return nowRunningApp;    }  }

/* PhoneManager.java */
public class PhoneManager {    private Context context;    public PhoneManager(Context context ){        this.context=context;    }        //是否root    public boolean isRoot(){        boolean bool = false;        try{            if ((!new File("/system/bin/su").exists()) && (!new File("/system/xbin/su").exists())){                bool = false;            } else {                bool = true;            }        } catch (Exception e) {        }         return bool;    }        //cpu参数    public static String getMaxCpuFreq() {        String result = "";        ProcessBuilder cmd;        try {            String[] args = { "/system/bin/cat",            "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_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);            }            if(!"".equals(result.trim())){                result=""+(Integer.parseInt(result.trim())/1000);            }            in.close();        } catch (IOException ex) {            ex.printStackTrace();            result = "N/A";        }        return result ;    }    // 获取CPU最小频率(单位KHZ)    public static String getMinCpuFreq() {        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();            if(!"".equals(result.trim())){                result=""+(Integer.parseInt(result.trim())/1000);            }        } catch (IOException ex) {            ex.printStackTrace();            result = "N/A";        }        return result.trim();    }    // 实时获取CPU当前频率(单位KHZ)    public static String getCurCpuFreq() {        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();            if(!"N/A".equals(result.trim())){                result=""+(Integer.parseInt(result.trim())/1000);            }        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return result;    }    // 获取CPU名字    public static 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++) {            }            return array[1];        } catch (FileNotFoundException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }        // 获取CPU核数    public static int getNumCores() {         //Private Class to display only CPU devices in the directory listing         class CpuFilter implements FileFilter {         @Override         public boolean accept(File pathname) {             //Check if filename is "cpu", followed by a single digit number             if(Pattern.matches("cpu[0-9]", pathname.getName())) {                 return true;             }                 return false;             }         }         try {         //Get directory containing CPU info         File dir = new File("/sys/devices/system/cpu/");         //Filter to only list the devices we care about         File[] files = dir.listFiles(new CpuFilter());             //Return the number of cores (virtual CPU devices)             return files.length;         } catch(Exception e) {             //Default to return 1 core             return 1;         }     }        //SD卡大小    public String getSDTotalSize() {          File path = Environment.getExternalStorageDirectory();          StatFs stat = new StatFs(path.getPath());          long blockSize = stat.getBlockSize();          long totalBlocks = stat.getBlockCount();          return Formatter.formatFileSize(context, blockSize * totalBlocks);      }          // 判断设备是否支持多点触控      public static boolean isSupportMultiTouch(Context context) {          PackageManager pm = context.getPackageManager();          boolean isSupportMultiTouch = pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH);          return isSupportMultiTouch;      }         //手机分辨率    public String getWindow(){        WindowManager wm=(WindowManager) context.getSystemService(Context.WINDOW_SERVICE);        int height=wm.getDefaultDisplay().getHeight();        int width = wm.getDefaultDisplay().getWidth();        return height+"*"+width;    }        //手机像素密度    public static String  getDen(){        DisplayMetrics metric = new DisplayMetrics();        float density = metric.density;        return density+"";    }        // .获取手机MAC地址 , 只有手机开启wifi才能获取到mac地址     public String getMacAddress(){         String result = "";         WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);         WifiInfo wifiInfo = wifiManager.getConnectionInfo();         result = wifiInfo.getMacAddress();         Log.i("text", "手机macAdd:" + result);         return result;      }      //得到网络类型    public String getNet(){        String net=null;        TelephonyManager mTm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);         switch (mTm.getNetworkType()) {        case TelephonyManager.NETWORK_TYPE_UNKNOWN:            net="未知网络";            break;        case TelephonyManager.NETWORK_TYPE_GPRS:            net="GPRS网络";             break;        case TelephonyManager.NETWORK_TYPE_EDGE:            net="EDGE网络";             break;        case TelephonyManager. NETWORK_TYPE_UMTS :            net="UMTS网络";            break;        case TelephonyManager.NETWORK_TYPE_HSUPA :            net="HSUPA网络";            break;        case TelephonyManager.NETWORK_TYPE_HSPA:            net="HSPA网络";            break;        case TelephonyManager.NETWORK_TYPE_CDMA :            net="CDMA网络";            break;        case TelephonyManager. NETWORK_TYPE_EVDO_0:            net="EVDO0网络";            break;        case TelephonyManager.NETWORK_TYPE_HSDPA:            net="HSDPA网络";            break;        }        return net;    }}

参考链接:http://gqdy365.iteye.com/blog/1066113

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. 2010.12.26——— android 获得手机号码 和 IMEI号 等
  3. android bootloader (lk)
  4. 内存管理Memory Management in Android
  5. Android(安卓)网络状态实时监测
  6. android获取手机信息以及服务商信息
  7. Android(安卓)获得本机ip地址和MAC地址
  8. Android网络连接判断与处理
  9. Android(安卓)获取包名,版本信息

随机推荐

  1. Android EditText和TextView图文混排
  2. android adb 抓包
  3. 帮助你快速使用 Android 的 LiveData 与
  4. 在Android studio中保存keystore
  5. [置顶] Android中资源文件的详解和androi
  6. android 学习文章收藏(链接)
  7. Android(安卓)fragment中弹出的dialogfra
  8. 进阶准备
  9. android 一
  10. android 2.2 apidemos 赏析笔记