Есть ли Android API, чтобы программно находить / измерять комнатную температуру в коде Android? - PullRequest
14 голосов
/ 08 августа 2011

Я занимаюсь разработкой приложения для Android для своего проекта, мне нужно найти комнатную температуру как часть этого. Я использую модель Droid 2 A955 для тестирования.

Мои вопросы:

  1. Какие датчики должны быть доступны в моем телефоне Android для выполнения это задача измерения температуры?

  2. Может ли датчик внешней освещенности (доступен в Droid 2) помочь в этом? Задача

  3. Есть ли Android API для определения / определения температуры в помещении программно в моем коде Android?

Заранее спасибо за помощь.

Ответы [ 9 ]

12 голосов
/ 08 августа 2011

Чтобы ответить на все три ваших вопроса одним махом, нет, я не верю в это. В устройствах 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]

Это, однако, будет работать только на устройствах с датчиком температуры окружающей среды.

11 голосов
/ 24 июля 2012

Похоже, что новый датчик в API .

Этот датчик предназначен для температуры окружающей среды, но, вероятно, есть только несколько устройств с этим реализованным.

ОБНОВЛЕНИЕ: кажется, что Galaxy S4 - первый телефон с интегрированным датчиком температуры окружающей среды

2 голосов
/ 08 августа 2011

Взгляните на Класс датчика в документации.

Вам нужно сделать что-то вроде this :

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) {
 }
}

Это должно дать вам доступ к датчикам температуры в его собственном действии.

Поиграйте с этим и посмотрите, что вы можете найти.В документации есть отличные примеры для других типов датчиков, датчик температуры должен быть даже проще, чем большинство из предоставленных.

Надеюсь, это поможет!

2 голосов
/ 08 августа 2011

Вы можете проверить Справочные документы по датчикам .Впрочем, я не думаю, что на большинстве карманных компьютеров есть доступные датчики температуры.

1 голос
/ 24 апреля 2013

Вы можете использовать iCelsius Wireless с Kickstarter.У него есть API.Невозможно точно измерить температуру, используя внутренний датчик от смартфона.Это всегда будет мало градусов к высокой.

0 голосов
/ 23 декабря 2016

Существует старый метод, позволяющий телефону и «хорошему» термометру стабилизироваться при комнатной температуре (несколько часов) и прочитать оба.

Затем положите его на улицу в хорошем зимнем гараже при температуре около 35F, чтобы он стабилизировался. Тогда молитесь за линейность.

Эмпирически всегда приятно. Я очень заинтересован в измерении постоянной температуры в пустом доме и слежу за падением (или повышением) температуры

Брэдшоу в канюке Бухты

0 голосов
/ 01 ноября 2016

Попробуйте это:

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

    };
0 голосов
/ 30 января 2014
0 голосов
/ 15 августа 2013

У меня такой же вопрос давно.И вот что я нашел:

  • проверка это официальный сайт для датчика окружающей среды
  • это относится к датчику окружающей среды: температура окружающей среды (комнатная температура), окружающий свет ... Tutsplus .на моем телефоне только Ambient Light работают
  • теперь, как я знаю, только Samsung Galaxy S4 имеют температуру окружающей среды.если у вас есть S4, найдите Holo Ambient Temperature в gg playstore.
...