Android开发进阶系列(三) 系统参数的获取和Broadcast
来源:互联网 发布:dmsp夜间灯光数据 编辑:程序博客网 时间:2024/05/14 03:51
系统参数的获取
获取系统参数比较简单,毕竟Android系统的底层从Linux来的,一看就明白了。
public class SystemInfo { private final static String FILE_CPU = "/proc/cpuinfo"; private final static String FILE_VERSION = "/proc/version"; private final static String FILE_MEMORY = "/proc/meminfo"; public String mManufacture; public String mModel; public String mCPU; public String mFirmwareVersion; public String mBuildID; public String mBattery; public String mMemTotal; //public String mMemFree; public String mInternalStorageTotal; public String mInternalStorageFree; public String mSDTotal; public String mSDFree; public void GetSystemInfo() { mManufacture = Build.MANUFACTURER; mFirmwareVersion = Build.VERSION.RELEASE; mModel = Build.MODEL; mBuildID = Build.DISPLAY; mCPU = GetCPU(); mMemTotal = GetMem(); mInternalStorageTotal = String.valueOf((float)getTotalInternalStorageSize()/1024/1024) + "M"; mInternalStorageFree = String.valueOf((float)getAvailableInternalStorageSize()/1024/1024) + "M"; mSDTotal = String.valueOf((float)getTotalSDCardSize()/1024/1024/1024) + "G"; mSDFree = String.valueOf((float)getAvailableSDCardSize()/1024/1024/1024) + "G"; } public static String GetCPU() { String strTmp=""; String cpuInfo=""; String[] arrayOfString; try { FileReader fr = new FileReader(FILE_CPU); BufferedReader localBufferedReader = new BufferedReader(fr, 8192); strTmp = localBufferedReader.readLine(); arrayOfString = strTmp.split("\\s+"); for (int i = 2; i < arrayOfString.length; i++) { cpuInfo = cpuInfo + arrayOfString[i] + " "; } localBufferedReader.close(); } catch (IOException e) { } return cpuInfo; } public static String GetMem() { String strTmp=""; String meminfo=""; String[] arrayOfString; try { FileReader fileReader = new FileReader(FILE_MEMORY); BufferedReader localBufferedReader = new BufferedReader(fileReader, 8192); while ((strTmp = localBufferedReader.readLine()) != null) { arrayOfString = strTmp.split("\\s+"); if (arrayOfString.length == 3) { if (arrayOfString[0].equals("MemTotal:")) meminfo = String.valueOf((float)Integer.parseInt(arrayOfString[1])/1024) + "M"; //else if (arrayOfString[0].equals("MemFree:")) //meminfo[1] = arrayOfString[1]; } } localBufferedReader.close(); } catch (IOException e) { } return meminfo; } // 内部存储卡总量 public long getTotalInternalStorageSize() { long romSize = 0; File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long totalBlocks = stat.getBlockCount(); romSize = totalBlocks * blockSize; // Log.d("ysm", "block大小:" + blockSize + ",block数目:" + totalBlocks + // ",总大小:" + blockSize * totalBlocks / 1024 + "KB"); return romSize; } // 内部存储卡剩余 public long getAvailableInternalStorageSize() { long romSize = 0; File path = Environment.getDataDirectory(); StatFs stat = new StatFs(path.getPath()); long blockSize = stat.getBlockSize(); long availableBlocks = stat.getAvailableBlocks(); romSize = blockSize * availableBlocks; // Log.d("ysm", "block大小:" + blockSize + ",block数目:" + availableBlocks + // ",总大小:" + blockSize * availableBlocks / 1024 + "KB"); return romSize; } // 获取SD卡总容量大小 public long getTotalSDCardSize() { long size = 0; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { File sdcardDir = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(sdcardDir.getPath()); long bSize = sf.getBlockSize(); long bCount = sf.getBlockCount(); // long availBlocks = sf.getAvailableBlocks(); size = bSize * bCount;// 总大小 // sdCardInfo[1] = bSize * availBlocks;//可用大小 } return size; } // 获取SD卡可用空间大小 public long getAvailableSDCardSize() { long size = 0; String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { File sdcardDir = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(sdcardDir.getPath()); long bSize = sf.getBlockSize(); // long bCount = sf.getBlockCount(); long availBlocks = sf.getAvailableBlocks(); // sdCardInfo[0] = bSize * bCount;//总大小 size = bSize * availBlocks;// 可用大小 } return size; }}
WiFi状态的获取 - Broadcast
WiFi连接的状态和信号强度是频繁变化的,这就要用到接收广播消息。
首先注册监听哪些广播:
// 广播消息监听:Wifi变化 registerReceiver(mStatusReceiver, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION)); registerReceiver(mStatusReceiver, new IntentFilter(WifiManager.NETWORK_STATE_CHANGED_ACTION)); registerReceiver(mStatusReceiver, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
接收广播:
// 接收广播消息 private BroadcastReceiver mStatusReceiver =new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { final String action = intent.getAction(); if(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION) || action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION) || action.equals(WifiManager.RSSI_CHANGED_ACTION)) { wifiRSSI = wm.getConnectionInfo().getRssi();// Strength // 其它处理过程 } } };
- * Android开发进阶系列(一) 序言 *
- * Android开发进阶系列(二) Tab页界面布局 *
- * Android开发进阶系列(三) 系统参数的获取和Broadcast *
- * Android开发进阶系列(四) 左移拉出Menu菜单界面布局 *
- * Android开发进阶系列(五) 连接服务器更新APK或下载资源文件 *
- * Android开发进阶系列(六) ListView的基本用法 *
- * Android开发进阶系列(七) 使用数据库 *
- * Android开发进阶系列(八) 界面美化之自定义弹出框 *
- * Android开发进阶系列(九) AChartEngine专题 *
0 0
- Android开发进阶系列(三) 系统参数的获取和Broadcast
- Android 系统开发系列三
- Android基础进阶之Broadcast(广播接受者)的学习和研究
- Android开发进阶系列(六) ListView的基本用法
- Android进阶:获取屏幕参数
- Android开发进阶系列(一) 序言
- Android系统开发编译环境配置 (感觉好经典的系列)(其三)
- Android开发系列(三)
- (Access Report开发系列三)报表中的系统参数列表及使用方法
- 小型直播系统系列-乐聊TV的开发(三)
- android的broadcast和onreceiver
- Android 系统默认参数的修改之系列(一)
- Android手机开发:Intent和Broadcast
- Android开发笔记(四十二)Broadcast的生命周期
- Linq To Sql进阶系列(三)CUD和Log
- Android 获取开机broadcast
- Spring MVC系列(三)之获取参数
- android开发广播的使用Broadcast Receiver
- Stack的三种含义
- HDU 2955 Robberies
- C++设计模式[十五]迭代器模式
- Tomcat使用java+mysql连接池一定时间后不响应问题
- 开源分词软件
- Android开发进阶系列(三) 系统参数的获取和Broadcast
- JSP 常用字符串处理表达式
- 自定义控件之-ViewPagerIndicator
- 获取手机通讯录并展示
- hdoj 2682 Tree(最小生成树+打表)
- go get使用代理
- 平台数据库导入导出快捷工具说明
- static
- halcon数据类型分析