安卓上的温度传感器

7
 public class MainActivity extends Activity implements SensorEventListener {
    private TextView temperaturelabel;
    private SensorManager sensormanager;
    private Sensor temperature;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    temperaturelabel = (TextView) findViewById(R.id.text);

    sensormanager = (SensorManager)getSystemService(SENSOR_SERVICE);

    temperature= sensormanager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);

   temperaturelabel.setText(""+temperature.getPower());
 }

 protected void onResume() {
     super.onResume();
     sensormanager.registerListener(this, temperature, SensorManager.SENSOR_DELAY_FASTEST);
 }

 protected void onPause() {                 
     super.onPause();
     sensormanager.unregisterListener(this);
 }

 public void onAccuracyChanged(Sensor sensor, int accuracy) {}

 public void onSensorChanged(SensorEvent event) {   
        if (event.sensor.getType() != Sensor.TYPE_AMBIENT_TEMPERATURE) return;

        temperaturelabel.setText(""+temperature.getPower());
    }
 }

我想从设备中获取温度。

我写了这段代码,并在HTC One X上尝试过,但它没有起作用。


你能发布输出或错误吗? - prayagupa
没有任何操作。没有错误。没有通知。没有结果。 - Furkan
HTC One X 是否有温度传感器? - nkr
我从Google Play下载并安装了温度程序,它可以正常运行。 - Furkan
1
大多数这些程序通过将您的当前位置发送到服务器来从互联网获取温度。 - nkr
好的,请稍等,当网络连接断开时我会再试一次。 - Furkan
2个回答

7
根据HTC One X的规格说明,该设备似乎没有温度传感器。
请查看其官方规格说明

2
在安卓市场上有一个叫做“Andro Sensor”的应用程序,它可以为您的设备提供可用和不可用传感器的信息。试试看吧。 - AndroidCrazy

2

目前,只有少数设备具有温度传感器(例如三星S4)。

您应该始终测试传感器是否可用,即, {

temperatureSensor = sensormanager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE)
if (temperatureSensor != null) {
    /* register listener and do other magic... */
}

你可以在HTC上找到系统中的其他热敏电阻器,并读取sysfs路径,其中其值被公开,例如电池或压力传感器中的热敏电阻器(如果该手机有)。这种方法的缺点是这些都是原始热敏电阻器值-有时您必须知道如何将它们转换为摄氏度,并且更糟糕的是,它们没有补偿(与API中的温度相比)-因此,例如,如果手机运行某些计算并且处理器会使手机发热,那么该值可以轻松高于环境温度10度,因此并不真正有用...

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