gpt4 book ai didi

java - 如何从 Android 手机读取 Java 中的 CPU "stats"?

转载 作者:搜寻专家 更新时间:2023-11-01 08:53:20 24 4
gpt4 key购买 nike

我正在尝试按核心计算 CPU 使用率,如果可能的话可能是温度,并且通常会计算出我可以从 CPU 读取的内容。

我进行了一些搜索,并且我有一些返回核心数的代码(参见 How can you detect a dual-core cpu on an Android device from code? )。现在我正试图弄清楚如何使用它从这个链接(Get Memory Usage in Android)获取核心的 CPU 使用率。

唯一的问题是我对 Java/Android 有点陌生,所以我很难理解评论者想说的话。一条评论说您应该更改 idle1 和 cpu1 上的分隔符...我是否对 idle2 和 cpu2 做同样的事情?如有任何帮助,我们将不胜感激,在此先感谢您!

好的,现在我可以更好地理解我在做什么,但是我的 4 核测试板上的核心 2-4 的读数都为 0。有时,当我启动应用程序时,核心 2 有一个值 > 0,但在随后的运行中(应用程序每秒更新一次值)它返回到 0。这是我目前拥有的代码,非常感谢!!!

    public double readUsage(int corenum) {
int j=0;
int coreVal = getNumCores();
String[] toks;
long idle1;
long cpu1;
long idle2;
long cpu2;

try {
RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r");
String load = reader.readLine();
reader.seek(0);
while (j <= corenum){
load = reader.readLine();
j++;
}
j=0;
toks = load.split(" ");

if (corenum == 0) {
idle1 = Long.parseLong(toks[5]);
cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
+ Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);
}

else {
idle1 = Long.parseLong(toks[4]);
cpu1 = Long.parseLong(toks[1]) + Long.parseLong(toks[2]) + Long.parseLong(toks[3])
+ Long.parseLong(toks[5]) + Long.parseLong(toks[6]) + Long.parseLong(toks[7]);
}

try {
Thread.sleep(100);
} catch (Exception e) {}

reader.seek(0);
while (j <= corenum){
load = reader.readLine();
j++;
}
j=0;
reader.close();
toks = load.split(" ");

if (corenum == 0) {
idle2 = Long.parseLong(toks[5]);
cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
+ Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);
}

else {
idle2 = Long.parseLong(toks[4]);
cpu2 = Long.parseLong(toks[1]) + Long.parseLong(toks[2]) + Long.parseLong(toks[3])
+ Long.parseLong(toks[5]) + Long.parseLong(toks[6]) + Long.parseLong(toks[7]);
}

return (double)(cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1));

} catch (IOException ex) {
ex.printStackTrace();
}

return 9999999;
}

最佳答案

您可以使用此答案中的代码:Get Memory Usage in Android

如评论中所述,您可以跳过第一行以获取每个内核的数据。

根据下面的评论,您可以阅读文件的每一行并打印用法,然后按照提供的链接拆分行:

public void printCpuUsages()
{
try
{
RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r");
String load = reader.readLine();
while (load != null)
{
Log.d("CPU", "CPU usage: " + load);
load = reader.readLine();
}
}
catch (IOException ex)
{
ex.printStackTrace();
}
}

关于java - 如何从 Android 手机读取 Java 中的 CPU "stats"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21102080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com