libro
www.tuyano.com
Google androidプログラミング入門

ハードウェア・アクセス (3/7)

作成:2010-06-01 17:38
更新:2010-06-01 17:38

■傾きのセンサーを利用する

では、基本的な流れがわかったところで、他のセンサーも利用してみましょう。今度は、「傾き」を計測するセンサーです。つまり、携帯がどのぐらい傾いているかを調べるものですね。

下に、SampleAppのソースコードを掲載しておきます。基本的な流れは、先ほどとほとんど同じです。違っているのはわずかに2箇所だけ。(★の部分です)

1.TYPE_ORIENTATIONのセンサーを取得する
List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_ORIENTATION);
まずは、onCreateSensorを取得し、イベントを登録する部分です。ここでは、取得するセンサーの種類に「Sensor.TYPE_ORIENTATION」を指定しています。これで、傾きセンサーのSensorが取得されます。

2.発生したイベントのチェック
if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) {……}
もう1箇所は、イベントの処理をするonSensorChangedメソッドです。ここで、発生したイベントの種類をチェックするのに、event.sensor.getTypeの値がSensor.TYPE_ORIENTATIONかどうかを確認しています。これで、傾きセンサーのイベントのときに処理が行われるようになります。

それ以外の部分は、ほぼ先ほどと同じですね。センサーの基本的な使い方がわかってしまえば、後は「どのセンサーだろうと使い方はまったく同じ」なのです。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package jp.tuyano;

import java.util.List;

import android.app.Activity;
import android.hardware.*;
import android.os.Bundle;
import android.widget.TextView;

public class SampleApp extends Activity implements SensorEventListener {
	private SensorManager manager;
	private TextView text1;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		text1 = (TextView)this.findViewById(R.id.text);
		manager = (SensorManager)getSystemService(SENSOR_SERVICE);
		List<Sensor> sensors = manager.getSensorList(Sensor.TYPE_ORIENTATION); //★
		if (sensors.size() > 0) {
			Sensor sensor = sensors.get(0);
			manager.registerListener(this, sensor,
					SensorManager.SENSOR_DELAY_FASTEST);
		}
	}

	@Override
	public void onAccuracyChanged(Sensor arg0, int arg1) {}

	@Override
	public void onSensorChanged(SensorEvent event) {
		String result = "";
		if (event.sensor.getType() == Sensor.TYPE_ORIENTATION) { //★
			result = "Z: " + String.valueOf(event.values[0]) + "\n";
			result += "X: " + String.valueOf(event.values[1]) + "\n";
			result += "Y: " + String.valueOf(event.values[2]);
		}
		text1.setText(result);
	}

}

※関連コンテンツ

「Google androidプログラミング入門」に戻る