android 如何获取CPU频率(HZ)

本文介绍了一种通过代码在Android设备上获取CPU频率的方法,包括最大、最小及当前频率,并提供了获取CPU名称的示例。
如何得知自己的手机CPU频率是多少呢?有的手机可以如同查看SD卡容量信息一样查看处理器信息
比如:android 2.3系统,设置 -> 关于手机 -> 硬件信息,即可看到
但是也有很多手机并没有提供这样的UI展示,别着急,这里还有一个方法。
如下操作:
android <wbr>如何获取CPU频率(HZ)

这里的550000就是我们要找的CPU频率,注意单位是KHZ.

通过读取文件/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;
        }
}


以上博文摘自百度空间


 

### 限制CPU频率的方法 在Linux系统中,可以通过安装和配置`cpufrequtils`工具来调整或限制CPU频率。此工具支持查看当前CPU频率状态以及设置CPU的核心频率范围[^1]。以下是一个完整的流程: #### 安装`cpufrequtils` 首先需要确保系统中已安装`cpufrequtils`。可以使用以下命令进行安装: ```bash sudo apt-get install cpufrequtils ``` #### 查看当前CPU状态 使用`cpufreq-info`命令可以查看当前CPU频率信息及可用的频率范围: ```bash cpufreq-info ``` 该命令会显示每个CPU核心的当前频率、最小频率、最大频率以及支持的频率调节策略[^2]。 #### 设置CPU频率范围 通过`cpufreq-set`命令可以设置指定CPU核心的最低和最高频率。例如: - 设置指定CPU核心(如核心0)的最低频率为900MHz: ```bash sudo cpufreq-set -c 0 -d 900MHz ``` - 设置指定CPU核心(如核心2)的最高频率为2.6GHz: ```bash sudo cpufreq-set -c 2 -u 2.6GHz ``` 如果需要将所有CPU核心的频率范围统一设置,可以依次对每个核心执行上述命令。注意,`-c`参数用于指定核心编号,`-d`参数设置最低频率,`-u`参数设置最高频率。 #### 持久化配置 为了使设置在系统重启后仍然生效,可以将上述命令写入启动脚本。例如,编辑`/etc/rc.local`文件并在其中添加相关命令: ```bash #!/bin/bash cpufreq-set -c 0 -d 900MHz -u 2.6GHz cpufreq-set -c 1 -d 900MHz -u 2.6GHz ``` 保存文件并确保其具有可执行权限: ```bash sudo chmod +x /etc/rc.local ``` #### Android系统中的CPU频率限制 对于Android设备,若希望限制CPU频率以节省电量或降低发热,可以通过修改特定文件实现。例如,在MTK芯片的设备上,可以编辑`/proc/cpufreq/cpufreq_limited_max_freq_by_user`文件来设置最大频率[^4]。具体步骤如下: 1. 确保设备已获得Root权限。 2. 编辑`/proc/cpufreq/cpufreq_limited_max_freq_by_user`文件,将其值设置为目标频率(单位为Hz)。例如,限制最大频率为1.469GHz: ```bash busybox echo "1469000" > /proc/cpufreq/cpufreq_limited_max_freq_by_user ``` 3. 为了持久化设置,可以将上述命令写入一个Shell脚本(如`setcpu.sh`),并放置在设备的`/data`分区中,确保其具有可执行权限。 #### 注意事项 - 不同硬件平台可能支持的频率范围不同,请根据实际设备的规格进行设置。 - 过度限制CPU频率可能导致性能下降,需权衡性能与功耗之间的关系[^3]。 ```bash # 示例脚本:限制所有CPU核心的最大频率为2.6GHz for i in $(seq 0 $(nproc -1)); do sudo cpufreq-set -c $i -u 2.6GHz done ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值