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