首页 > 解决方案 > 在 Android 设备上以编程方式获取 CPU 时钟速度?

问题描述

有没有人有代码片段给出 Android 设备上的 CPU 时钟速度?

原因

我已经使用手表 GPS 编写了一个 Wear OS 应用程序来计算速度和方位到(预先输入的)GPS 位置。我遇到的问题是在某个随机时间段后 GPS 停止提供更新。

我在三星 Galaxy Watch 4 上运行该应用程序,并假设可靠性问题与三星最新手表报告的过热问题有关

一位同事建议我尝试使用 CPU 时钟速度来检测过热。他指出,许多现代移动设备在检测到它们变得太热时会降低其 CPU 时钟速度。

我希望使用 CPU 时钟作为过热的预警。然后我可以放慢 GPS 更新的速度,让应用程序保留减少的功能,这比完全失去 GPS 要好得多。

那么任何人都可以提供一个代码片段来给出 Android 设备上的 CPU 时钟速度吗?

编辑#1

可以使用以下代码片段直接获取 CPU 的热状态

        val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
        val thermalState = powerManager.currentThermalStatus
        /* Values
            THERMAL_STATUS_NONE,
            THERMAL_STATUS_LIGHT,
            THERMAL_STATUS_MODERATE,
            THERMAL_STATUS_SEVERE,
            THERMAL_STATUS_CRITICAL,
            THERMAL_STATUS_EMERGENCY,
            THERMAL_STATUS_SHUTDOWN,
         */

编辑#2

目前的工作理论是,这可能不是手表过热问题,而是单独的 Galaxy Watch 4“功能”。尽管将应用程序指定为独立的,但 GPS 更新会在与手机的连接丢失时停止,如此处所述

笔记:

我查看了测量 GPS 计算的执行时间,但这取决于当前航向。这是因为在平均轴承时需要处理“包裹”,例如 3 度和 359 度的轴承的平均值是 1 度(不是 181 度!)

可从Small Kotlin 演示 ACCESS_FINE_LOCATION获得的代码

标签: androidkotlinwear-osandroid-gps

解决方案


不是一个明确的答案,我不知道这些值对于您的目的的具体含义。

来自https://stackoverflow.com/a/3789655/1542667

在三星手表上

wiseul:/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq                                                                                                                                                   
200000
wiseul:/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq                                                                                                                                                   
1200000
wiseul:/ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq                                                                                                                                                   
1200000

推荐阅读