我如何获得CPU温度?

时间:2013-12-25 09:10:46

标签: android

我知道以某种方式可以获得CPU的温度,因为我下载了一个在无根设备中执行此操作的应用程序。怎么做?

编辑:该应用程序称为A1 CPU工具。我花了几天时间寻找答案。

edit2:这是我试过的代码

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
    Sensor TempSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
    mSensorManager.registerListener(temperatureSensor, TempSensor, SensorManager.SENSOR_DELAY_FASTEST);
}

private SensorEventListener temperatureSensor = new SensorEventListener(){

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        // TODO Auto-generated method stub
        float temp = event.values[0];
        Log.i("sensor", "sensor temp = " + temp);
    }
};

5 个答案:

答案 0 :(得分:7)

如果设备没有通过任何一个温度传感器暴露CPU温度(也就是说,要求使用TEMPERATUREAMBIENT_TEMPERATURE类型的传感器,则不会产生任何影响)能够以标准方式阅读它。当然,如果它没有广泛分发,那么就不会以非标准方式进行,这可能适合您的应用。

如果您知道要查看的位置,可以在/sys/devices/platform中读取设备文件。如果您将adb shellcd投放到该文件夹​​中,那么您find | grep temp可以很好地为您提供代表温度传感器的文件。

这些文件也不仅适用于CPU - 例如,可以通过阅读/sys/devices/platform/omap_i2c.1/i2c-1/1-0055/power_supply/bq27520-0/temp来访问Google Glass的电池温度传感器。

从这条路看,很清楚为什么你不应该这样做并期望它能够在所有设备上运行 - 文件的路径和格式因设备而异。然而,在紧要关头,这是一种快速而肮脏的方式来完成工作。

答案 1 :(得分:3)

http://repo.xposed.info/module/org.narcotek.cputemp

仔细阅读本文,我认为它可能会对您有所帮助。

我正在使用名为酷工具的应用;令人惊讶的是它有很多功能......然后我启用了自定义标签1并按照链接所说的内容进行操作。 我将路径更改为/sys/class/thermal/thermal_zone0/temp 并且有这个选项,我没有改变refer:(/d+)/d{3} 还有替换模式:1 $ 希望这有助于使用很酷的工具,如果你需要!

答案 2 :(得分:3)

从以下路径中读取文件以从不同设备获取cpu温度详细信息,其中一个路径将返回所需文件。

    "/sys/devices/system/cpu/cpu0/cpufreq/cpu_temp"             
    "/sys/devices/system/cpu/cpu0/cpufreq/FakeShmoo_cpu_temp"    
    "/sys/class/thermal/thermal_zone1/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_zone0/temp"                      
    "/sys/devices/virtual/thermal/thermal_zone0/temp"            
    "/sys/class/hwmon/hwmon0/device/temp1_input"                 
    "/sys/devices/virtual/thermal/thermal_zone1/temp"            
    "/sys/devices/platform/s5p-tmu/curr_temp"    

答案 3 :(得分:0)

如果是电池温度和CPU温度,即使存在温度传感器。

大多数手机仅包含不推荐使用的CPU温度测量传感器Sensor.TYPE_TEMPERATURE

您应该使用传感器.TYPE_AMBIENT_TEMPERATURE,我认为很多手机都没有。

有关详细信息,请参阅此

http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_AMBIENT_TEMPERATURE

答案 4 :(得分:0)

以下是2019年12月在生产中用于查找CPU温度的当前路径集。有许多不同的途径,因为不同的OEM将温度放置在不同的地方。

除了上面列出的位置之外,还使用了这三个位置:

/sys/htc/cpu_temp
/sys/devices/platform/tegra-i2c.3/i2c-4/4-004c/ext_temperature
/sys/devices/platform/tegra-tsensor/tsensor_temperature

先前已列为答案的答案仍然成立:

/sys/devices/system/cpu/cpu0/cpufreq/cpu_temp
/sys/devices/system/cpu/cpu0/cpufreq/FakeShmoo_cpu_temp
/sys/class/thermal/thermal_zone1/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_zone0/temp
/sys/devices/virtual/thermal/thermal_zone0/temp
/sys/class/hwmon/hwmon0/device/temp1_input
/sys/devices/virtual/thermal/thermal_zone1/temp
/sys/devices/platform/s5p-tmu/curr_temp