You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以编程方式获取当前CPU频率?无需Root权限实现方案

无需Root获取Android CPU当前频率的可行方案

我之前也碰到过一模一样的问题,其实很多Android设备上都有不需要Root权限就能访问的系统节点,能帮你拿到当前CPU频率,试试下面这些方法:

  • 读取scaling_cur_freq节点:绝大多数设备里,/sys/devices/system/cpu/cpu[0-N]/cpufreq/scaling_cur_freq这个路径的文件是普通应用就能读取的。它返回的数值单位是kHz,和cpuinfo_cur_freq的作用完全一致。你可以遍历每个CPU核心对应的路径,读取文件内容即可。

    给你一段Java示例代码参考:

    private long getSingleCoreCurFreq(int coreIndex) {
        try {
            File freqFile = new File("/sys/devices/system/cpu/cpu" + coreIndex + "/cpufreq/scaling_cur_freq");
            BufferedReader reader = new BufferedReader(new FileReader(freqFile));
            String freqStr = reader.readLine().trim();
            reader.close();
            return Long.parseLong(freqStr);
        } catch (Exception e) {
            e.printStackTrace();
            return 0;
        }
    }
    
  • 通过/proc/stat间接计算频率:如果上面的节点在某些设备上无法访问,还可以用/proc/stat文件里的CPU统计信息间接算出平均频率。这个文件记录了CPU在不同状态下的累计运行时间,你可以间隔一段时间读取两次数据,结合时间差计算出这段时间内的平均频率——虽然是近似值,但对大部分UI展示场景足够用。

  • 做好设备兼容性处理:不同厂商的设备可能会有路径差异,比如部分定制系统会调整sysfs的节点位置。你可以先遍历/sys/devices/system/cpu/下的所有cpu*目录,再逐个检查对应cpufreq目录下的scaling_cur_freq是否存在,避免出现找不到文件的异常。

另外,周期性获取频率的时候,别把间隔设得太短(比如小于1秒),不然会额外消耗系统资源。可以用Handler(Java)或者Coroutine(Kotlin)来实现定时任务,更新UI的时候一定要切回主线程哦。

内容的提问来源于stack exchange,提问作者Leo Chen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:37:45