Android1.0でのセンサーの使い方

バージョン1.0の場合

初めてのAndroid

初めてのAndroid

はじめてのAndroidを参考にセンサーの使い方を調べています。
以下のblog記事によると、Android1.0/1.1とAndroid1.5でAPIが異なるそうです。

センサー(Sensor)を使用するには - 逆引きAndroid入門

今回は、はじめてのAndroidで紹介している1.0の方で。すでにバージョン2.0が公開されているご時世ですが、、、、^^;

サンプルは以下のURLから取得できます。
http://www.oreilly.co.jp/books/9784873114095/

package org.example.sensortest;

import android.app.Activity;
import android.hardware.SensorListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.widget.TextView;

public class SensorTest extends Activity implements SensorListener {
private SensorManager mgr;
private TextView output;

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

// ...
mgr = (SensorManager) getSystemService(SENSOR_SERVICE);
output = (TextView) findViewById(R.id.output);
}


@Override
protected void onResume() {
super.onResume();

int sensors = SensorManager.SENSOR_ALL;
mgr.registerListener(this, sensors);

}

@Override
protected void onPause() {
super.onPause();
}

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


public void onSensorChanged(int sensor, float[] values) {

StringBuilder builder = new StringBuilder();
builder.append("Sensor number: ");
builder.append(sensor);
builder.append("\nValues:\n");

for (int i = 0; i < values.length; i++) {
// ...
builder.append("[");
builder.append(values[i]);
builder.append("] = ");
builder.append("\n");
}
output.setText(builder);
}
}

このサンプルで利用されているSensorListenerインタフェースは、バージョン1.5以上では非推奨になっています。
このサンプルを見る限りでは、別タスクで動いているSensorManagerから指定したリスナに対して、センサーの値を送ってもらう形式になっているようです。
SensorManagerの動き自体は、1.5でも変わらないんじゃないかと予想しています。
中の動作については後日調査したいと思います。

SensorManagerクラス

1500行くらい。読むのはそれほど大変じゃなさそう。
今週の日曜日はActivityとIntentの調査に宛てるとして、来週あたりに調査しようと思います。