首页 > 其他分享 >android 获取cpu温度

android 获取cpu温度

时间:2023-11-21 11:06:55浏览次数:48  
标签:temperature temp devices class sys 获取 thermal android cpu


1、实力展示

android 获取cpu温度_java

 

android 获取cpu温度_java_02

 

 

2、核心代码分析

 

就是读取指定文件下,一些cpu信息文件,然后,对里面的数据进行筛选。

有的机器上没有温度显示,大概率是下面的文件列表中,在当前机器上没有读权限,或者就直接没有列表中的文件。

/**
     * Scan device looking for CPU temperature in all well known locations
     */
    fun getCpuTemperatureFinder(): Maybe<CpuTemperatureResult> {
        return Observable.fromIterable(CPU_TEMP_FILE_PATHS)
                .map { path ->
                    val temp = Utils.readOneLine(File(path))
                    var validPath = ""
                    var currentTemp = 0.0
                    if (temp != null) {
                        // Verify if we are in normal temperature range
                        if (isTemperatureValid(temp)) {
                            validPath = path
                            currentTemp = temp
                        } else if (isTemperatureValid(temp / 1000)) {
                            validPath = path
                            currentTemp = temp / 1000
                        }
                    }
                    CpuTemperatureResult(validPath, currentTemp.toInt())
                }
                .filter { (filePath) -> !filePath.isEmpty() }
                .firstElement()
    }

    /**
     * Check if passed temperature is in normal range: -30 - 250 Celsius
     *
     * @param temp current temperature
     */
    private fun isTemperatureValid(temp: Double): Boolean = temp in -30.0..250.0

    /**
     * Container for temperature value and path
     */
    data class CpuTemperatureResult(val filePath: String = "", val temp: Int = 0)

    companion object {
        // Ugly but currently the easiest working solution is to search well known locations
        // If you know better solution please refactor this :)
        private val CPU_TEMP_FILE_PATHS = listOf(
                "/sys/devices/system/cpu/cpu0/cpufreq/cpu_temp",
                "/sys/devices/system/cpu/cpu0/cpufreq/FakeShmoo_cpu_temp",
                "/sys/class/thermal/thermal_zone0/temp",
                "/sys/class/i2c-adapter/i2c-4/4-004c/temperature",
                "/sys/devices/platform/tegra-i2c.3/i2c-4/4-004c/temperature",
                "/sys/devices/platform/omap/omap_temp_sensor.0/temperature",
                "/sys/devices/platform/tegra_tmon/temp1_input",
                "/sys/kernel/debug/tegra_thermal/temp_tj",
                "/sys/devices/platform/s5p-tmu/temperature",
                "/sys/class/thermal/thermal_zone1/temp",
                "/sys/class/hwmon/hwmon0/device/temp1_input",
                "/sys/devices/virtual/thermal/thermal_zone1/temp",
                "/sys/devices/virtual/thermal/thermal_zone0/temp",
                "/sys/class/thermal/thermal_zone3/temp",
                "/sys/class/thermal/thermal_zone4/temp",
                "/sys/class/hwmon/hwmonX/temp1_input",
                "/sys/devices/platform/s5p-tmu/curr_temp")
    }

 

源码来自 github 

或者参考源码:

HardwarePropertiesManagerTest.java

使用   HardwarePropertiesManager 进行属性获取,但是这个需要 system 权限。

 

 

标签:temperature,temp,devices,class,sys,获取,thermal,android,cpu
From: https://blog.51cto.com/u_15866638/8497614

相关文章

  • javap获取jni 对应数据类型
    先用javac生成*.class文件,然后javap-cCallJni.class更多帮助:javap-help......
  • 修改Android原生圆形ProgressBar颜色和环宽
    原生颜色和尺寸:修改颜色和圆环大小;效果:......
  • Android studio 打包jar包
    文章目录1、新建一个工程2、在工程中新建一个用于打包的模块3、主工程App的build中要加入依赖model4、在lib的build中编写task5、在libmodel中编写class文件6、打包jar7、jar包的调用1、新建一个工程新建一个空的工程2、在工程中新建一个用于打包的模块3、主工程App的build......
  • Android studio使用javadoc生成 api 说明文档
    文章目录1、工具下载2、实用工具添加注释3、使用该工具生成api文档4、查看生成的api文档5、帮助1、工具下载2、实用工具添加注释官方wikiTogeneratejavadocsforactiveelementpress“shift+alt+G”.Togeneratejavadocsforallelementsincurrentjavafilepre......
  • Android nice 进程优先级设置
    文章目录1.简介2.查看nice值3.修改nice的值1)adb命令修改2)在源码中修改1.简介在Android中,可以使用nice值来设定一个进程的优先级,系统的调度器可以根据nice值来合理的调度进程,主要特点如下:在Android中,nice的取值范围为**-20~19**在Android中,nice值的默认大小为0在Android......
  • 获取App Store线上应用版本信息
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!【 注意:中国大陆区用/cn/,如果是其他地区,请把链接改成对应的地区代码。】1、通过AppID:AppStore搜索对应的应用,点击右上角分享按钮,点击拷贝链接,复制到浏览器中,最后的显示的就是十位idh......
  • Android Recyclerview的item间距实现
    Recyclerview中,提供了一个方法addItemDecoration给我们用于设置item的分割线下面提供几个常见的分割线效果注:下面的SizeUtils是AndroidUtilCode此库里的工具类,需要添加依赖,也可以自行修改封装的方法(主要是将dp单位转为px)以下代码已封装在我的库中stars-one/XAndroidUt......
  • C++ 20 编译期类型名获取
    编译期类型名获取C++20标准,使用库std::source_location。#include<source_location>C++20之前在C++20前有两种方法__PRETTY_FUNCTION____FUNCSIG__通过截取函数签名中的T=...获取函数类型。template<typenameT>constexprautotype_name()->std::stri......
  • Android系统开发 Android10版本自定义系统版本号
    前言  framework开发,此博客基于Android10版本,实现自定义系统版本号。找到修改位置需要修改的关键文件是buildinfo.sh搜索一下文件找到要改的目标文件这里建议将这个文件拷贝出来修改,各自的编译环境不同,拷贝或者传输文件的方式不同,这里各自发挥。下面是我在wsl里把文件拷......
  • 根据值从枚举获取字符串名称
    内容来自DOChttps://q.houxu6.top/?s=根据值从枚举获取字符串名称我有一个如下所示的枚举构造:publicenumEnumDisplayStatus{None=1,Visible=2,Hidden=3,MarkedForDeletion=4}在我的数据库中,枚举被引用为值。我的问题是,如何将枚举的......