我正在开发一款Android应用程序,需要在其中找到室温。我正在使用Droid 2 A955型号进行测试。
我的问题如下:
为了执行这个温度检测任务,我需要在我的Android手机上有哪些传感器?
Ambient Light Sensor(Droid 2可用)能帮助完成此任务吗?
是否有任何Android API可以在我的Android代码中以编程方式查找/感知室温?
非常感谢您的帮助。
我正在开发一款Android应用程序,需要在其中找到室温。我正在使用Droid 2 A955型号进行测试。
我的问题如下:
为了执行这个温度检测任务,我需要在我的Android手机上有哪些传感器?
Ambient Light Sensor(Droid 2可用)能帮助完成此任务吗?
是否有任何Android API可以在我的Android代码中以编程方式查找/感知室温?
非常感谢您的帮助。
我不确定环境光线传感器如何帮助测量温度,因为即使在阳光强烈的情况下,它也可能处于空调房间内。
最后,虽然有很多温度应用程序,但大多数与电池有关。
编辑:官方文档表示:
设备实现可以但不应包括温度计(即温度传感器)。如果设备实现确实包括温度计,则必须测量设备CPU的温度。它不得测量任何其他温度。(请注意,此传感器类型在Android 2.3 API中已弃用。)
更新:
API级别14(即Android 4.0)及以上,支持测量环境温度(通过TYPE_AMBIENT_TEMPERATURE
)。[Android doc reference]
但是,这仅适用于具有环境温度传感器的设备。
public class SensorActivity extends Activity, implements SensorEventListener {
private final SensorManager mSensorManager;
private final Sensor mTemp;
public SensorActivity() {
mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mtemp = mSensorManager.getDefaultSensor(Sensor.TYPE_TEMPERATURE);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, mTemp, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
}
}
试试这个:
private float temperature = 0;
onCreate
函数中: SensorManager mySensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
Sensor AmbientTemperatureSensor
= mySensorManager.getDefaultSensor(Sensor.TYPE_AMBIENT_TEMPERATURE);
if (AmbientTemperatureSensor != null) {
mySensorManager.registerListener(
AmbientTemperatureSensorListener,
AmbientTemperatureSensor,
SensorManager.SENSOR_DELAY_NORMAL);
}
还有下面的方法:
private final SensorEventListener AmbientTemperatureSensorListener
= new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_AMBIENT_TEMPERATURE) {
temperature = event.values[0];
}
}
};
有一个古老的方法,就是让手机和“好”的温度计在室温下稳定一段时间(几个小时),并读取两者的温度。
然后将它放在一个约35华氏度的寒冷车库里让其稳定。然后祈求线性。
经验法则总是很好的。我非常感兴趣测量空房间中的恒定温度,并观察温度下降(或上升!!)。
布拉德肖在巴扎兹湾