⑴ android获取系统cpu信息,内存,版本,电量等信息
1、CPU频率,CPU信息:/proc/cpuinfo和/proc/stat
通过读取文件/proc/cpuinfo系统CPU的类型等多种信息。
读取/proc/stat 所有CPU活动的信息来计算CPU使用率
下面我们就来讲讲如何通过代码来获取CPU频率:
复制代码 代码如下:
package com.orange.cpu;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
public class CpuManager {
// 获取CPU最大频率(单位KHZ)
// "/system/bin/cat" 命令行
// "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" 存储最大频率的文件的.路径
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);
}
in.close();
} catch (IOException ex) {
ex.printStackTrace();
result = "N/A";
}
return result.trim();
}
// 获取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();
} 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();
} 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;
}
}
2、内存:/proc/meminfo
复制代码 代码如下:
public void getTotalMemory() {
String str1 = "/proc/meminfo";
String str2="";
try {
FileReader fr = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(fr, 8192);
while ((str2 = localBufferedReader.readLine()) != null) {
Log.i(TAG, "---" + str2);
}
} catch (IOException e) {
}
}
3、Rom大小
复制代码 代码如下:
public long[] getRomMemroy() {
long[] romInfo = new long[2];
//Total rom memory
romInfo[0] = getTotalInternalMemorySize();
//Available rom memory
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long availableBlocks = stat.getAvailableBlocks();
romInfo[1] = blockSize * availableBlocks;
getVersion();
return romInfo;
}
public long getTotalInternalMemorySize() {
File path = Environment.getDataDirectory();
StatFs stat = new StatFs(path.getPath());
long blockSize = stat.getBlockSize();
long totalBlocks = stat.getBlockCount();
return totalBlocks * blockSize;
}
4、sdCard大小
复制代码 代码如下:
public long[] getSDCardMemory() {
long[] sdCardInfo=new long[2];
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;//总大小
sdCardInfo[1] = bSize * availBlocks;//可用大小
}
return sdCardInfo;
}
5、电池电量
复制代码 代码如下:
private BroadcastReceiver batteryReceiver=new BroadcastReceiver(){
@Override
public void onReceive(Context context, Intent intent) {
int level = intent.getIntExtra("level", 0);
// level加%就是当前电量了
}
};
registerReceiver(batteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
6、系统的版本信息
复制代码 代码如下:
public String[] getVersion(){
String[] version={"null","null","null","null"};
String str1 = "/proc/version";
String str2;
String[] arrayOfString;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
str2 = localBufferedReader.readLine();
arrayOfString = str2.split("s+");
version[0]=arrayOfString[2];//KernelVersion
localBufferedReader.close();
} catch (IOException e) {
}
version[1] = Build.VERSION.RELEASE;// firmware version
version[2]=Build.MODEL;//model
version[3]=Build.DISPLAY;//system version
return version;
}
7、mac地址和开机时间
复制代码 代码如下:
public String[] getOtherInfo(){
String[] other={"null","null"};
WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if(wifiInfo.getMacAddress()!=null){
other[0]=wifiInfo.getMacAddress();
} else {
other[0] = "Fail";
}
other[1] = getTimes();
return other;
}
private String getTimes() {
long ut = SystemClock.elapsedRealtime() / 1000;
if (ut == 0) {
ut = 1;
}
int m = (int) ((ut / 60) % 60);
int h = (int) ((ut / 3600));
return h + " " + mContext.getString(R.string.info_times_hour) + m + " "
+ mContext.getString(R.string.info_times_minute);
}
⑵ 安卓手机怎样查看本机的ROM容量
设置-存储.没有储存的话就
设置-应用程序
内部储存的是内存卡的ROM
.全部的那个是手机的ROM.正在运行的是手机的RAM.我蚂悔是按我闷槐正手机的来看的啊
,大概都是一样的4.0的应该都有存储的明祥设置的
⑶ 如何获取 Android 设备的CPU核数,时钟频率以及内存大小
Device Year Class 的主要功能是根据 CPU核数、时钟频率 以及 内存大小 对设备进行分级。代码很简单,只包含两个类: DeviceInfo-> 获取设备参数, YearClass-> 根据参数进行分级。 下表是 Facebook 公司提供的分级标准,其中Year栏表示分级结果。 Year Cores Clock RAM 2008 1 528MHz 192MB 2009 n/a 600MHz 290MB 2010 n/a 1.0GHz 512MB 2011 2 1.2GHz 1GB 2012 4 1.5GHz 1.5GB 2013 n/a 2.0GHz 2GB 2014 n/a >2GHz >2GB 关于输出年份的计算方法可以参考源码,本文只把一些比较常用的功能抽取出来做一个简要介绍。 获取 CPU 核数 我们都知道,linux 中的设备都是以文件的形式存在,CPU 也不例外,因此 CPU 的文件个数就等价与核数。 Android 的 CPU 设备文件位于/sys/devices/system/cpu/目录,文件名的的格式为cpu\d+。 ? 1 2 3 4 5 6 7 8 9 10 root@generic_x86_64:/sys/devices/system/cpu # ls <b>cpu0</b> cpufreq cpuidle kernel_max modalias offline online possible power present uevent 统计一下文件个数便可以获得 CPU 核数。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 public static int getNumberOfCPUCores() { if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.GINGERBREAD_MR1) { // Gingerbread doesn't support giving a single application access to both cores, but a // handful of devices (Atrix 4G and Droid X2 for example) were released with a al-core // chipset and Gingerbread; that can let an app in the background run without impacting // the foreground application. But for our purposes, it makes them single core. return 1; } int cores; try { cores = new File("/sys/devices/system/cpu/").listFiles(CPU_FILTER).length; } catch (SecurityException e) { cores = DEVICEINFO_UNKNOWN; } catch (NullPointerException e) { cores = DEVICEINFO_UNKNOWN; } return cores; } private static final FileFilter CPU_FILTER = new FileFilter() { @Override public boolean accept(File pathname) { String path = pathname.getName(); //regex is slow, so checking char by char. if (path.startsWith("cpu")) { for (int i = 3; i < path.length(); i++) { if (path.charAt(i) < '0' path.charAt(i) > '9') { return false; } } return true; } return false; } }; 回到顶部 获取时钟频率 获取时钟频率需要读取系统文件 -/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq或者/proc/cpuinfo。 我的 Android 模拟器中并没有cpuinfo_max_freq文件,因此只能读取/proc/cpuinfo。 /proc/cpuinfo包含了很多 cpu 数据。 ? processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 70 model name : Intel(R) Core(TM) i7-4770HQ CPU @ 2.20GHz stepping : 1 cpu MHz : 0.000 cache size : 1024 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 4 wp : yes 代码如下: public static int getCPUMaxFreqKHz() { int maxFreq = DEVICEINFO_UNKNOWN; try { for (int i = 0; i < getNumberOfCPUCores(); i++) { String filename = "/sys/devices/system/cpu/cpu" + i + "/cpufreq/cpuinfo_max_freq"; File cpuInfoMaxFreqFile = new File(filename); if (cpuInfoMaxFreqFile.exists()) { byte[] buffer = new byte[128]; FileInputStream stream = new FileInputStream(cpuInfoMaxFreqFile); try { stream.read(buffer); int endIndex = 0; //Trim the first number out of the byte buffer. while (buffer[endIndex] >= '0' && buffer[endIndex] <= '9' && endIndex < buffer.length) endIndex++; String str = new String(buffer, 0, endIndex); Integer freqBound = Integer.parseInt(str); if (freqBound > maxFreq) maxFreq = freqBound; } catch (NumberFormatException e) { //Fall through and use /proc/cpuinfo. } finally { stream.close(); } } } if (maxFreq == DEVICEINFO_UNKNOWN) { FileInputStream stream = new FileInputStream("/proc/cpuinfo"); try { int freqBound = parseFileForValue("cpu MHz", stream); freqBound *= 1000; //MHz -> kHz if (freqBound > maxFreq) maxFreq = freqBound; } finally { stream.close(); } } } catch (IOException e) { maxFreq = DEVICEINFO_UNKNOWN; //Fall through and return unknown. } return maxFreq; } 回到顶部 获取内存大小 如果 SDK 版本大于等于JELLY_BEAN,可以通过ActivityManager来获取内从大小。 ? ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo(); ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE); am.getMemoryInfo(memInfo); 如果版本低于JELLY_BEAN,则只能读取系统文件了。 ? FileInputStream stream = new FileInputStream("/proc/meminfo"); totalMem = parseFileForValue("MemTotal", stream); 完整代码如下: @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public static long getTotalMemory(Context c) { // memInfo.totalMem not supported in pre-Jelly Bean APIs. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo(); ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE); am.getMemoryInfo(memInfo); if (memInfo != null) { return memInfo.totalMem; } else { return DEVICEINFO_UNKNOWN; } } else { long totalMem = DEVICEINFO_UNKNOWN; try { FileInputStream stream = new FileInputStream("/proc/meminfo"); try { totalMem = parseFileForValue("MemTotal", stream); totalMem *= 1024; } finally { stream.close(); } } catch (IOException e) { } return totalMem; } }
⑷ android系统中查看内存信息
看下大致内存使用情况 (free+buffers+cached)
proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
df 查看 存储空间使用情况
ps -t |grep system_server (或 surfaceflinger, service manager, media server,zygote) ( 倒数第二个是不是 s) 异常情况有如’D’, ‘T’, ‘Z’ , ‘R’等
mpsys meminfo com.android.mms 打印一个app的mem信息
从以上打印可以看出,一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)是单个进程全部可访问的地址空间
RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)是单个进程实际占用的内存大小,对于单个共享库, 尽管无论多少个进程使用,实际该共享库只会被装入内存一次。
PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
USS 是针对某个进程开始有可疑内存泄露的情况,进行检测的最佳数字。怀疑某个程序有内存泄露可以查看这个值是否一直有增加
使用mpsys meminfo查看内存信息
脚本:
adb shell ps -t> tsq/ps.txt
adb shell top -t -m 5 -n 2 > tsq/top.txt
adb shell service list > tsq/serviceList.txt
adb shell cat /proc/meminfo >tsq/meminfo
adb shell cat /proc/buddyinfo >tsq/buddyinfo
adb shell procrank > tsq/procrank.txt
adb shell cat proc/sched_debug >tsq/sched_debug.txt
adb shell cat proc/interrupts >tsq/interrupts.txt
adb shell mpstate > tsq/mpstate.txt
adb shell bugreport > tsq/bugreport.txt
@echo "finish."
pause
⑸ 安卓手机怎么扩大内存
问题一:怎么可以扩大手机运行内存 手机的运行内存是无法扩大的。手机的内存,分为两类,一个是运行内存,一个是存储内存:1、运行内存,即随机存储器,英文缩写为RAM,相当于电脑的内存条,出厂多大就多大,不能扩充容量,一般是1G或2G为主,不超过4GB;2、存储内存,习惯上手机参数里往往标称为叫ROM(只读存储器),其实不太准确,因为不是只读的,叫机身内存或手机内存更准确一些,这个相当于电脑的硬盘,容量一般在4GB以上。如果手机支持插卡,是可以扩充的。手机安装的应用一般默认就是安装在这里。这个就是手机的系统内存空间。RAM不足,可以通过节省RAM使用来变相的提升可用内存的容量。方法是:1、安卓低版本,必须Root后,用LBE安全大师或自启管家等类似的软件,禁止后台不必要的应用自启,就可以十分有效的空出大量的可用内存。安卓5.0以后,系统自带了内存管理器,就可以禁自启,无需root。2、用进程管理软件,经常在运行大程序前,杀一杀进程,清理一下内存。3、一个功能,尽量只装一个软件。比如市场软件,只装一个。比如杀毒、拦截骚扰短信、统计流量、节电等常用功能,尽量用一个软件来完成(比如前述的LBE),不要装多个软件,那样会增加不必要的内存浪费。4、暂时不用的软件,可以把安装包备份在手机存储卡里,然后卸载。用的时候临时装上。这样十分节省内存。
问题二:安卓智能机内存太小,如何扩展手机内存 你的手机肯定支持扩展内存容量哗?建议买个4G或者8G的内存卡安上就可以了。为放心起见,建议去京东购买。
金士顿(Kingston)8G Class4 TF(micro SD)存储卡 ¥39.9
问题三:怎么增大安卓手机运行内存 方法/步骤1、获取手机root权限刷机有什么好处呢?刷机可实现手机用户的最大权限,发挥出手机的最大潜能,并且还可以把一些手机的内置无用的系统软件给清理掉,给手机留下更多空间。现在网络上发布的手机获取root权限的方法很多,比如360手机安全卫士的一键root,腾讯电脑管家的一键root,还有root精灵等等一系列root软件,大多数root软件即使root失败对手机本身是无伤害的,所以请放心root,当然还需你的手机品牌和型号支持。如果不支持的话,就得冒风险去刷机了(我的联想手机就是通过刷机实现root的),若刷机没成功,很可能手机变板砖,所以请慎重刷机!
2、通过其他软件实现高性能软件可提高手机运行内存可能某些手机党还不了解,现在许多软件开发的团队开发的软件是越来越牛逼,堪称神器。虽然网络上是有一些软件可扩展运行内存,但大多数都无一用处。下面我来给大家推荐一个软件,是通过把手机运行内存与内存卡的内存相连接,从而实现运行内存的扩展,虽然称之为神器,但是还是有美中不足,低端手机扩展过大内存包容易使手机奔溃重启,所以必须合力使用。3、首先,下载我分享的这个软件。4、第二步,安装到手机内存中,并且打开该软件。点击开启,再点击YES。5、第三步点击创建交换文件,选择交换文件大小一般可选96~256M的,看你手机硬件的优良。点击后等待一会。6、最后,点击开启,一切都OK了,你会发现,手机许多以前不能玩的运行的游戏都能玩了。希望帮助你
问题四:安卓的手机如何扩大运行内存 厂商在设计生产手机时,根据CPU的能力及运行的软件,还有手机档次已经选定了板载内存,也就是固定在主板上的内存,这个内存的大小自己是无法添加的,大小从原来的几百K,到现在的4M。都是因为需要而不断的增加,这个内存不但存放系统文件,还需要留出一部分当运行内存,个人下载的文件也全都存在里面,因为个人使用而下载的软件太多了,就会占用过多的内存,使得可用的内存太少,造成系统缓存严重而死机等等情况时有发生。
在使用手机时,如果下载的文件太多,可以用张大点的内存卡,最好是C10的高速卡。把个人下载的文件全放卡强制存在内存卡上,把板载内存留给系统,这样才不会出现内存不够用的情况发生。
问题五:安卓手机内存可以扩大吗? 手机分物理内存和运行内存。。。。。你这款手机运行内存256M确实太小了,除了系统占用的100多M,剩下的确实不够用,运行软件时候需要占用运行内存,运行内存不可扩展的――――另外物理内存512M,可以扩展,软件是安装在物理内存的,提示内存不足,可以买张内存卡,然后将软件移至内存卡,某些带有插件的软件是不能移动的,比如QQ或者天气软件。如果ROOT以后倒是可以强行移动,不过那样的话,软件就会出问题,所以不建议强行移动。总体来说运行内存太小,就算把物理内存扩的再大也没用。。。。
问题六:安卓手机怎么扩自带的内存?不是内存卡 手机的自带内存无法扩容
一般内存只指ram,用于存储运行的程序,断电数据自动清空(ram不足建议关闭一些开机就启动的软件,并可以使用内存优化工具,再不济只能换手机了……)
也有人把手机的ROM内部数据存储也叫内存骸功能相当于各类内存卡,安装了手机的操作系统和部分软件(rom不足只能删除程序、图片、影像、mp3等数据,rom不足可以加适用本手机的内存卡)
如果有用请采纳
问题七:怎样增加安卓手机的虚拟运行内存RAM ,手机的ram太小. 首先root.然后安装lin2sd 完美安装!!
不过要把你的内存卡分成两个分区!! 一个默认的fat32,一个是linux系统下的ext3 ! 外加一个swap缓存!
有点麻烦,但是如果需要,可以看看这个帖子!
wenku./...f
问题八:手机升级安卓系统,会把手机内存扩大吗 不会,手机内存是固定的,不能扩大,但是升级只会占用system分区,对用户数据区没有什么影响,如果要改内存就只能重新刷机分区,但是有点危险,或换主板
问题九:安卓手机空间太小,怎么可以加大内存, 安装SD卡,将大部分程序移到卡上面,手机空间就空出来了。
另,及时定期地清除软件的数据,有的程序才十几二十几兆,数据累积下来能有百多兆的,如淘 宝类的。
问题十:手机自带内存太小,怎么样能扩大内存?? 不知道楼主是什么手机,可以按照自己的手机型号到论坛里找找,会有高手分享的刷大内存的刷机包。手机的内存分为ram和rom两种,说白了楼主想要扩大的是ram,也就是小的那个,相当于手机的c盘一样。这种刷机包利用的就是将手机自身的rom分给ram一部分,就相当于电脑的硬盘重新分区。所以楼主要保证自己手机的rom比较大,这样才能将更多的空间分享给ram。不知道楼主看懂没……不懂可以追问。
⑹ 修改Android Studio的内存大小
首先我们看看当前AS的内存大小:
打开设置
点击Appearance
然后将 Show memory indicator 这个选项勾选上,点击右下角的Apply。接着我我们回到主页面,就可以在页面的右下角看到当前AS所占用的内存大小了。
我们可以看到,现在的内存为1446M。但是太小了,想要扩大,该怎么弄呢?
我们先找到 Android Studio 的安装目录,在其 bin 目录下,找到 studio64.exe.vmoptions 这样一个vmoptions文件,然后将其打开,我所用的是NotePad++。
我们可以看到,方框中的两个参数,就是需要我们进行变更的参数。
根据自己电脑内存大小,对这两个参数进行调整。
别忘了对修改之后的文件进行保存。
然后我再回到AS中,点击File->Ivalidate Caches让之前的设置生效。
然后就静待Android Studio重启就好了。
⑺ 展锐Android平台如何查看设备ram和存储flash大小
如何adb shell查看ram和rom 大小
查看 emmc size(ROM(flash))
sp9850ka_1h10:/ # cat /sys/block/mmcblk0/size
cat /sys/block/mmcblk0/size 30535680 // 这是block数,乘512 就伍嫌是字节大小,历橘掘
sp9850ka_1h10:/ # 查看 ddr物理 size(ram (内存))
sp9850ka_1h10:/ # cat /proc/sprd_dmc/property
cat /proc/sprd_dmc/property 2048 // 这就是内存是2048MB的肢核内存