android系统信息内存cpusd卡电量版本获取.docx
- 文档编号:9447652
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:10
- 大小:19.23KB
android系统信息内存cpusd卡电量版本获取.docx
《android系统信息内存cpusd卡电量版本获取.docx》由会员分享,可在线阅读,更多相关《android系统信息内存cpusd卡电量版本获取.docx(10页珍藏版)》请在冰点文库上搜索。
android系统信息内存cpusd卡电量版本获取
android系统信息(内存、cpu、sd卡、电量、版本)获取
一、内存(ram):
android的总内存大小信息存放在系统的/proc/meminfo文件里面,可以通过读取这个文件来获取这些信息:
Java代码
1publicvoidgetTotalMemory(){
2Stringstr1="/proc/meminfo";
3Stringstr2="";
4try{
5FileReaderfr=newFileReader(str1);
6BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
7while((str2=localBufferedReader.readLine())!
=null){
8Log.i(TAG,"---"+str2);
9}
10}catch(IOExceptione){
11}
12}
运行信息如下:
Java代码
1305-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---MemTotal:
204876kB
1405-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---MemFree:
4596kB
1505-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---Buffers:
16020kB
1605-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---Cached:
82508kB
1705-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---SwapCached:
64kB
1805-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---Active:
137104kB
1905-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---Inactive:
41056kB
2005-3008:
05:
14.807:
INFO/-SystemInfo-(1519):
---SwapTotal:
65528kB
2105-3008:
05:
14.817:
INFO/-SystemInfo-(1519):
---SwapFree:
65368kB
2205-3008:
05:
14.817:
INFO/-SystemInfo-(1519):
---Dirty:
88kB
2305-3008:
05:
14.817:
INFO/-SystemInfo-(1519):
---Writeback:
0kB
2405-3008:
05:
14.817:
INFO/-SystemInfo-(1519):
---AnonPages:
79672kB
2505-3008:
05:
14.817:
INFO/-SystemInfo-(1519):
---Mapped:
38296kB
2605-3008:
05:
14.817:
INFO/-SystemInfo-(1519):
---Slab:
5768kB
2705-3008:
05:
14.817:
INFO/-SystemInfo-(1519):
---SReclaimable:
1856kB
2805-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---SUnreclaim:
3912kB
2905-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---PageTables:
8184kB
3005-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---NFS_Unstable:
0kB
3105-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---Bounce:
0kB
3205-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---CommitLimit:
167964kB
3305-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---Committed_AS:
11771920kB
3405-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---VmallocTotal:
761856kB
3505-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---VmallocUsed:
83656kB
3605-3008:
05:
14.827:
INFO/-SystemInfo-(1519):
---VmallocChunk:
674820kB
第一行是总内存大小(即用户可以使用的ram的大小)!
其他各项的介绍大家可以看这儿:
获取当前剩余内存(ram)大小的方法:
Java代码
37publiclonggetAvailMemory(){
38ActivityManageram=(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);
39ActivityManager.MemoryInfomi=newActivityManager.MemoryInfo();
40am.getMemoryInfo(mi);
41returnmi.availMem;
42}
二、Rom大小
Java代码
43publiclong[]getRomMemroy(){
44long[]romInfo=newlong[2];
45//Totalrommemory
46romInfo[0]=getTotalInternalMemorySize();
47
48//Availablerommemory
49Filepath=Environment.getDataDirectory();
50StatFsstat=newStatFs(path.getPath());
51longblockSize=stat.getBlockSize();
52longavailableBlocks=stat.getAvailableBlocks();
53romInfo[1]=blockSize*availableBlocks;
54getVersion();
55returnromInfo;
56}
57
58publiclonggetTotalInternalMemorySize(){
59Filepath=Environment.getDataDirectory();
60StatFsstat=newStatFs(path.getPath());
61longblockSize=stat.getBlockSize();
62longtotalBlocks=stat.getBlockCount();
63returntotalBlocks*blockSize;
64}
注意类型,不然相乘之后会有溢出。
可用内部存储的大小不能通过getRootDirectory();
取得,之前网上传的很多都是用getRootDirectory()取得的,我测试之后发现取得的数值不对。
要根据getDataDirectory();
取得。
三、sdCard大小
Java代码
65publiclong[]getSDCardMemory(){
66long[]sdCardInfo=newlong[2];
67Stringstate=Environment.getExternalStorageState();
68if(Environment.MEDIA_MOUNTED.equals(state)){
69FilesdcardDir=Environment.getExternalStorageDirectory();
70StatFssf=newStatFs(sdcardDir.getPath());
71longbSize=sf.getBlockSize();
72longbCount=sf.getBlockCount();
73longavailBlocks=sf.getAvailableBlocks();
74
75sdCardInfo[0]=bSize*bCount;//总大小
76sdCardInfo[1]=bSize*availBlocks;//可用大小
77}
78returnsdCardInfo;
79}
注意类型,不然相乘之后会有溢出。
四、电池电量
Java代码
80privateBroadcastReceiverbatteryReceiver=newBroadcastReceiver(){
81@Override
82publicvoidonReceive(Contextcontext,Intentintent){
83intlevel=intent.getIntExtra("level",0);
84//level加%就是当前电量了
85}
86};
然后在activity的oncreate()方法中注册
Java代码
87registerReceiver(batteryReceiver,newIntentFilter(Intent.ACTION_BATTERY_CHANGED));
五、CPU信息
Java代码
88publicString[]getCpuInfo(){
89Stringstr1="/proc/cpuinfo";
90Stringstr2="";
91String[]cpuInfo={"",""};
92String[]arrayOfString;
93try{
94FileReaderfr=newFileReader(str1);
95BufferedReaderlocalBufferedReader=newBufferedReader(fr,8192);
96str2=localBufferedReader.readLine();
97arrayOfString=str2.split("\\s+");
98for(inti=2;i 99cpuInfo[0]=cpuInfo[0]+arrayOfString[i]+""; 100} 101str2=localBufferedReader.readLine(); 102arrayOfString=str2.split("\\s+"); 103cpuInfo[1]+=arrayOfString[2]; 104localBufferedReader.close(); 105}catch(IOExceptione){ 106} 107returncpuInfo; 108} /proc/cpuinfo文件中第一行是CPU的型号,第二行是CPU的频率,可以通过读文件,读取这些数据! 六、系统的版本信息: Java代码 109publicString[]getVersion(){ 110String[]version={"null","null","null","null"}; 111Stringstr1="/proc/version"; 112Stringstr2; 113String[]arrayOfString; 114try{ 115FileReaderlocalFileReader=newFileReader(str1); 116BufferedReaderlocalBufferedReader=newBufferedReader( 117localFileReader,8192); 118str2=localBufferedReader.readLine(); 119arrayOfString=str2.split("\\s+"); 120version[0]=arrayOfString[2];//KernelVersion 121localBufferedReader.close(); 122}catch(IOExceptione){ 123} 124version[1]=Build.VERSION.RELEASE;//firmwareversion 125version[2]=Build.MODEL;//model 126version[3]=Build.DISPLAY;//systemversion 127returnversion; 128} 版本信息里面还包括型号等信息。 七、MAC地址和开机时间: Java代码 129publicString[]getOtherInfo(){ 130String[]other={"null","null"}; 131WifiManagerwifiManager=(WifiManager)mContext.getSystemService(Context.WIFI_SERVICE); 132WifiInfowifiInfo=wifiManager.getConnectionInfo(); 133if(wifiInfo.getMacAddress()! =null){ 134other[0]=wifiInfo.getMacAddress(); 135}else{ 136other[0]="Fail"; 137} 138other[1]=getTimes(); 139returnother; 140} 141privateStringgetTimes(){ 142longut=SystemClock.elapsedRealtime()/1000; 143if(ut==0){ 144ut=1; 145} 146intm=(int)((ut/60)%60); 147inth=(int)((ut/3600)); 148returnh+""+mContext.getString(R.string.info_times_hour)+m+"" 149+mContext.getString(R.string.info_times_minute); 150} 最后贴一个格式化数据的方法: Java代码 151publicStringformatSize(longsize){ 152Stringsuffix=null; 153floatfSize=0; 154 155if(size>=1024){ 156suffix="KB"; 157fSize=size/1024; 158if(fSize>=1024){ 159suffix="MB"; 160fSize/=1024; 161} 162if(fSize>=1024){ 163suffix="GB"; 164fSize/=1024; 165} 166}else{ 167fSize=size; 168} 169java.text.DecimalFormatdf=newjava.text.DecimalFormat("#0.00"); 170StringBuilderresultBuffer=newStringBuilder(df.format(fSize)); 171if(suffix! =null) 172resultBuffer.append(suffix); 173returnresultBuffer.toString(); 174} 保留两位小数。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 系统 信息 内存 cpusd 电量 版本 获取