成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

android獲取cpu,android獲取文件列表

如何獲得android中cpu的信息

Android中如何獲得系統(tǒng)相關(guān)的信息(比如CPU使用率,內(nèi)存的總量和已用的量)

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比開魯網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式開魯網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋開魯?shù)貐^(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。

1、查看CPU

我想大家都很關(guān)系自己的愛機(jī)的CUP到底是什么具體信息呢.那就跟我來(lái)操縱吧.

打開超級(jí)終端,在命令行下輸入SU回車,然后在#后輸入cat /proc/cpuinfo回車.看到了吧.一串信息顯示出來(lái)了.具體如下(以本人手機(jī)為例):

# cat cpuinfo

cat cpuinfo

Processor : ARMv6-compatible processor rev 2 (v6l)

BogoMIPS : 527.15

Features : swp half thumb fastmult edsp java

CPU implementer : 0x41

CPU architecture: 6TEJ

CPU variant : 0x1

CPU part : 0xb36

CPU revision : 2

Hardware : trout

Revision : 0080

Serial : 0000000000000000

里面的Processor 是處理器的意思.本人處理器是ARMv6兼容處理器

BogoMIPS(讀作bogumips)是Linux操作系統(tǒng)中衡量計(jì)算機(jī)處理器運(yùn)行速度的的一種尺度,而提供這種度量的程序也被稱為BogoMips,是由Linux主要開發(fā)者linus Torvalds寫的。

本人的是527.15

2、查看內(nèi)存

內(nèi)存查看可以從設(shè)置--存儲(chǔ)卡和手機(jī)存儲(chǔ)--里面會(huì)可以看到也可以下載高級(jí)任務(wù)管理器,方便你關(guān)閉程序和查詢內(nèi)存

3、通過(guò)查看文件獲取設(shè)備信息

通過(guò)讀取文件/proc/meminfo的信息獲取Memory的總量。

ActivityManager. getMemoryInfo(ActivityManager.MemoryInfo)獲取當(dāng)前的可用Memory量。

通過(guò)讀取文件/proc/cpuinfo系統(tǒng)CPU的類型等多種信息。

讀取/proc/stat 所有CPU活動(dòng)的信息來(lái)計(jì)算CPU使用率

Android應(yīng)用查看CPU與內(nèi)存占用說(shuō)明

命令中的"應(yīng)用包名"應(yīng)該替換為你需要查詢的包名.

執(zhí)行命令后, 在輸出的內(nèi)容中, 第二項(xiàng)即應(yīng)用的進(jìn)程名, 例如:

那么 22411 即為該應(yīng)用當(dāng)前的pid.

其中的"應(yīng)用的pid"為上一步獲取到的pid

執(zhí)行命令后, 命令行工具即會(huì)打印應(yīng)用運(yùn)行信息

命令中的"應(yīng)用包名"應(yīng)該替換為你需要查詢的包名.

命令執(zhí)行后過(guò)段時(shí)間即會(huì)打印內(nèi)存占用大小.

Android性能測(cè)試(內(nèi)存、cpu、fps、流量、GPU、電量)——adb篇

3)查看進(jìn)程列表:adb shell "ps",同時(shí)也能獲取到應(yīng)用的UID,方式如下(不需root權(quán)限):

u0_a開頭的都是Android的應(yīng)用進(jìn)程,Android的應(yīng)用的UID是從10000開始,到19999結(jié)束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的數(shù)字就是該應(yīng)用的UID值減去FIRST_APPLICATION_UID所得的值,所以,對(duì)于截圖這個(gè)應(yīng)用進(jìn)程,它是u0_a155,按前面的規(guī)制,它的UID就是155 + FIRST_APPLICATION_UID = 10155。

VSS - Virtual Set Size 虛擬耗用內(nèi)存(包含共享庫(kù)占用的內(nèi)存)

RSS - Resident Set Size 實(shí)際使用物理內(nèi)存(包含共享庫(kù)占用的內(nèi)存)

PSS - Proportional Set Size 實(shí)際使用的物理內(nèi)存(比例分配共享庫(kù)占用的內(nèi)存)

USS - Unique Set Size 進(jìn)程獨(dú)自占用的物理內(nèi)存(不包含共享庫(kù)占用的內(nèi)存)

一般來(lái)說(shuō)內(nèi)存占用大小有如下規(guī)律:VSS = RSS = PSS = USS

使用 adb shell "dumpsys meminfo -s pakagename | pid"命令,輸出結(jié)果分以下4部分:

PS:在apk內(nèi)調(diào)用運(yùn)行獲取其他app的內(nèi)存數(shù)據(jù)則需要root權(quán)限

adb命令:adb shell dumpsys gfxinfo package | pid

