最終更新:
moonlight_aska 2011年10月30日(日) 18:36:07履歴
近傍センサーは, 物が近づいたときにセンサーからの距離を測定するセンサーである.
Android端末の近傍センサーでは, 以下のようにセンサーからの距離[cm]を取得できる.

注) 端末によっては, 距離ではなく, 近い/遠いだけを測定するものもある.
SHARP SH-03Cでは, 近い(0.9)/遠い(7.0)と測定される.

Android端末の近傍センサーでは, 以下のようにセンサーからの距離[cm]を取得できる.

注) 端末によっては, 距離ではなく, 近い/遠いだけを測定するものもある.
- Sensor05.java
- センサーイベントを取得するために, SensorEventListenerインタフェースを実装する.
- onCreateメソッド
- getSystemServiceメソッドで, SENSOR_SERVICEを指定してSensorManagerのインスタンスを取得する.
- onStopメソッド
- SensorManager#unregisterListenerメソッドでリスナーの登録を解除する.
- onResumeメソッド
- SensorManager#getSensorListメソッドで, TYPE_PROXIMITYを指定してセンサーのインスタンスの一覧を取得する.
- Sensor#getメソッドで, センサーのインスタンスを取得し, SensorManager#registerListenerメソッドでリスナーを登録する.
- SensorEventListener#onSensorChangedメソッド
- 近傍センサーの場合にSensorEvent.values[0]の値を読み出す.
package com.moonlight_aska.android.sensor05;
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 Sensor05 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_PROXIMITY);
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_PROXIMITY) {
str = "距離:" + event.values[0];
values.setText(str);
}
}
}
- 動作例
SHARP SH-03Cでは, 近い(0.9)/遠い(7.0)と測定される.
- 近い場合

- 遠い場合

コメントをかく