Translate

суббота, 28 июля 2012 г.

Использование датчиков внешней среды (освещенности, температуры, влажности воздуха, давления) при программировании на android


  Android предоставляет методы, с помощью которых можно узнать различные свойства окружающей среды за счет датчиков, встроенных в устройство. Так, вы можете узнать:
-температуру окружающей среды
-освещенность
-давление
-относительную влажность воздуха
-температуру устройства(к сожалению, реализация этого датчика сильно отличается по точности у разных устройств, поэтому используйте его только на свой страх и риск)
Датчик, который вы собираетесь использовать в коде, обязательно должен поддерживаться аппаратно. К сожалению, за исключением датчика освещенности, достаточно наивно рассчитывать на обязательное присутствие используемого вами датчика на конкретном устройстве пользователя. Поэтому очень важно правильно обрабатывать исключительные ситуации.

  Это перевод этой статьи


В отличие от акселерометра, вышеперечисленные датчики возвращают всего одно значение параметра внешней среды — например, температуру в градусах Цельсия или давление в гектопаскалях (это примерно 1/1000 часть атмосферы).
Датчики параметров внешней среды в Android:
Sensor Sensor event data Units of measure Data description
TYPE_AMBIENT_TEMPERATURE event.values[0] °C
Температура окр. среды
TYPE_LIGHT event.values[0]
люксы
Освещенность
TYPE_PRESSURE event.values[0] hPa (= mbar)
Атмосферное давление
TYPE_RELATIVE_HUMIDITY event.values[0] %
Относительная влажность воздуха
TYPE_TEMPERATURE event.values[0] °C
Температура устройста



Использование датчиков температуры, освещенности и давления


Чтобы получить данные о состоянии окружающей среды, сначала нужно создать объект класса SensorManager, с помощью которого можно получит экземпляр класса конкретного датчика. Потом нужно зарегестировать listener в onResume() и начать регистрацию данных в onSensorChanged(). Пример:

public class SensorActivity extends Activity implements SensorEventListener {
  private SensorManager mSensorManager;
  private Sensor mPressure;

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

    // Берем эксемпляр класса SensorManager, и получаем из него экзепляр класса датчика давления
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
  }

  @Override
  public final void onAccuracyChanged(Sensor sensor, int accuracy) {
    // Если точность датчика изменилась
  }

  @Override
  public final void onSensorChanged(SensorEvent event) {
    float millibars_of_pressure = event.values[0];
    // Сделать что-то с полученными данными()
  }

  @Override
  protected void onResume() {
    // Регистрируем listener
    super.onResume();
    mSensorManager.registerListener(this, mPressure, SensorManager.SENSOR_DELAY_NORMAL);
  }

  @Override
  protected void onPause() {
    // Приостановить считывание данных, чтобы датчик не использовал заряд батареи
    super.onPause();
    mSensorManager.unregisterListener(this);
  }
}

Использование датчика влажности воздуха


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

Точка росы

Точка росы — такая температура воздуха, при которой водяной пар становится насыщеным и конденсирует в воду. Она рассчитывается по формуле:
[ln(RH/100%) + m·t/(Tn+t) ] * Tn ·
 ------------------------------------
 m - [ln(RH/100%) + m·t/(Tn+t)]
Где:
  • t = температура воздуха, C
  • RH = относительная влажность воздуха (%)
  • m = 17.62
  • Tn = 243.12

Абсолютная влажность воздуха

Абсолютная влажность воздуха — масса водяного пара в заданном объеме воздуха измеряется в grams/meter3. Формула для расчета:
[(RH/100%) · A · exp(m·t/(Tn+t) ]* 216.7
------------------------------------
273.15 + t
Где:
  • dv = абсолютная влажность воздуха в grams/meter3
  • t = температура, C
  • RH = относительная влажность воздуха (%)
  • m = 17.62
  • Tn = 243.12 C
  • A = 6.112 hPa

Комментариев нет:

Отправить комментарий

Related Posts Plugin for WordPress, Blogger...