正常情況下幀率應(yīng)該在16.67ms左右,1秒60幀,執(zhí)行結(jié)果如下:

詳細(xì)計(jì)算方法如下:

還有一個(gè)命令是: adb shell dumpsys SurfaceFlinger --latency LayerName

其中LayerName在各個(gè)不同系統(tǒng)中獲取的命令是不一樣的

在Android 6系統(tǒng)直接就是SurfaceView

在Android 7系統(tǒng)中可以通過(guò) dumpsys window windows | grep mSurface | grep SurfaceView 然后通過(guò)數(shù)據(jù)截取到

在Android 8系統(tǒng)中可以通過(guò) dumpsys SurfaceFlinger | grep android包名獲取到

執(zhí)行命令結(jié)果如下:

計(jì)算方法比較簡(jiǎn)單,一般打印出來(lái)的數(shù)據(jù)是129行(部分機(jī)型打印兩次257行,但是第一部分是無(wú)效數(shù)據(jù),取后半部分),取len-2的第一列數(shù)據(jù)為end_time,取len-128的第一列數(shù)據(jù)為start_time

fps = 127/((end_time - start_time) / 1000000.0)

至于為啥要取第一列數(shù)據(jù),這里不做過(guò)多介紹,歡迎參看這兩篇文章

老羅的文章SurfaceView原理

Android性能測(cè)試之fps獲取

至于為啥要處于1000000,因?yàn)槊畲蛴〕鰜?lái)的是納秒單位,要轉(zhuǎn)為毫秒進(jìn)行計(jì)算,127就是因?yàn)槊钜淮未蛴〕鰜?lái)127幀的數(shù)據(jù)而已

有兩種方法可以獲取

1) adb shell "top -n 5 | grep package | pid" ,第三列就是實(shí)時(shí)監(jiān)控的CPU占用率(-n 指定執(zhí)行次數(shù),不需root權(quán)限),這邊top命令執(zhí)行需要2到3s左右,一般可以采用busybox 的top命令執(zhí)行,效率會(huì)快很多

2) adb shell "dumpsys cpuinfo | grep package | pid"

兩種方法直接區(qū)別在于,top是持續(xù)監(jiān)控狀態(tài),而dumpsys cpuinfo獲取的實(shí)時(shí)CPU占用率數(shù)據(jù)

adb命令:adb shell "dumpsys batterystats package | pid" (Android 5.0后引入)

獲取單個(gè)應(yīng)用的耗電量信息,具體返回結(jié)果待研究

adb命令:adb shell "dumpsys battery"

出現(xiàn)信息解讀:

AC powered:false 是否連接AC(電源)充電線

USB powered:true 是否連接USB(PC或筆記本USB插口)充電

Wireless powered:false 是否使用了無(wú)線電源

status: 1 電池狀態(tài),2為充電狀態(tài),其他為非充電狀態(tài)

level:58 電量(%)

scale: 100. 電量最大數(shù)值

voltage: 3977 當(dāng)前電壓(mV)

current now: -335232. 當(dāng)前電流(mA)

temperature:355 電池溫度,單位為0.1攝氏度

adb 命令:adb shell "dumpsys package | pid | grep UID" [通過(guò)ps命令,獲取app的UID(安裝后唯一且固定)]

adb shell cat /proc/uid_stat/UID/tcp_rcv [cat為查看命令,讀取tcp_rcv獲取應(yīng)用接收流量信息(設(shè)備重啟后清零)]

adb shell cat /proc/uid_stat/UID/tcp_snd [cat為查看命令,讀取tcp_snd獲取應(yīng)用發(fā)送流量信息(設(shè)備重啟后清零)]

計(jì)算流量消耗步驟:

或者還有一種方式獲取應(yīng)用流量消耗:

首先判斷類型:

cat /sys/class/thermal/thermal_zone*/type

只有紅框框出來(lái)的是有效的

cat /sys/class/thermal/thermal_zone*/temp

獲取CPU溫度

dumpsys battery | grep temperature 單位0.1攝氏度

獲取/proc/stat文件內(nèi)容(無(wú)權(quán)限限制)

總的cpu時(shí)間片是 total = user+nice+system+idle+iowait+irq+softirq

忙碌時(shí)間為 notidle = user+nice+system +iowait+irq+softirq

cpu使用率計(jì)算方法為,先取開始的total值和忙碌時(shí)間notidle,隔一段時(shí)間片,再取一次計(jì)算total2,notidle2, cpuuse = (notidle2 – notidle) * 100 / (total2 - total)%

PS:由于Android 8權(quán)限收緊,在Android 8系統(tǒng)手機(jī)內(nèi)apk內(nèi)讀取文件內(nèi)容為空,需要shell權(quán)限才可獲取文件內(nèi)容,下同

