【问题标题】:How can I monitor temperature on a Samsung Galaxy S8 through code?如何通过代码监控三星 Galaxy S8 的温度?
【发布时间】:2019-05-21 17:03:42
【问题描述】:

我正在尝试获取 Android 设备的 CPU 温度,特别是三星 Galaxy S8(用于 GearVR),以便能够在应用界面中显示它。 TEMPERATURE 和 AMBIENT_TEMPERATURE 传感器似乎不可用,除非我在代码中做错了什么?

我尝试从传感器管理器获取默认的 AMBIENT_TEMPERATURE 和 TEMPERATURE 传感器,但都返回 null。

sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
ambTemperatureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
if(ambTemperatureSensor == null)
        message += "No ambient temperature sensor...\n";
temperatureSensor = sensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);
if(temperatureSensor == null)
        message += "No temperature sensor...\n";

我完全期待 AMBIENT_TEMPERATURE 传感器出现并让我可以访问 CPU 温度,但是当这不起作用时,我认为可能会使用已弃用的 TEMPERATURE 传感器。在调用 getDefaultSensor 之前我需要做些什么吗?

【问题讨论】:

    标签: android android-sensors temperature samsung-galaxy android-hardware


    【解决方案1】:

    传感器 AMBIENT_TEMPERATURE 仅存在于 Galaxy S4 和 Galaxy Note 3 中。该传感器应该返回环境温度,而不是 CPU 温度。您的设备没有环境温度传感器。您需要寻找一种从 CPU 或设备电池中的内部传感器读取数据的方法。

    也许这就是你要找的东西:

    how get Current CPU Temperature programmatically in all Android Versions?

    【讨论】:

      【解决方案2】:

      并非每个设备上都存在每个传感器。您的设备可能根本没有温度传感器。这是最有可能不存在的数据之一,因为这些数据通常被误解并且不是很有用。

      【讨论】:

      • 感谢您的回答。我可能应该在我的问题中提到这一点,但 Galaxy S8 有一个内置通知,当它变得太热时会告诉用户;我认为它可能有某种只暴露给操作系统的私有温度传感器?
      • 所有设备似乎都至少有一个电池温度传感器
      • @CorneliusRoemer 实际上很少有人这样做。而且电池温度是无用的——电池会产生废热,所以它不会很精确——它可能高达 10 摄氏度。
      • 这是一个用于电池温度的 API - 它可以在大多数设备(如果不是所有设备)上可靠运行:stackoverflow.com/questions/3997289/… 当然,它不一定接近 CPU 温度 - 但它是相关的。总比没有好。
      猜你喜欢
      • 2018-07-14
      • 1970-01-01
      • 2018-06-26
      • 2018-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多