精华内容
下载资源
问答
  • 实时获取Android手机CPU频率

    万次阅读 2016-12-03 21:29:08
    Android手机CPU频率信息被保存在 /sys/devices/system/cpu/cpu0/cpufreq 目录下,通过shell命令查看该目录下的文件,如下图 其中cpuinfo_cur_freq文件保存CPU当前频率,cpuinfo_max_freq保存CPU可运行最大...

    Android手机的CPU的频率信息被保存在 /sys/devices/system/cpu/cpu0/cpufreq 目录下,通过shell命令查看该目录下的文件,如下图
    这里写图片描述
    其中cpuinfo_cur_freq文件保存CPU当前频率,cpuinfo_max_freq保存CPU可运行最大频率,cpuinfo_min_freq保存CPU可运行最小频率。通过定时读取这些文件便可实时获取CPU频率。

    1.创建getCPU类,获取CPU频率信息。

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class getCPU {
    
        private final static String CurPath = "/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq";//保存当前CPU频率
        //获取当前CPU频率
        public static int getCurCPU(){
            int result = 0;
            FileReader fr = null;
            BufferedReader br = null;
            try{
                fr = new FileReader(CurPath);
                br = new BufferedReader(fr);
                String text = br.readLine();
                result = Integer.parseInt(text.trim());
            }catch (FileNotFoundException e){
                e.printStackTrace();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                if (fr != null)
                    try{
                        fr.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                if (br != null)
                    try{
                        br.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
            }
            return result;
        }
    
    private final static String MaxPath = "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq";//保存CPU可运行最大频率
        //获取CPU可运行最大频率
        public static int getMaxCPU(){
            int result = 0;
            FileReader fr = null;
            BufferedReader br = null;
            try{
                fr = new FileReader(MaxPath);
                br = new BufferedReader(fr);
                String text = br.readLine();
                result = Integer.parseInt(text.trim());
            }catch (FileNotFoundException e){
                e.printStackTrace();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                if (fr != null)
                    try{
                        fr.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                if (br != null)
                    try{
                        br.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
            }
            return result;
        }
    
       private final static String MinPath = "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq";//保存CPU可运行最小频率
        //获取CPU可运行最小频率
        public static int getMinCPU(){
            int result = 0;
            FileReader fr = null;
            BufferedReader br = null;
            try{
                fr = new FileReader(MinPath);
                br = new BufferedReader(fr);
                String text = br.readLine();
                result = Integer.parseInt(text.trim());
            }catch (FileNotFoundException e){
                e.printStackTrace();
            }catch (IOException e){
                e.printStackTrace();
            }finally {
                if (fr != null)
                    try{
                        fr.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
                if (br != null)
                    try{
                        br.close();
                    }catch (IOException e){
                        e.printStackTrace();
                    }
            }
            return result;
        }
    }

    2.MainActivity

    public class MainActivity extends Activity {
        private TextView textView1;
        public void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            textView1 = (TextView) findViewById(R.id.show_CPU);
            new Thread(){
                public void run(){
                    try{
                        while (true){
                            Thread.sleep(30000);//设置时间间隔为30s
                            Message msg = new Message();
                            msg.what = UPDATE;
                            handler.sendMessage(msg);
                        }
                    }catch (InterruptedException e){
                        e.printStackTrace();
                    }
                }
            }.start();
        }
    
        getCPU getcpu = new getCPU();
        private static final int UPDATE = 0;
        private Handler handler = new Handler(){
            public void handleMessage(Message msg){
                switch (msg.what){
                    case UPDATE:
                        textView1.setText("");
                        textView1.append("CPU最大频率为:"+ Integer.toString(getcpu.getMaxCPU()) + "\n");
                        textView1.append("CPU最小频率为:"+ Integer.toString(getcpu.getMinCPU()) + "\n");
                        textView1.append("CPU当前频率为:"+ Integer.toString(getcpu.getCurCPU()) + "\n");
                        break;
                    default:
                        break;
                }
                super.handleMessage(msg);
            }
        };
    
    }

    3.activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:weightSum="1">    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/show_CPU" />
    </LinearLayout>

    运行效果如图,可以看出实现了实时获取CPU的频率。
    这里写图片描述

    这里写图片描述

    展开全文
  • 实时获取Android手机CPU占用率

    千次阅读 2016-12-03 22:35:13
    前面写了实时获取Android手机CPU频率,这个只需要读取/sys/devices/system/cpu/cpu0/cpufreq下的文件即可。但是如果想获取CPU的占用率,就不是这么简单了。因为手机上并没有存储CPU占用率的文件,我们需要通过已有...

    前面写了实时获取Android手机的CPU频率,这个只需要读取/sys/devices/system/cpu/cpu0/cpufreq下的文件即可。但是如果想获取CPU的占用率,就不是这么简单了。因为手机上并没有存储CPU占用率的文件,我们需要通过已有的数据计算得到CPU占用率。

    在/proc/stat文件里存储的数据,是从系统启动开始累计到当前时刻CPU活动的信息。读取该文件信息如下:
    这里写图片描述

    通过获取cpu一行的数据,即可进行CPU占用率的计算。我们会用到的数据有:
    - user(21441),从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含nice值为负的进程。
    - nice(3634),从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间。
    - system(13602),从系统启动开始累计到当前时刻,处于核心态的运行时间。
    - idle(818350),从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间。
    - iowait(3535),从系统启动开始累计到当前时刻,IO等待时间。
    - irq(2),从系统启动开始累计到当前时刻,硬中断时间。
    - softirq(99),从系统启动开始累计到当前时刻,软中断时间。

    总的CPU时间totalTime = user+nice+system+idle+iowait+irq+softirq

    总的CPU占用率的计算方法为:采样两个足够短的时间间隔的CPU快照,CPU占用率 = 100*((totalTime2-totalTime1)-(idle2-idle1))/(totalTime2-totalTime1)
    其中totalTime2-totalTime1为采样时间间隔内所有的CPU时间片,idle2-idle1为空闲时间片,CPU执行非系统空闲进程的时间/CPU总的执行时间,即得到CPU的占用率。

    具体算法实现如下:

    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.HashMap;
    import java.util.Map;
    /**
     * Created by yt on 2016/11/15.
     */
    
    public class getRate {
        public static float getRate(){
            Map<String,String> map1 = getMap();//采样第一次CPU信息快照
            long totalTime1 = Long.parseLong(map1.get("user")) + Long.parseLong(map1.get("nice"))
                             + Long.parseLong(map1.get("system")) + Long.parseLong(map1.get("idle"))
                             + Long.parseLong(map1.get("iowait")) + Long.parseLong(map1.get("irq"))
                             + Long.parseLong(map1.get("softirq"));//获取totalTime1
            long idleTime1 = Long.parseLong(map1.get("idle"));//获取idleTime1
            try{
                Thread.sleep(360);//等待360ms
            }catch (Exception e){
                e.printStackTrace();
            }
            Map<String,String> map2 = getMap();//采样第二次CPU快照
            long totalTime2 = Long.parseLong(map2.get("user")) + Long.parseLong(map2.get("nice"))
                    + Long.parseLong(map2.get("system")) + Long.parseLong(map2.get("idle"))
                    + Long.parseLong(map2.get("iowait")) + Long.parseLong(map2.get("irq"))
                    + Long.parseLong(map2.get("softirq"));//获取totalTime2
            long idleTime2 = Long.parseLong(map2.get("idle"));//获取idleTime2
            float cpuRate = 100*((totalTime2-totalTime1)-(idleTime2-idleTime1))/(totalTime2-totalTime1);
            return cpuRate;
        }
    
        //采样CPU信息快照的函数,返回Map类型
        public static Map<String,String> getMap(){
            String[] cpuInfos = null;
            try {
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("/proc/stat")));//读取CPU信息文件
                String load = br.readLine();
                br.close();
                cpuInfos = load.split(" ");
            }catch (IOException e){
                e.printStackTrace();
            }
            Map<String,String> map = new HashMap<String,String>();
            map.put("user",cpuInfos[2]);
            map.put("nice",cpuInfos[3]);
            map.put("system",cpuInfos[4]);
            map.put("idle",cpuInfos[5]);
            map.put("iowait",cpuInfos[6]);
            map.put("irq",cpuInfos[7]);
            map.put("softirq",cpuInfos[8]);
            return map;
        }
    }

    结合前面文章中的定时获取逻辑,即可实现定时获取Android手机CPU占用率。效果如图(为了验证正确性,我对cpuInfos和idleTime做了输出):
    这里写图片描述

    展开全文
  • 可以实时查看手机CPU频率的工具 包内包含 一个说明文档 和 两个安装包
  • 实时追踪CPU/GPU使用率 高通Trepn更新

    千次阅读 2015-07-24 17:57:19
    你可以用它来分析诸如游戏、软件等运行时CPU/GPU的使用率以及实时频率,并以图表的形式给出一段时间内的结果,我们曾在过去据此推出过一篇《2013旗舰手机处理器性能横评》。    如今这个小工具迎来了6.0版的...

    高通Qualcomm Innovation Center曾经推出过一款追踪手机处理器当中CPU/GPU使用情况的软件Trepn Profiler,你可以用它来分析诸如游戏、软件等运行时CPU/GPU的使用率以及实时频率,并以图表的形式给出一段时间内的结果,我们曾在过去据此推出过一篇《2013旗舰手机处理器性能横评》

    实时追踪CPU/GPU使用率 高通Trepn更新 实时追踪CPU/GPU使用率 高通Trepn更新

        如今这个小工具迎来了6.0版的更新,加入了更多的硬件追踪支持和更丰富的图表表现形式,设计风格上还迎合了谷歌最新的Material Design;感兴趣的朋友可以拿来试试你的手机处理器是否能在整个大型游戏当中满血运行,检测过程可以实时显示在游戏画面之上,非常方便。

        不过该APP暂时还是需要通过谷歌官方市场来下载,地址为:https://play.google.com/store/apps/details?id=com.quicinc.trepn

    实时追踪CPU/GPU使用率 高通Trepn更新 实时追踪CPU/GPU使用率 高通Trepn更新

    展开全文
  • 一般手机cpu到蓝牙的通话实时音频传输都使用pcm,MP3之类的音频走的是urat/usb之类的其他接口。 真正原因我也不能确定,不过有几个情况可能是原因之一。 1,pcm和iis的区别在于,pcm一般是固定8k的采样率的单声道...
    一般手机cpu到蓝牙的通话实时音频传输都使用pcm,MP3之类的音频走的是urat/usb之类的其他接口。
    真正原因我也不能确定,不过有几个情况可能是原因之一。
    1,pcm和iis的区别在于,pcm一般是固定8k的采样率的单声道音频,最早似乎和固定电话的编码有直接关系,之后所有的话音编码几乎都是在pcm编码基础上再次编码得到的。而iis则多了一个专门的信号线,采样率也可以配置到较高的频率,如44k。
    1,手机通话时候的编码一般都会被解码成8k采样率的pcm码,高了也没有用。因为本来手机通话的话音频段就是300~3400Hz而已,编码也是按8k采样的。某些手机平台并没有iis接口,相对来说基本上都会有pcm接口。

    3,从蓝牙角度讲,蓝牙在制定协议的时候就特意为通话需求制定了一个协议层,专门定义了一种包结构(sco)用于通话,有很好的实时性。而通过uart传输的包一般为alc,用分组传输的方式。两种包的编解使用的软硬件都有些区别。sco包支持的基础码率也是8k的pcm.所以一般蓝牙芯片都会有一个pcm接口。

    更多关于蓝牙音频的问题,可以看这里

    展开全文
  • Emmagee主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流等性能状态的变化,且用户可自定义配置监控的频率以及性能的实时显示,并最终生成一份性能统计文件。Emmagee是网易杭州研究院QA团队开发的一个...
  • trepn_6.2p

    2019-02-18 19:16:56
    手机测试工具之cpu/gpu监视器,能够看到cpu、gpu利用率/实时频率
  • perfmon.rar

    2020-02-27 14:20:17
    此apk应用程序可以实时监测当前手机 平板等android平台机器的cpu频率。 对于功耗等应用场景很有帮助。
  • 首先,它的信息面板版块实时监控 CPU 和 GPU 频率、温度、电池使用情况、内存使用情况、网络网速、手机深度休眠时间和正常运行时间,并以各种图表的形式动态展示。 它的硬件版块显示手机 SOC ,CPU,GPU 内存,存储,...
  • adb_viewer是使用 , 和的实时android资源查看器(CPU使用率,CPU频率,CPUSET配置,由cpuset运行的进程)。 它在四核处理器上工作。 (LG V10,V20,G5,G6,Google Pixel) CPUSET Viewer功能只能使用支持Day...
  • Droid Info Pro 1.2.2.apk

    2019-04-11 16:14:49
    以及每个核心的当前CPU利用率,总运行进程和时钟频率。 - 内存:总RAM和可用RAM,以及有关设备的存储信息。 - 摄像头:有关手机中主摄像头和辅助摄像头的详细信息。以及支持的分辨率,对焦模式和AntiBanding模式。 -...
  • 这使您可以在使用其他应用程序时实时监视CPU频率,温度,GPU频率,电池和系统负载。覆盖窗口的大小,透明度和位置是完全可调的。在Android 5.0及更高版本上,浮动监视器可以方便地停靠在状态栏中, 专业版还允许您...
  • 仪表板:您在应用程序内的主页上,仪表板会汇总您当前的设置并显示实时CPU和GPU频率,温度,内存使用率,正常运行时间,深度睡眠,电池电量和温度,调节器以及I / O设置。 电池监控器:测量电池寿命的最准确方法。 ...
  • QA团队开发的一款简单易上手的Android性能监控App,主要用于监控单个App的CPU、内存、流量、启动耗时、电量、电流等性能状态的变化,且用户可自定义配置监控的频率,性能的实时显示以及heap大小的统计(root手机),...
  • 摘要 为了实现嵌入式实时操作系统对DVS的支持,本文在分析软硬件两方面节能原理的基础上,提出了一...然而,复杂的功能需要功能强大的处理器,如智能手机中已集成了模拟基带、数字基带、图像处理器和CPU等多个分处理器
  • 典型支持卡片 mifare oneS50,S70卡,CPU卡,2.4G手机卡、NFC卡,银联闪付卡等等。 兼容与扩展能力 无缝接入任何系统的任何种类卡片;接入各类二维码支付;对接任何软件平台 后备电池 锂电池7.2V,断电工作不低于6...
  • 实例019 利用DirectSound编程实现实时混音 46 实例020 利用API播放CD 48 实例021 播放MIDI声音文件 50 1.3 音频设备控制 51 实例022 利用PC喇叭播放声音 51 实例023 检查是否安装声卡 52 实例024 控制系统音量...
  • 实例019 利用DirectSound编程实现实时混音 46 实例020 利用API播放CD 48 实例021 播放MIDI声音文件 50 1.3 音频设备控制 51 实例022 利用PC喇叭播放声音 51 实例023 检查是否安装声卡 52 实例024 控制系统音量...
  • getCurrentRuntimeValue : 获取手机当前的Runtime getLauncherClassName : 获取app的启动活动的名称 getAllApps : 获取系统中所有的应用 getSDKVersion : 获取手机系统SDK版本 动画相关的工具类 -> ...
  • c语言编写单片机技巧

    2009-04-19 12:15:17
    相关频率特性(AC)测试,也是通过外灌一定频率,从I/O口来看输出是否与之匹配。  为了保证IC生产的长期且稳定品质,还会做产品的可靠性测试,这些测试包括ESD测试,LATCH UP测试,温度循环测试,...
  • 本地设备采集到的数据实时上传到云端,以便手机APP或者web等其他方式提取。 支持两种数据源,一种是串口和网络通过协议采集设备数据,一种是数据库采集。数据库采集模式可以作为通用的系统使用。 自带设备模拟工具,...
  • java源码包---java 源码 大量 实例

    千次下载 热门讨论 2013-04-18 23:15:26
     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...
  • java源码包2

    千次下载 热门讨论 2013-04-20 11:28:17
     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...
  • java源码包3

    千次下载 热门讨论 2013-04-20 11:30:13
     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...
  • java源码包4

    千次下载 热门讨论 2013-04-20 11:31:44
     用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字  Java波浪文字,一个利用...

空空如也

空空如也

1 2
收藏数 36
精华内容 14
关键字:

手机cpu实时频率