14

我正在为我的项目开发一个 android 应用程序,我需要找到室温作为其中的一部分。我正在使用 Droid 2 A955 模型进行测试。

我的问题是:

  1. 我的 Android 手机需要哪些传感器才能执行此温度感应任务?

  2. 环境光传感器(在 Droid 2 中可用)可以帮助完成这项任务吗?

  3. 是否有任何 Android api 可以在我的 android 代码中以编程方式查找/感知室温?

在此先感谢您的帮助。

4

9 回答 9

12

一口气回答您的所有三个问题,不,我不这么认为。安卓设备中可以有温度传感器,但它感知的是电池的温度,而不是外界的温度。它不会为此目的提供准确的衡量标准。

我不确定环境光传感器对温度有什么帮助,它可能非常明亮,但它可能在空调房间里。

最后:有很多温度应用的例子,但同样,大多数都与电池有关。

编辑: 官方文档说

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 文档参考]

但是,这仅适用于带有环境温度传感器的设备。

于 2011-08-08T16:50:07.743 回答
11

API 中似乎有一个新的传感器

这是针对环境温度的,但可能只有少数设备实现了此功能。

更新:似乎 Galaxy S4 是第一款集成环境温度传感器的手机

于 2012-07-24T10:29:22.720 回答
2

您需要查看传感器参考文档。不过,我认为大多数手持设备上都没有可访问的温度传感器。

于 2011-08-08T16:41:23.080 回答
2

查看文档中的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) {
 }
}

这应该使您可以访问它自己的活动中的温度传感器。

玩这个,看看你能找到什么。该文档为其他类型的传感器提供了很好的示例,温度传感器应该比大多数提供的传感器更简单。

希望这可以帮助!

于 2011-08-08T16:43:01.587 回答
1

您可以使用来自 Kickstarter 的 iCelsius Wireless。它有一个 API。使用智能手机的内部传感器无法准确测量温度。它总是从几度到高。

于 2013-04-24T09:06:16.947 回答
0

很久以前我也有同样的问题。我发现的是:

  • 检查官方网站以获取环境传感器
  • 环境传感器的这个 tuts:环境温度(室温)环境光...... Tutsplus。在我的手机上只有 Ambient Light 工作
  • 现在我知道只有三星 Galaxy S4 有环境温度。如果您在 gg playstore 上有 S4 搜索 Holo Ambient Temperature。
于 2013-08-15T10:09:46.140 回答
0

这听起来很有趣:

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

来自 API >= 13

于 2014-01-30T14:11:05.757 回答
0

试试这个:

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];
            }
        }

    };
于 2016-11-01T12:46:25.897 回答
0

有一种古老的方法可以让手机和“好”温度计在室温下稳定(几个小时)并同时读取两者。

然后把它放在外面一个凉爽的车库里,大约 35F 让它稳定下来。然后祈祷线性。

经验总是好的。我对在空房子里测量恒温很感兴趣,并注意温度下降(或上升!!)

布拉德肖在秃鹰湾

于 2016-12-23T14:31:50.213 回答