安卓温度区域?

6

我看到许多关于如何从Android设备获取温度信息的问题和答案 - 使用以下方法:

int zoneNumber = 0; // Usually 0 or 1
String temperatureFileLocation = "sys/devices/virtual/thermal/thermal_zone" + zoneNumber + "/temp";
File temperatureFile = new File(temperatureFileLocation);
scanner = new Scanner(temperatureFile);
double temperatureC = scanner.nextFloat(); // Degrees C
...
scanner.close(); // finally

我之前不是很清楚每个区域的作用(例如:传感器位于设备的哪个部分),但我刚刚发现有一个文件描述了每个区域的类型,例如:

String zoneTypeFileLocation = "sys/devices/virtual/thermal/thermal_zone" + zoneNumber + "/type"; // NB - that's "/type" not "/temp" !

现在,当使用Scanner读取每个区域的类型时,我会得到像这样的值:
mtktswmt 
mtktscpu
mtktspmic
mtktspa
mtktsabb
mtktsbattery
tsen_max
sec-fuelguage

有人能解释一下所有这些区域名称实际指的是什么位置/组件吗?

(理想情况下,我想获取设备NFC硬件的温度。)


我们如何检索所有热区值? - Yasiru Nayanajith
1个回答

10
我猜这是移动设备的硬件温度传感器。通常在手机工作或甚至在执行一些基准测试结果时,它们会给出给定区域的温度。 例如:
  1. mtktswmt 是 Wifi 芯片温度区域。
  2. mtktscpu 是 CPU 温度区域。
  3. mtktspmic 是多功能 I/O 和稳压器芯片温度区域。
  4. mtktspa 是热传感器 MD1
  5. mtktsabb 是处理器温度区域。
  6. mtktsbattery 是电池温度区域。
  7. tsen_max 是最大温度传感器容量(我不确定)。
  8. sec-fuelguage 是燃料计量芯片。

mtkt 前缀只是制造商的名称。在这种情况下,它是 Mediatek

这是相当高级的硬件内容。这些实际上是由 Android 手机制造商使用的(我猜)。即使上述数据是从 google android 开放源代码项目中搜索到的,其中的值是在内核驱动程序中找到的。因此,这是相当高级的硬件内容,需要有一定的专业知识才能进行操作。

要使用实际上给出所需结果的硬件属性,请尝试HardwarePropertiesManager

希望有所帮助。


非常好的答案 - 谢谢。如上所述,我正在尝试获取NFC硬件的温度 - 或最接近它的东西。为此,您会使用 HardwarePropertiesManager.DEVICE_TEMPERATURE_CPU 还是 HardwarePropertiesManager.DEVICE_TEMPERATURE_BATTERY - 或者其中一个 mtkts 读数? - ban-geoengineering
1
我猜你可以选择CPU温度作为NFC的指标,因为电池充电时温度往往会升高。如果你想了解NFC的温度,请访问这个问题。硬件还是相当不错的。https://stackoverflow.com/questions/28944342/nfc-temperature-logger-commands如果你满意了,请别忘了将其标记为正确答案,以便其他人参考。谢谢。 - Sahil
请翻译以下与编程有关的内容,仅返回已翻译的文本:请将其标记为正确,以供其他人使用@ban-geoengineering并点赞感谢! - Sahil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接