我正在为我的项目开发一个 android 应用程序,我需要找到室温作为其中的一部分。我正在使用 Droid 2 A955 模型进行测试。
我的问题是:
我的 Android 手机需要哪些传感器才能执行此温度感应任务?
环境光传感器(在 Droid 2 中可用)可以帮助完成这项任务吗?
是否有任何 Android api 可以在我的 android 代码中以编程方式查找/感知室温?
在此先感谢您的帮助。
我正在为我的项目开发一个 android 应用程序,我需要找到室温作为其中的一部分。我正在使用 Droid 2 A955 模型进行测试。
我的问题是:
我的 Android 手机需要哪些传感器才能执行此温度感应任务?
环境光传感器(在 Droid 2 中可用)可以帮助完成这项任务吗?
是否有任何 Android api 可以在我的 android 代码中以编程方式查找/感知室温?
在此先感谢您的帮助。
一口气回答您的所有三个问题,不,我不这么认为。安卓设备中可以有温度传感器,但它感知的是电池的温度,而不是外界的温度。它不会为此目的提供准确的衡量标准。
我不确定环境光传感器对温度有什么帮助,它可能非常明亮,但它可能在空调房间里。
最后:有很多温度应用的例子,但同样,大多数都与电池有关。
编辑: 官方文档说:
Device implementations MAY but SHOULD NOT include a thermometer (i.e. temperature sensor.) If a device implementation does include a
thermometer, it MUST measure the temperature of the device CPU. It MUST NOT measure any other temperature. (Note that this sensor type is
deprecated in the Android 2.3 APIs.)
更新:
从 API 级别 14(即 Android 4.0)开始,添加了对测量环境温度的支持(通过TYPE_AMBIENT_TEMPERATURE
)。[Android 文档参考]
但是,这仅适用于带有环境温度传感器的设备。
您需要查看传感器参考文档。不过,我认为大多数手持设备上都没有可访问的温度传感器。
查看文档中的Sensor 类。
您需要按照以下方式做一些事情:
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) {
}
}
这应该使您可以访问它自己的活动中的温度传感器。
玩这个,看看你能找到什么。该文档为其他类型的传感器提供了很好的示例,温度传感器应该比大多数提供的传感器更简单。
希望这可以帮助!
您可以使用来自 Kickstarter 的 iCelsius Wireless。它有一个 API。使用智能手机的内部传感器无法准确测量温度。它总是从几度到高。
这听起来很有趣:
http://developer.android.com/reference/android/hardware/Sensor.html#TYPE_AMBIENT_TEMPERATURE
来自 API >= 13
试试这个:
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];
}
}
};
有一种古老的方法可以让手机和“好”温度计在室温下稳定(几个小时)并同时读取两者。
然后把它放在外面一个凉爽的车库里,大约 35F 让它稳定下来。然后祈祷线性。
经验总是好的。我对在空房子里测量恒温很感兴趣,并注意温度下降(或上升!!)
布拉德肖在秃鹰湾