Android感應器—Environment Sensor

來源:互聯網
上載者:User

本文譯自:http://developer.android.com/guide/topics/sensors/sensors_environment.html#sensors-using-humid

Android平台提供了四種監測各種環境屬性的感應器。使用這些感應器能夠監視相對Android裝置附近範圍內的空氣濕度、光照度、大氣壓力,以及溫度等。所有這四種環境感應器都是基於硬體的,並且只有在製造商把它們內建到裝置中時才有效。大多數製造商都使用光線感應器來控制螢幕的亮度,其他的環境感應器不總是在所有的裝置上都是有效。因為這種原因,在運行時視圖擷取環境資料之前,確認相應的環境感應器是否存在,是特別重要的。

跟大多數的用每個SensorEvent參數來返回感應器值的多維陣列的動作感應器和定位感應器不一樣,環境感應器用每個資料事件來返回一個單一感應器值。例如,以°C為單位的溫度、以hPa為單位的氣壓。它也不像動作感應器和定位感應器那樣,經常需要高通或低通濾波,典型的環境感應器不需要任何的資料過濾或資料處理。表1提供了Android平台所支援的環境感應器的概要介紹:

表1.Android平台所支援的環境感應器

感應器

感應器事件數目據

測量單位

資料介紹

TYPE_AMBIENT_TEMPERATURE

event.values[0]

°C

周圍空氣溫度

TYPE_LIGHT

event.values[0]

lx

光照度

TYPE_PRESSURE

event.values[0]

hPa or mbar

周圍空氣壓力

TYPE_RELATIVE_HUMIDITY

event.values[0]

%

周圍的相對濕度

TYPE_TEMPERATURE

event.values[0]

°C

裝置的溫度.1

 .1該實現隨著裝置的不同而不同,在Android4.0(API Level 14)中被棄用。

使用光線、壓力和溫度感應器

通常,從光線、壓力、和溫度感應器中擷取的未經處理資料不需要校正、過濾或修正,這使得他們成為最容易使用的感應器。首先建立一個SensorManager類的執行個體來擷取資料,你能使用的SensorManager類的執行個體來擷取一個物理感應器執行個體。然後在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);

    // Get an instance of the sensor service, and use that
to get an instance of

   // a particular sensor.

   mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);

   mPressure = mSensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);

 }

  @Override

 public final void onAccuracyChanged(Sensor sensor, int accuracy) {

   // Do something here if sensor accuracy changes.

 }

 @Override

 public final void onSensorChanged(SensorEvent event) {

   float millibars_of_pressure = event.values[0];

   // Do something with this sensor data.

 }

  @Override

 protected void onResume() {

   // Register a listener for the sensor.

   super.onResume();

   mSensorManager.registerListener(this, mPressure, SensorManager.SENSOR_DELAY_NORMAL);

 }

 @Override

 protected void onPause() {

   // Be sure to unregister the sensor when the activity pauses.

   super.onPause();

   mSensorManager.unregisterListener(this);

 }

}

你必須始包含onAccuracyChanged()和onSensorChanged()回調方法的實現。還有始終要確保在Activity被掛起時登出感應器,這樣會防止持續的感知資料並降低電池的消耗。

使用濕度感應器

與使用光線、壓力和溫度感應器的方法相同,通過使用濕度感應器,你能夠擷取原始的相對濕度資料。但是,如果一個裝置上同時濕度感應器(TYPE_RELATIVE_HUMIDITY)和溫度感應器(TYPE_AMBIENT_TEMPERATURE),那麼你就能夠使用這兩個資料流來計算露點和絕對濕度。

露點

露點是給定體積的氣體在恒定的大氣壓力下,水蒸汽由氣體轉換成水的溫度,下列代碼顯示了如何計算露點的公式:

                       ln(RH/100%) + m·t/(Tn+t)
td(t,RH) = Tn · ------------------------------------
                    m - [ln(RH/100%) + m·t/(Tn+t)]

其中

1. td =露點溫度,單位:攝氏度;

2. t =實際溫度,單位:攝氏度;

3. RH=實際的相對濕度,百分比;

4. m=17.62

5. Tn=243.12

絕對濕度

絕對濕度是給定體積的空氣中水的品質。絕對濕度的測量單位是:克/立方米(grams/meter3),以下是計算絕對濕度的公式:

                          (RH/100%) · A · exp(m·t/(Tn+t)
dv(t,RH) = 216.7 · ------------------------------------
                                    273.15 + t

其中:

1. dv =絕對濕度,單位:克/立方米

2. t = 實際溫度,單位:攝氏度

3. RH = 實際的相對濕度,百分比

4. m = 17.62

5. Tn= 243.12攝氏度

6. A = 6.112hPa

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.