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

Android系统信息(内存、cpu、sd卡、电量、版本)获取的更多相关文章

  1. Android设备内存和SD卡操作工具类

    package cc.c; import java.io.File; import java.util.List; import android.os.StatFs; import java.io.F ...

  2. Android学习笔记-获取手机内存,SD卡存储空间。

    前面介绍到如何保存数据到手机内存或者SD卡,但是问题是,在保存以前,我们还需要对他们的空间(可用空间),进行判断,才可以进行后续操作,所以,本节我们就介绍如何获取手机内存以及Sd卡的空间. //这时获 ...

  3. 单元测试+内存、SD卡、SP读写+XmlPullParser

    测试: 测试的相关概念 1.根据是否知道源代码分类: 黑盒测试: a - b - c 边值测试 测试逻辑业务 白盒测试: 根据源代码写测试方法 或者 测试用例; 2.根据测试的粒度分类: 方法测试:写 ...

  4. Android之外部存储(SD卡)

    *手机的外部存储空间,这个我们可以理解成电脑的外接移动硬盘,U盘也行.所有的Android设备都有两个文件存储区域:“内部”和“外部”存储器.这两个名称来自早期的Android,当时大多数设备都提供内 ...

  5. [android] 保存文件到SD卡

    /****************2016年5月4日 更新*****************************/ 知乎:为什么很多Android应用要把文件写到/sdcard目录下而不是写到/d ...

  6. Android数据存储之SD卡

    为了更好的存取应用程序的大文件数据,应用程序需要读. 写SD卡上的文件.SD卡大大扩充手机的存储能力. 操作SD首先要加权限: <!--在SDCard中创建与删除文件权限 --> < ...

  7. Android中播放本地SD卡中歌曲须要的加入的权限

    使用MediaPlayer播放本地Mp3文件时.须要注意的訪问路径的问题以及訪问权限的问题. 1.訪问路径:/storage/emulated/0 此路径即为手机的根路径,能够通过下载ES文件浏览器软 ...

  8. android 写文件到sd卡问题小记

    android 写文件到sd卡问题小记 事情是这样子的.... 这天我开始编写项目调试工具,高大上不?-----其实就是记录实时网络请求和崩溃日志相关等的小工具(此处一个会心的微笑). 然后我是这样写 ...

  9. Android 数据库SQLite 写入SD卡

    如果手机没有root,数据库文件是无法查看到的,不方便调试. 最好的办法是把数据库写进SD卡. 修改的地方有两处: 1.在你的helper类中把数据库文件名称 DATABASE_NAME 由原来的一个 ...

  10. Android -- 创建数据库到SD卡

    SQLite 系统自带的SQLite是通过SQLiteOpenHelper实现的,而SQLiteOpenHelper是将数据库存储到/data/data/包名/databasas,这样做的话在没有ro ...

随机推荐

  1. Java: md5 加密中文 & 注意编码

    今天使用java的md5加密一个字符串(含有部分中文),遇到问题,百思不得其解. 后面网上搜索了一下,才知道是[编码]的问题. 以前在asp中用md5加密的时候,了解 gb2312和utf-8编码下, ...

  2. xor定理证明

    xor 证明: 0 xor 0=0 0 xor 1=1 1 xor 0=1 1 xor 1=0 0 xor 其它数,数值不会改变1 xor 其它数,数值会反转 所以x个数0和y个数1进行xor运算(0 ...

  3. servlet3.0获取参数与文件上传代码示例

    转: servlet3.0获取参数与文件上传代码示例 2018年08月26日 20:25:35 苏凯勇往直前 阅读数:98   package com.igeek.servlet;   import ...

  4. 二分图判定 POJ-2492

    这是由AC代码改的模板,不能直接交啊 #include<iostream> #include<vector> #include<cstring> using nam ...

  5. kubectl命令自动补全

    kubectl这个命令行工具非常重要,与之相关的命令也很多,我们也记不住那么多的命令,而且也会经常写错,所以命令自动补全是非常有必要的,kubectl命令行工具本身就支持complication,只需 ...

  6. CodeForces834D DP + 线段树

    http://codeforces.com/problemset/problem/834/D 将一个长度为n的序列分为k段 使得总价值最大一段区间的价值表示为区间内不同数字的个数 n<=3500 ...

  7. JavaSE学习总结(十六)—— 泛型与泛型应用

    一.泛型概要 泛型(Generic)的本质是类型参数化,通俗的说就是用一个占位符来表示类型,这个类型可以是String,Integer等不确定的类型,表明可接受的类型. 泛型是Java中一个非常重要的 ...

  8. 在IIS上启用Gzip压缩(HTTP压缩)

    一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 二.前言. 本文的知识点是从互联网收集整理, 主要来源于中文wiki.  使用Y ...

  9. jcaptcha和kaptcha验证码使用入门【转】

    jcaptcha和kaptcha验证码使用入门 一.jcaptcha验证码使用 jcaptcha使用默认样式生成的验证码比较难以识别,所以需要自定义验证码的样式,包括,背景色.背景大小.字体.字体大小 ...

  10. RocketMQ之消息幂等

    幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同. 首先我们了解一下什么是 ...