设为首页 收藏本站
查看: 3022|回复: 0

[经验分享] Android 系统CPU,RAM,ROM,SDCard,MAC等信息查询

[复制链接]

尚未签到

发表于 2016-5-18 10:11:09 | 显示全部楼层 |阅读模式
Android 系统CPU,RAM,ROM,SDCard,MAC等信息查询的方法如下:

首先在AndroidManifest.xml中引入<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- WIFI权限 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 设备信息查询类DeviceQuery.javaimport java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.os.SystemClock;
import android.widget.SimpleAdapter;
import android.util.DisplayMetrics;
import android.app.ActivityManager;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiInfo;
public class DeviceQuery extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
SimpleAdapter adapter = new SimpleAdapter(this, getData(),
R.layout.device_query, new String[] { "title", "info" },
new int[] { R.id.title, R.id.info });
setListAdapter(adapter);
//
}
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map;
// SD卡容量
if (ExistSDCard()) {
map = new HashMap<String, Object>();
map.put("title", "SDCard");
map.put("info", "总大小:" + formatSize(getTotalSDSize()) + " 可用空间:"
+ formatSize(getAvailSDSize()));
list.add(map);
}
// CPU型号与频率
String[] cpuInfo = getCpuInfo();
map = new HashMap<String, Object>();
map.put("title", "CPU");
map.put("info", "型号:" + cpuInfo[0] + " 频率:" + cpuInfo[1] + "MHz");
list.add(map);
// RAM 大小
map = new HashMap<String, Object>();
map.put("title", "RAM");
map.put("info", "总大小:" + formatSize(getTotalRAMSize()) + " 可用空间:"
+ formatSize(getAvailRAMSize()));
list.add(map);
// ROM 大小
map = new HashMap<String, Object>();
map.put("title", "ROM");
map.put("info", "总大小:" + formatSize(getTotalROMSize()) + " 可用空间:"
+ formatSize(getAvailROMSize()));
list.add(map);
// MAC 地址
map = new HashMap<String, Object>();
map.put("title", "MAC");
map.put("info", getMacAddress());
list.add(map);
// 设备型号
map = new HashMap<String, Object>();
map.put("title", "设备型号");
map.put("info", android.os.Build.MODEL);
list.add(map);
// 系统版本
map = new HashMap<String, Object>();
map.put("title", "系统版本");
map.put("info", "Android " + android.os.Build.VERSION.RELEASE);
list.add(map);
// 开机时长
map = new HashMap<String, Object>();
map.put("title", "开机时长");
map.put("info", getElapsedTime());
list.add(map);
// 屏幕分辨率
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; // 当前分辨率 宽度
int height = dm.heightPixels; // 当前分辨率高度
map = new HashMap<String, Object>();
map.put("title", "屏幕分辨率");
map.put("info", width + "X" + height);
list.add(map);
return list;
}
// SD卡 可用空间
public long getAvailSDSize() {
// 取得SD卡文件路径
File path = Environment.getExternalStorageDirectory();
StatFs sf = new StatFs(path.getPath());
// 获取单个数据块的大小(Byte)
long blockSize = sf.getBlockSize();
// 空闲的数据块的数量
long availBlocks = sf.getAvailableBlocks();
// 返回SD卡空闲大小
return availBlocks * blockSize; // Byte
}
// SD卡总大小
public long getTotalSDSize() {
// 取得SD卡文件路径
File path = Environment.getExternalStorageDirectory();
StatFs sf = new StatFs(path.getPath());
// 获取单个数据块的大小(Byte)
long blockSize = sf.getBlockSize();
// 获取所有数据块数
long totalBlocks = sf.getBlockCount();
// 返回SD卡大小
return totalBlocks * blockSize; // Byte
}
// 获得CPU信息
public String[] getCpuInfo() {
String str1 = "/proc/cpuinfo";
String str2 = "";
String[] cpuInfo = { "", "" }; // 1-cpu型号 //2-cpu频率
String[] arrayOfString;
try {
FileReader fr = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
for (int i = 2; i < arrayOfString.length; i++) {
cpuInfo[0] = cpuInfo[0] + arrayOfString + " ";
}
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("\\s+");
cpuInfo[1] += arrayOfString[2];
localBufferedReader.close();
} catch (IOException e) {
}
// Log.i(TAG, "cpuinfo:" + cpuInfo[0] + " " + cpuInfo[1]);
return cpuInfo;
}
// RAM 总大小
public long getTotalRAMSize() {
String str1 = "/proc/meminfo";// 系统内存信息文件
String str2;
String[] arrayOfString;
long totalSize = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();// 读取meminfo第一行,系统总内存大小
arrayOfString = str2.split("\\s+");
// 获得系统总内存,单位是KB,乘以1024转换为Byte
totalSize = Integer.valueOf(arrayOfString[1]).intValue() * 1024;
localBufferedReader.close();
} catch (IOException e) {
}
return totalSize;
}
// RAM 可用空间
public long getAvailRAMSize() {
ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo();
am.getMemoryInfo(memInfo);
return memInfo.availMem;
}
// ROM总大小
public long getTotalROMSize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize; // Byte
}
// ROM可用空间
public long getAvailROMSize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
return availableBlocks * blockSize; // Byte
}
// MAC地址
public String getMacAddress() {
String macStr = "";
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo.getMacAddress() != null) {
macStr = wifiInfo.getMacAddress();// MAC地址
} else {
macStr = "null";
}
return macStr;
}
// 取得开机时长
public String getElapsedTime() {
long ut = SystemClock.elapsedRealtime() / 1000;
if (ut == 0) {
ut = 1;
}
int m = (int) ((ut / 60) % 60);
int h = (int) ((ut / 3600));
return h + " " + "小时 " + m + " " + "分钟";
}
// 判断存储卡是否存在
public boolean ExistSDCard() {
if (android.os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED)) {
return true;
} else
return false;
}
// 格式化数据
public String formatSize(long size) {
String suffix = "B";// Byte
float fSize = 0;
if (size >= 1024) {
suffix = "KB";
fSize = size / 1024;
if (fSize >= 1024) {
suffix = "MB";
fSize /= 1024;
}
if (fSize >= 1024) {
suffix = "GB";
fSize /= 1024;
}
} else {
fSize = size;
}
java.text.DecimalFormat df = new java.text.DecimalFormat("#0.00");
StringBuilder resultBuffer = new StringBuilder(df.format(fSize));
if (suffix != null)
resultBuffer.append(suffix);
return resultBuffer.toString();
}
}列表项配置文件device_query.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FFFFFF"
android:textSize="28sp"
android:layout_marginLeft="10dip"/>
<TextView
android:id="@+id/info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="18sp"
android:textColor="#C6CBD0"
android:layout_marginLeft="10dip"/>
</LinearLayout>


  环境:XP3+Eclipse+Android2.2+JDK6.0

  

  

  

  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-218586-1-1.html 上篇帖子: Mac和PC在工作中管理的对比(5) 下篇帖子: Mac配置Android开发环境变量及工具安装图
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表