導航:首頁 > 操作系統 > android獲取存儲大小

android獲取存儲大小

發布時間:2023-04-24 04:31:07

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的肢核內存

閱讀全文

與android獲取存儲大小相關的資料

熱點內容
linux查看cpu是幾核的 瀏覽:165
android賽風 瀏覽:226
程序員面試經歷 瀏覽:983
蘋果怎麼設置app只用數據 瀏覽:855
學以為己pdf 瀏覽:231
為什麼安卓手機進步很大 瀏覽:342
mfc軟體加密 瀏覽:326
ubuntu上傳文件命令 瀏覽:712
合約馬丁格爾源碼 瀏覽:971
慕課文件夾名稱 瀏覽:671
用app國潮手帳怎麼做 瀏覽:254
解壓娛樂編輯器 瀏覽:615
wppdf 瀏覽:265
sshlinux文件下載 瀏覽:175
使用ping命令檢查網路問題 瀏覽:751
金手指文件放哪個文件夾 瀏覽:44
想創app軟體怎麼操作 瀏覽:201
為啥電腦總是顯示沒有文件夾 瀏覽:675
iphone顯示無法驗證app怎麼回事 瀏覽:968
推薦解壓好游戲 瀏覽:277