讀/sys/devices/system/cpu/cpuX/cpufreq/scaling_cur_freq文件的值,X不定,看是幾核手機(jī),scaling_cur_freq是否存在也不一定,需要判斷

至于為啥不取cpuinfo_cur_freq文件的值,原因是android 6,7系統(tǒng)獲取的時(shí)候,這個(gè)文件shell沒(méi)有讀取權(quán)限,需要root權(quán)限

參考文章:

Android 6,7系統(tǒng)可執(zhí)行

dumpsys window windows | grep "mCurrentFocus"

執(zhí)行結(jié)果一般為類似:

mCurrentFocus=Window{81caaa5 u0 com.tencent.mobileqq/com.tencent.mobileqq.activity.SplashActivity}

按照一定規(guī)則把com.tencent.mobileqq提取出來(lái)即可

直接apk內(nèi)讀取文件即可,不需要shell權(quán)限(支持到Android8)

Gpu使用率獲?。簳?huì)得到兩個(gè)值,(前一個(gè)/后一個(gè))*100%=使用率

adb shell cat /sys/class/kgsl/kgsl-3d0/gpubusy

Gpu工作頻率:

adb shell cat /sys/class/kgsl/kgsl-3d0/gpuclk

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/cur_freq

Gpu最大、最小工作頻率:

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/max_freq

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/min_freq

Gpu可用頻率

adb shell cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_frequencies

Gpu可用工作模式:

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/available_governors

Gpu當(dāng)前工作模式:

adb shell cat /sys/class/kgsl/kgsl-3d0/devfreq/governor

Android怎樣獲取CPU使用率

直接按DEL+CTRL+ALT鍵,調(diào)出電腦任務(wù)管理器,查看性能,就可以看到有CPU占用率,核心數(shù)占用率的顯示。

或者安裝常見的魯大師軟件,在溫度欄下,也可以直接看到CPU的占用率。

如何獲取 Android 設(shè)備的CPU核數(shù),時(shí)鐘頻率以及內(nèi)存大小

獲取 CPU 核數(shù) Linux 中的設(shè)備都是以文件的形式存在,CPU 也不例外,因此 CPU 的文件個(gè)數(shù)就等價(jià)與核數(shù)。 Android 的 CPU 設(shè)備文件位于/sys/devices/system/cpu/目錄,文件名的的格式為cpu\d+。 root@generic_x86_64:/sys/devices/system/cpu # ls cpu0 cpufreq cpuidle kernel_max modalias offline online possible power present uevent統(tǒng)計(jì)一下文件個(gè)數(shù)便可以獲得 CPU 核數(shù)。 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 dual-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() {@Overridepublic 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;} };獲取時(shí)鐘頻率 獲取時(shí)鐘頻率需要讀取系統(tǒng)文件 -/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq或者/proc/cpuinfo。Android 模擬器中并沒(méi)有cpuinfo_max_freq文件,因此只能讀取/proc/cpuinfo。 /proc/cpuinfo包含了很多 cpu 數(shù)據(jù)。 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 - kHzif (freqBound maxFreq) maxFreq = freqBound;} finally {stream.close();}}} catch (IOException e) {maxFreq = DEVICEINFO_UNKNOWN; //Fall through and return unknown.}return maxFreq; }獲取內(nèi)存大小 如果 SDK 版本大于等于JELLY_BEAN,可以通過(guò)ActivityManager來(lái)獲取內(nèi)從大小。 ActivityManager.MemoryInfo memInfo = new ActivityManager.MemoryInfo(); ActivityManager am = (ActivityManager) c.getSystemService(Context.ACTIVITY_SERVICE); am.getMemoryInfo(memInfo);如果版本低于JELLY_BEAN,則只能讀取系統(tǒng)文件了。 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;} }

分享標(biāo)題:android獲取cpu,android獲取文件列表
標(biāo)題路徑:http://jinyejixie.com/article48/dssdgep.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、用戶體驗(yàn)、企業(yè)網(wǎng)站制作、App開發(fā)、網(wǎng)站維護(hù)、網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司
鄱阳县| 镇雄县| 谢通门县| 翼城县| 华容县| 宜川县| 祁门县| 乡城县| 确山县| 博罗县| 三穗县| 岳阳市| 罗定市| 河南省| 包头市| 江源县| 满城县| 德令哈市| 霞浦县| 汝城县| 林口县| 多伦县| 大新县| 黑河市| 大荔县| 马鞍山市| 宜兰市| 湖口县| 澄城县| 宝坻区| 淮北市| 许昌县| 施甸县| 布拖县| 百色市| 德江县| 陵水| 遵化市| 疏附县| 都匀市| 枝江市|