C/C++プログラマの管理者が, Androidプログラムにチャレンジ. AndroidプログラミングのTipsをメモっていく予定です.

照度(明るさ)センサーは, 周囲の明るさを測定するセンサーである.
Android端末の照度センサーでは, 以下のようにセンサーから明るさ[Lux]を取得できる.



照度センサー値を取得する.

  • Sensor06.java
    • センサーイベントを取得するために, SensorEventListenerインタフェースを実装する.
    • onCreateメソッド
      • getSystemServiceメソッドで, SENSOR_SERVICEを指定してSensorManagerのインスタンスを取得する.
    • onStopメソッド
      • SensorManager#unregisterListenerメソッドでリスナーの登録を解除する.
    • onResumeメソッド
      • SensorManager#getSensorListメソッドで, TYPE_LIGHTを指定してセンサーのインスタンスの一覧を取得する.
      • Sendor#getメソッドで, センサーのインスタンスを取得し, SensorManager#registerListenerメソッドでリスナーを登録する.
    • SensorEventListener#onSensorChangedメソッド
      • 照度センサーの場合にSensorEvent.values[0]の値を読み出す.
package com.moonlight_aska.android.sensor06;

import java.util.List;
import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class Sensor06 extends Activity implements SensorEventListener {
  private SensorManager manager;
  private TextView values;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    values = (TextView)findViewById(R.id.value_id);
    manager = (SensorManager)getSystemService(SENSOR_SERVICE);
  }

  @Override
  protected void onStop() {
    // TODO Auto-generated method stub
    super.onStop();
    // Listenerの登録解除
    manager.unregisterListener(this);
  }

  @Override
  protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    // Listenerの登録
    List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_LIGHT);
    if(sensors.size() > 0) {
      Sensor s = sensors.get(0);
      manager.registerListener(this, s, SensorManager.SENSOR_DELAY_UI);
    }
  }

  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // TODO Auto-generated method stub
  }

  @Override
  public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    String str = "";
    if(event.sensor.getType() == Sensor.TYPE_LIGHT) {
      str = "照度:" + event.values[0];
      values.setText(str);
    }
  }
}
  • 動作例
端末:SHARP SH-03C / Android 2.2
    • 部屋の中
    • 照明機器の近く

  • 明るさの目安
Androidで定義されている明るさの目安は以下の通りである.
定義明るさ
SensorManager.LIGHT_SUNLIGHT_MAX120000.0
SensorManager.LIGHT_SUNLIGHT110000.0
SensorManager.LIGHT_SHADE20000.0
SensorManager.LIGHT_OVERCAST10000.0
SensorManager.LIGHT_SUNRISE400.0
SensorManager.LIGHT_CLOUDY100.0
SensorManager.LIGHT_FULLMOON0.25
SensorManager.LIGHT_NO_MOON0.0010



コメントをかく


ユーザーIDでかく場合はこちら
「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu


逆引き(基礎編)

画面表示/操作(49)

フラグメント(1)

逆引き(応用編)

AD



管理人のみ編集できます