从Android2.3开始,传感器类型TYPE_TEMPERATURE就被弃用了,可能是因为它提供了关于CPU温度的信息。现在我们有了传感器类型的TYPE_AMBIENT_TEMPERATURE,它将为我们提供室温(不是我使用的,&顺便说一下,并不是所有的设备&/安卓版本都支持它)
我检查了一些测量CPU温度的应用程序。可能他们正在读取系统文件。我试着定位,在一些设备中,我可以在下面的路径中找到它:
sys/devices/virtual/thermal/thermal_zone0/temp
结构位因供应商而异&度量单位也各不相同。很好!但在许多设备中,我根本无法找到任何这样的文件&在相同的设备中,这些应用程序可以工作!我想知道是怎么回事!
我们如何在Android中测量CPU温度?
发布于 2016-02-24 14:23:13
我使用了以下路径:
sys/class/hwmon/hwmonX/temp1_input
在大多数手机上都能用
发布于 2014-07-17 08:54:20
弃用并不等于移除!如果您发现设备仍然提供过时的传感器类型,请继续使用它。
反对使用旧的传感器名称的部分原因是,在看到温度传感器时,公众期望温度将是环境空气的温度。然而,在许多情况下,传感器是CPU的一部分,距离CPU非常近,以至于它最终主要是CPU温度的反映。
通过添加明确为气温的新(可选)传感器类型,可以更好地管理此预期:
发布于 2020-05-07 15:49:11
Xamarin.Android sample is here -它就像循环遍历预定义的文件路径列表(在我的例子中是23),并从第一个文件中读取一行,打开时不会失败(然后将字符串转换为数字,缩放到度数)。
在以下设备上进行了验证:
< XZ2 >API Level 28
摩托罗拉One XT1941-4、API Level 28
联想S5、API 26
不工作:
三星小米小米8SE应用编程接口27 (在/sys/devices/virtual/thermal/thermal_zone9/temp)
Xiaomi小米5s应用编程接口26
Galaxy S设备上发现一个处理器核心,配备Exynos CPU
三星Galaxy S10 SM-G973F (Exynos),应用编程接口级别28
三星Galaxy S9+ SM-G965F (Exynos)应用编程接口28
<代码>H146三星Galaxy S8+ SM-G955N (Exynos)接口
诺基亚1(安卓GO),应用编程接口级别27
Context
API
HardwarePropertiesManager
无法通过标准传感器获取中央处理器温度API
HardwarePropertiesManager
仅适用于安卓企业版,而不是一个典型的使用案例
获得中央处理器温度的唯一方法是拥有一个包含系统文件报告温度读数的“神奇”路径的完整列表
CPU-Z等程序具有内部路径列表,可以探测包含传感器/读数名称(通常命名为"type“或" name ")和实际值(通常命名为"temp")的文件。例如,在/sys/devices/virtual/thermal/thermal_zone0下,可以从type文件读取"cpu-0-0-user“值,从temp文件读取"32100”值。
单个设备上有多个具有不同传感器名称的文件。人们可以通过传感器的名称来猜测它是否与CPU相关(名称中包含CPU或SoC或smth )。确切地说,没有一个"CPU温度“值,有很多个。如果您不关心细节(例如,告诉内核或封装温度之间的差异),选择一个值应该代表CPU的散热情况。
此外,不同设备供应商的传感器名称(以及文件路径)也会有所不同。传感器的值可以是数千个整数,也可以不是。实现临时读取的方式多种多样,这就是为什么Android中没有针对CPU临时的标准API。
我收集的列表并不完整(似乎比CPU-Z中的列表小),尽管我确实花了相当多的时间搜索。
如何找到特定设备的正确路径
获取device
Install Termux,并通过各种路径(从上面示例中的列表开始)执行cd、ls和cat,调查内部情况并搜索感兴趣的传感器
https://stackoverflow.com/questions/24797869
复制