我正在研究阅读Android设备的物理RAM总量。
我知道这些信息存储在/ proc / meminfo中。
我怎么读它?
答案 0 :(得分:3)
试试这个:
public void getTotalMemory() {
{
String str1 = "/proc/meminfo";
String str2;
String[] arrayOfString;
long initial_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192);
str2 = localBufferedReader.readLine();//meminfo
arrayOfString = str2.split("\\s+");
for (String num : arrayOfString) {
Log.i(str2, num + "\t");
}
//total Memory
initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;
localBufferedReader.close();
}
catch (IOException e)
{
}
}
当您阅读此文件时,您将获得第一行的总内存,如:
MemTotal: 94096 kB
答案 1 :(得分:1)
public long getTotalMemory() {
String str1 = "/proc/meminfo";
String str2="";
String[] arrayOfString;
long initial_memory = 0, free_memory = 0;
try {
FileReader localFileReader = new FileReader(str1);
BufferedReader localBufferedReader = new BufferedReader(
localFileReader, 8192);
for (int i = 0; i < 2; i++) {
str2 =str2+" "+ localBufferedReader.readLine();// meminfo //THIS WILL READ meminfo AND GET BOTH TOT MEMORY AND FREE MEMORY eg-: Totalmemory 12345 KB //FREEMEMRY: 1234 KB
}
arrayOfString = str2.split("\\s+");
for (String num : arrayOfString) {
Log.i(str2, num + "\t");
}
// total Memory
initial_memory = Integer.valueOf(arrayOfString[2]).intValue();
free_memory = Integer.valueOf(arrayOfString[5]).intValue();
localBufferedReader.close();
} catch (IOException e) {
}
return ((initial_memory-free_memory)/1024);
}
答案 2 :(得分:0)
availMem should tell you the total available memory on the system.
你可以这样使用它:
ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
MemoryInfo mi = new MemoryInfo();
activityManager.getMemoryInfo(mi);
Log.d("FreeRam: ", "" + mi.availMem);
希望它有所帮助!