android ではセンサー入力が一般化されています。G1では、主に、角度(方位)、加速度センサーの入力です。
Javaからの使い方ですが、implements SensorListener をつけたクラスに、
public void onSensorChanged(int sensor, float[] values) {
}
こういうコールバックを準備しておきます。
あとは、
SensorManager mSensorManager;
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
とサービスを取得して、アプリが動作する際には、
mSensorManager.registerListener( _view, // SensorListener をつけたクラス
SensorManager.SENSOR_ALL, // センサーの種類に応じて
SensorManager.SENSOR_DELAY_GAME); // 目的に応じて
を呼びます。
必要ないときは、
mSensorManager.unregisterListener( _view );
でリリースしておくようです。
G1 で動いているセンサーの値は、
SENSOR_ORIENTATION
SENSOR_ACCELEROMETER
SENSOR_MAGNETIC_FIELD
の3種類のようです。android としては、これ以外にも、温度やライトのセンサーなども定義されています。
ついでに、定義されている定数がいろいろ。GRAVITY_DEATH_STAR_I って何?
float GRAVITY_DEATH_STAR_I 3.5303614E-7
float GRAVITY_EARTH 9.80665
float GRAVITY_JUPITER 23.12
float GRAVITY_MARS 3.71
float GRAVITY_MERCURY 3.7
float GRAVITY_MOON 1.6
float GRAVITY_NEPTUNE 11.0
float GRAVITY_PLUTO 0.6
float GRAVITY_SATURN 8.96
float GRAVITY_SUN 275.0
float GRAVITY_THE_ISLAND 4.815162
float GRAVITY_URANUS 8.69
float GRAVITY_VENUS 8.87
float LIGHT_CLOUDY 100.0
float LIGHT_FULLMOON 0.25
float LIGHT_NO_MOON 0.0010
float LIGHT_OVERCAST 10000.0
float LIGHT_SHADE 20000.0
float LIGHT_SUNLIGHT 110000.0
float LIGHT_SUNLIGHT_MAX 120000.0
float LIGHT_SUNRISE 400.0
float MAGNETIC_FIELD_EARTH_MAX 60.0
float MAGNETIC_FIELD_EARTH_MIN 30.0
あと、このセンサーは何でしょうか。
public static final int SENSOR_TRICORDER
A constant describing a Tricorder When this sensor is available and enabled, the device can be used as a fully functional Tricorder. All values are returned in SI units.
0 件のコメント:
コメントを投稿